修改密钥 - AWS Secrets Manager
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

修改密钥

在创建密钥后,您可以修改密钥的某些元素。在控制台中,您可以编辑描述,编辑或附加新的基于资源的策略以修改密钥权限,更改用于加密和解密受保护密钥信息的 AWS KMS 客户主密钥 (CMK),以及编辑、添加或删除标签。

您还可以更改加密密钥信息的值。不过,我们建议您使用轮换功能更新包含凭证的密钥值。轮换功能不仅可以更新密钥,轮换功能还会修改受保护数据库或服务上的凭证,以使其与密钥中的凭证匹配。这会使这些密钥自动保持同步,以便在客户端请求密钥值时,它们始终检索一组正常工作的凭证。

本节包括介绍如何修改密钥的以下元素的过程和命令:

修改密钥中存储的加密密钥值

请按照以下选项卡之一中的步骤进行操作。

重要
  • 以这种方式更新密钥不会更改受保护服务器上的凭证。如果您希望将服务器上的凭证与密钥值中存储的凭证保持同步,我们建议您启用轮换。AWS Lambda 函数同时更改服务器上的凭证和密钥中的凭证以保持匹配,并测试更新的凭证是否正常工作。有关更多信息,请参阅 轮换您的 AWS Secrets Manager 密钥。)

  • 您可以使用所需的格式创建基本密钥, SecretString。例如,您可以使用简单的Json键值对。例如,{"username":"someuser", "password":"securepassword"}。不过,如果您以后要为该密钥启用轮换,您必须在该密钥中使用特定的结构。Secrets Manager 确定要用于该密钥的轮换函数所需的确切格式。有关每个旋转功能使用秘密值所需的详细信息,请参阅 预期SecretString值 相关旋转函数下的条目 其他数据库或服务的轮换型ASM密钥管理器密钥。

Using the Secrets Manager console

在更新密钥中的加密密钥值时,将会创建密钥的新版本。新版本将自动收到 AWSCURRENT 暂存标签。您仍然可以查询 AWSPREVIOUS 暂存标签以访问旧版本。在 CLI 中,使用 get-version-ids 命令或使用 API GETVERSIONIDS 将修改后的密钥与原始密钥进行比较。

这两个命令的输出显示一个 CreatedDate 字段,这是一个有效参数,因为 Secrets Manager 为修改的密钥创建了一个新版本。

注意

每次 AWSCURRENT 暂存标签从一个版本移动到另一个版本时,Secrets Manager 自动将 AWSPREVIOUS 暂存标签移动到以前标记了 AWSCURRENT 的版本。

  1. https://console.amazonaws.cn/secretsmanager/ 打开 Secrets Manager 控制台。

  2. 从密钥列表中,选择具有要修改的密钥值的密钥名称。

  3. 密钥值部分中,选择检索密钥值

  4. 在现在显示密钥值的情况下,选择Edit

  5. 根据需要,更新这些值,然后选择保存

Using the AWS CLI or AWS SDK operations

您可以使用以下命令更新在密钥中存储的加密密钥值。在更新密钥中的加密密钥值时,将会创建密钥的新版本。

重要

您可以使用以下所需格式更新基本密钥 SecretString。例如,您可以使用简单的Json键值对。例如,{"username":"someuser", "password":"securepassword"}。不过,如果您以后要为该密钥启用轮换,您必须使用用于该密钥的轮换函数所需的特定结构。有关每个旋转功能使用秘密值所需的详细信息,请参阅 预期SecretString值 相关旋转函数下的条目 其他数据库或服务的轮换型ASM密钥管理器密钥。.

注意

UpdateSecret 自动将 AWSCURRENT 暂存标签移动到新的密钥版本。

PutSecretValue 不会自动移动暂存标签。不过,如果该命令创建密钥的第一个版本,该命令将添加 AWSCURRENT。否则,该命令仅附加或移动您使用 VersionStages 参数显式请求的标签。

每次 AWSCURRENT 暂存标签从一个版本移动到另一个版本时,Secrets Manager 自动将 AWSPREVIOUS 暂存标签移动到 AWSCURRENT 版本并删除 AWSPREVIOUS 暂存标签。

以下示例 AWS CLI 命令更改密钥的密钥值。这会导致创建新版本。Secrets Manager 自动将 AWSCURRENT 暂存标签移动到新版本。此外,Secrets Manager 自动将 AWSPREVIOUS 暂存标签移动到具有 AWSCURRENT 暂存标签的旧版本。

$ aws secretsmanager update-secret --secret-id production/MyAwesomeAppSecret --secret-string '{"username":"anika","password":"a different password"}' { "SecretARN": "arn:aws-cn:secretsmanager:us-west-2:123456789012:secret:production/MyAwesomeAppSecret-AbCdEf", "SecretName": "production/MyAwesomeAppSecret", "VersionId": "EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE" }

输出中的 VersionId 包含密钥的新版本的唯一密钥版本 ID。您可以使用 ClientRequestToken 参数手动提供该值。如果未指定值,则开发工具包或 AWS CLI 为您生成一个随机 UUID 值。

修改密钥描述

请按照以下选项卡之一中的步骤进行操作。

Using the console
  1. https://console.amazonaws.cn/secretsmanager/ 打开 Secrets Manager 控制台。

  2. 从密钥列表中,选择要修改的密钥名称。

  3. 密钥详细信息部分中,选择操作,然后选择编辑描述

  4. 输入新描述或编辑现有文本,然后选择 Save (保存)

Using the AWS CLI or AWS SDK operations

您可以使用以下命令在 AWS Secrets Manager 中修改密钥的描述:

以下示例 AWS CLI 命令添加描述或将其替换为 --description 参数提供的值。

$ aws secretsmanager update-secret --secret-id production/MyAwesomeAppSecret --description 'This is the description I want to attach to the secret.' { "ARN": "arn:aws-cn:secretsmanager:region:accountid:secret:production/MyAwesomeAppSecret-AbCdEf", "Name": "production/MyAwesomeAppSecret", "VersionId": "EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE" }

要查看对密钥的更改,请使用命令 describe-secret

aws secretsmanager describe-secret --secret-id production/MyAwesomAppSecret { "ARN": "arn:aws-cn:secretsmanager:region:accountid:secret:production/MyAwesomeAppSecret-AbCdEf", "Name": "production/MyAwesomeAppSecret", "Description": "This is the description I want to attach to the secret", "LastChangedDate": 1579542853.77, "LastAccessedDate": 1579478400.0,

修改密钥使用的 AWS KMS 加密密钥

请按照以下选项卡之一中的步骤进行操作。

Using the Secrets Manager console
重要

如果更改密钥使用的加密密钥,您必须使用 UpdateSecretPutSecretValue 更新至少一次密钥值,然后再禁用或删除第一个 CMK。在更新密钥值时,将使用旧 CMK 解密密钥,并使用新 CMK 重新加密密钥。如果在该更新之前禁用或删除第一个 CMK,除非您可以重新启用 CMK,否则,Secrets Manager 无法解密密钥并丢失密钥内容。

  1. https://console.amazonaws.cn/secretsmanager/ 打开 Secrets Manager 控制台。

  2. 在密钥列表中,选择要修改的密钥名称。

  3. 密钥详细信息部分中,选择操作,然后选择编辑加密密钥

  4. 选择 AWS KMS 加密密钥以加密和解密更高版本的密钥。然后选择 Save (保存)

Using the AWS CLI or AWS SDK operations
重要

如果更改密钥使用的加密密钥,您必须使用 UpdateSecretPutSecretValue 更新至少一次密钥值,然后再禁用或删除第一个 CMK。在更新密钥值时,将使用旧 CMK 解密密钥,并使用新 CMK 重新加密密钥。如果在该更新之前禁用或删除第一个 CMK,除非您可以重新启用 CMK,否则,Secrets Manager 无法解密密钥并丢失密钥内容。

您可以使用以下命令修改密钥使用的 AWS KMS 加密密钥。您必须使用 Amazon 资源名称 (ARN) 指定 CMK。

以下示例 AWS CLI 命令添加或替换从现在起用于该密钥的所有加密和解密操作的 AWS KMS CMK。

$ aws secretsmanager update-secret --secret-id production/MyAwesomeAppSecret --kms-key-id arn:aws-cn:kms:region:123456789012:key/EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE

修改附加到密钥的标签

请按照以下选项卡之一中的步骤进行操作。

Using the console

标签键名称和值区分大小写。仅密钥中的一个标签可以具有给定的键名称。

  1. https://console.amazonaws.cn/secretsmanager/ 打开 Secrets Manager 控制台。

  2. 在密钥列表中,选择要修改的密钥名称。

  3. Tags (标签) 部分中,选择 Edit (编辑)

  4. Secrets Manager 显示任何现有的标签。您可以键入任意键名称或值。

  5. 您可以选择删除标签以删除任何现有的行。

  6. 如果您需要添加其他键值对,请选择 Add tag (添加标签),然后输入您的新键名称和关联的值。

  7. 完成更改后,选择 Save (保存)

Using the AWS CLI or AWS SDK operations

您可以使用以下命令在 Secrets Manager 中添加或删除附加到密钥的标签。键名称和值区分大小写。仅密钥中的一个标签可以具有给定的键名称。要编辑现有标签,请添加具有相同键名称和不同的值的标签。这不会添加新的键值对,而是 Secrets Manager 更新现有对中的值。要更改键名称,您必须删除第一个键并添加第二个具有新名称的键。

以下示例 AWS CLI 命令添加标签或将其替换为 --tags 参数提供的值。该参数应该为包含 KeyValue 元素的 JSON 数组:

$ aws secretsmanager tag-resource --secret-id MySecret2 --tags '[{"Key":"costcenter","Value":"12345"},{"Key":"environment","Value":"production"}]'

tag-resource 命令不返回任何输出。

以下示例 AWS CLI 命令从指定的密钥中删除具有“environment”键的标签:

$ aws secretsmanager untag-resource --secret-id MySecret2 --tag-keys 'environment'

tag-resource 命令不返回任何输出。