本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
创建密钥
AWS Secrets Manager 使您能够最大程度地存储密钥。密钥包含最少元数据和单个加密的密钥值。Secrets Manager 存储密钥并自动使用 AWSCURRENT
对其进行标记。
创建密钥
请按照以下选项卡之一中的步骤进行操作:
- Using the Secrets Manager console
-
最小权限 要在控制台中创建密钥,您必须具有以下权限:
-
由 SecretsManagerReadWrite AWS 托管策略授予的权限。
-
仅当您为密钥启用轮换时,IAMFullAccess AWS 托管策略 – 授予的权限才是必需的。
-
kms:CreateKey
– 只有在您希望 Secrets Manager 创建自定义 AWS KMS 客户主密钥 (CMK) 时才是必需的。 -
kms:Encrypt
– 仅当您使用自定义 AWS KMS 密钥加密您的密钥(而不是使用您账户的默认 Secrets Manager CMK)时是必需的。您不需要具有该权限,即可使用 Secrets Manager 的账户默认 AWS 托管 CMK。 -
kms:Decrypt
– 仅当您使用自定义 AWS KMS 密钥加密您的密钥(而不是使用您账户的默认 Secrets Manager CMK)时是必需的。您不需要具有该权限,即可使用 Secrets Manager 的账户默认 AWS 托管 CMK。 -
kms:GenerateDataKey
– 仅当您使用自定义 AWS KMS 密钥加密您的密钥(而不是使用您账户的默认 Secrets Manager CMK)时是必需的。您不需要具有该权限,即可使用 Secrets Manager 的账户默认 AWS 托管 CMK。
-
登录到 AWS Secrets Manager 控制台 (https://console.amazonaws.cn/secretsmanager/
)。 -
选择存储新密钥。
-
在选择密钥类型部分中,选择以下选项之一以指定要创建的密钥类型。然后提供所需信息。
-
对于 Secret name (密钥名称),键入可选的路径和名称,例如
production/MyAwesomeAppSecret
或development/TestSecret
。 请注意,通过使用斜杠字符,您可以按层次结构组织密钥,例如按部署环境进行分组,您可能会发现这对大规模组织和管理密钥非常有用。您可以选择添加描述以帮助记住该密钥的用途。密钥名称应仅包含 ASCII 字母、数字或以下任意字符:/_+=.@-
注意 如果向 Systems Manager Parameter Store 中添加密钥,则必须向目录结构添加正斜杠。有关更多信息,请参阅有关Systems Manager将参数组织成层次结构的 AWS 文档。
-
(可选)在 Tags (标签) 部分中,您可以向密钥添加一个或多个标签。标签包含您定义的键和值。标签有助于管理您的 AWS 资源。您可以创建标签以将资源与组织的结构相关联,例如,键=“Department”,值=“Accounting”。这有助于成本分配和跟踪。您可以分配标签以按使用资源的应用程序对资源进行分组(键=“AppName”,值=“HRDatabase”)。您几乎可以为任何用途创建标签。每个资源(如密钥)均可附加多个标签。有关更多信息,请参阅 AnswersAWS 网站上的
AWS 标记策略。 重要 请不要将有关密钥的敏感信息存储在标签中。仅在加密保护信息的密钥的密钥值(
SecretString
或SecretBinary
字段)中存储敏感信息。 -
在填写 Name (名称)、Description (描述) 和任何 Tags (标签) 后,选择 Next (下一步)。
-
(可选) 此时,您可以为密钥配置轮换。由于您创建了不轮换的“基本”密码,因此,请将该选项保留为禁用自动轮换,然后选择下一步。
有关在新的或现有密钥上配置轮换的信息,请参阅轮换您的 AWS Secrets Manager 密钥。
-
检查您的设置,然后选择 Store secret (存储密钥) 以将输入的所有内容作为新密钥保存在 Secrets Manager 中。
-
- Amazon RDS
-
将这种类型的密钥用于支持的数据库服务之一(Secrets Manager 使用预配置的 Lambda 轮换函数为其提供全面的轮换支持)。您仅指定身份验证凭证,因为 Secrets Manager 查询数据库实例以确定其他参数。
-
键入用户名和密码以允许访问数据库。选择一个仅具有访问该密钥的客户所需的权限的用户。
-
选择要用于加密密钥中的受保护文本的 AWS KMS 加密密钥。如果您未选择任何密钥,Secrets Manager 将检查账户的默认密钥,并使用该密钥(如果存在)。如果不存在默认密钥,则 Secrets Manager 将自动为您创建一个。您也可以选择添加新密钥以创建专用于该密钥的自定义 CMK。要创建您自己的 AWS KMS CMK,您必须具有在您的账户中创建 CMKs 的权限。
-
从列表中选择数据库实例。Secrets Manager 通过查询所选实例来检索有关数据库的连接详细信息。
-
- Amazon Redshift
-
将这种类型的密钥用于 Amazon Redshift 集群。您仅指定身份验证凭证,因为 Secrets Manager 查询数据库实例以确定其他参数。
-
键入用户名和密码以允许访问数据库。
-
选择要用于加密密钥中的受保护文本的 AWS KMS 加密密钥。如果您未选择任何密钥,Secrets Manager 将检查账户的默认密钥,并使用该密钥(如果存在)。如果不存在默认密钥,则 Secrets Manager 将自动为您创建一个。您也可以选择添加新密钥以创建专用于该密钥的自定义 CMK。要创建您自己的 AWS KMS CMK,您必须具有在您的账户中创建 CMKs 的权限。
-
选择正确的数据库引擎。
-
键入数据库服务器 IP 地址、数据库名称和 TCP 端口号以指定连接详细信息。
-
- Other databases
-
Secrets Manager 支持其他类型的数据库,并将该密钥用于这些类型。不过,您必须提供有关数据库的其他信息。要轮换该密钥,您必须编写一个自定义 Lambda 轮换函数以解析密钥,并与服务交互以轮换密钥。
-
键入用户名和密码以允许访问数据库。
-
选择要用于加密密钥中的受保护文本的 AWS KMS 加密密钥。如果您未选择任何密钥,Secrets Manager 将检查账户的默认密钥,并使用该密钥(如果存在)。如果不存在默认密钥,则 Secrets Manager 将自动为您创建一个。您也可以选择添加新密钥以创建专用于该密钥的自定义 CMK。要创建您自己的 AWS KMS CMK,您必须具有在您的账户中创建 CMKs 的权限。
-
选择数据库引擎类型以运行数据库。
-
键入数据库服务器 IP 地址、数据库名称和 TCP 端口号以指定连接详细信息。
-
- Other type of secret
-
可以为 Secrets Manager 配置其他数据库或服务,并将该密钥用于这些数据库或服务。您必须提供您的密钥的结构和详细信息。要轮换该密钥,您必须编写一个自定义 Lambda 轮换函数以解析密钥,并与服务交互以代表您轮换密钥。
-
以 Key (键) 和 Value (值) 对的形式指定自定义密钥的详细信息。例如,您可以指定键 UserName,然后提供适当的用户名作为值。添加第二个名为 Password 的键,并将密码文本作为值。您也可以为
Database name
、Server address
、TCP port
等添加条目。您可以添加所需数量的对以存储所需的信息。或者,您也可以选择明文选项卡,并以任何格式输入密钥值。
-
选择要用于加密密钥中的受保护文本的 AWS KMS 加密密钥。如果您未选择任何密钥,Secrets Manager 将检查账户中的默认密钥,并使用该密钥(如果存在)。如果不存在默认密钥,则 Secrets Manager 将自动为您创建一个。您也可以选择添加新密钥以创建专用于该密钥的自定义 CMK。要创建您自己的 AWS KMS CMK,您必须具有在您的账户中创建 CMKs 的权限。
-
- Using the AWS CLI or AWS SDK operations
-
您可以使用以下命令在 Secrets Manager 中创建密钥:
-
API/开发工具包:
CreateSecret
-
AWS CLI:
create-secret
执行与基于控制台的密钥配置等效的操作的 AWS CLI 命令示例。该命令假定您将密钥放在名为
mycreds.json
的文件中,例如该示例 JSON 文本结构{"username":"anika","password":"aDM4N3*!8TT"}
。$
aws secretsmanager create-secret --name production/MyAwesomeAppSecret --secret-string file://mycreds.json
{ "SecretARN": "arn:aws-cn:secretsmanager:
region
:accountid
:secret:production/MyAwesomeAppSecret-AbCdEf
", "SecretName": "production/MyAwesomeAppSecret", "SecretVersionId": "EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE" }重要 您可以使用任何所需的
SecretString
格式创建密钥。 例如,您可以使用简单的 JSON 键/值对或{"username":"someuser", "password":"securepassword"}
。但是,如果您以后要为该密钥启用轮换,则必须使用用于该密钥的轮换函数所需的特定结构。有关用于密钥值的每个必需轮换函数的详细信息,请参阅中相关轮换函数下面的SecretString预期的 值可用于创建 Lambda 轮换函数的 AWS 模板 条目。Secrets Manager 不需要使用
ClientRequestToken
参数,因为您使用 AWS CLI,它会自动为您生成并提供一个参数。在使用账户的默认 Secrets Manager CMK 时,您不需要使用KmsKeyId
参数。在使用 Secrets Manager 控制台和SecretString
时,您无法使用SecretBinary
。Secrets Manager 保留SecretType
以供控制台使用。在工作环境中,您的客户使用的应用程序使用密钥以访问数据库,您可能仍需要为应用程序用于访问密钥的 IAM 用户或角色授予权限。您可以通过将基于资源的策略直接附加到密钥,然后在
Principal
元素中列出用户或角色,来完成此操作。或者,您可以将策略附加到在Resource
元素中指定密钥的用户或角色。 -