更改密钥的加密 Amazon Secrets Manager 密钥 - Amazon Secrets Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

更改密钥的加密 Amazon Secrets Manager 密钥

Secrets Manager 使用带有 Amazon KMS 密钥和数据密钥的信封加密来保护每个密钥值。对于每个秘密,您可以选择要使用的 KMS 密钥。你可以使用 Amazon 托管式密钥 aws/secretsManager,也可以使用客户管理的密钥。大多数情况下,建议使用 aws/secretsmanager,并且使用它不产生任何成本。如果您需要从其他人访问密钥 Amazon Web Services 账户,或者您想使用自己的 KMS 密钥以便轮换密钥或对其应用密钥策略,请使用 客户托管式密钥。您必须具有 KMS 密钥的权限。有关使用客户托管密钥的成本的信息,请参阅 定价

您可以更改秘密的加密密钥。例如,如果您想从其他账户访问密钥,并且该密钥当前已使用 Amazon 托管密钥进行加密aws/secretsmanager,则可以切换到 客户托管式密钥。

提示

如果您想轮换 客户托管式密钥,我们建议使用 Amazon KMS 自动密钥轮换。有关更多信息,请参阅轮换 Amazon KMS 密钥

当您更改加密密钥时,Secrets Manager 会使用新密钥重新加密AWSCURRENTAWSPENDING、和AWSPREVIOUS版本。为了避免将您锁定在密钥之外,Secrets Manager 会使用以前的密钥对所有现有版本进行加密。这意味着您可以使用先前的密钥或新密钥解密AWSCURRENTAWSPENDING、和AWSPREVIOUS版本。

要使其AWSCURRENT只能通过新的加密密钥解密,请使用新密钥创建新版本的密钥。然后,为了能够解AWSCURRENT密密密钥的版本,您必须拥有新密钥的权限。

如果停用以前的加密密钥,则除了 AWSCURRENTAWSPENDINGAWSPREVIOUS 之外,您将无法解密任何秘密版本。如果想要保留对其他标有标签的秘密版本的访问权限,则需要使用 Amazon CLI 通过新的加密密钥重新创建这些版本。

更改秘密的加密密钥(控制台)
  1. 通过 https://console.aws.amazon.com/secretsmanager/ 打开 Secrets Manager 控制台。

  2. 从密钥列表上,选择您的密钥。

  3. 在秘密详细信息页面上的秘密详细信息部分中,选择操作,然后选择编辑加密密钥

Amazon CLI

如果更改秘密的加密密钥,然后停用了以前的加密密钥,则除了 AWSCURRENTAWSPENDINGAWSPREVIOUS 之外,您将无法解密任何秘密版本。如果想要保留对其他标有标签的秘密版本的访问权限,则需要使用 Amazon CLI 通过新的加密密钥重新创建这些版本。

更改秘密的加密密钥 (Amazon CLI)
  1. 以下 update-secret 示例将更新用于加密密钥值的 KMS 密钥。该 KMS 密钥必须与加密密钥位于同一区域中。

    aws secretsmanager update-secret \ --secret-id MyTestSecret \ --kms-key-id arn:aws:kms:us-west-2:123456789012:key/EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE
  2. (可选)如果您的秘密版本带有自定义标签,则要使用新密钥对其重新加密,则必须重新创建这些版本。

    当您在命令 shell 中输入命令时,存在访问命令历史记录或实用程序可以访问您命令参数的风险。请参阅 降低使用 Amazon CLI 存储 Amazon Secrets Manager 密钥的风险

    1. 获取秘密版本的值。

      aws secretsmanager get-secret-value \ --secret-id MyTestSecret \ --version-stage MyCustomLabel

      记下秘密值。

    2. 创建具有该值的新版本。

      aws secretsmanager put-secret-value \ --secret-id testDescriptionUpdate \ --secret-string "SecretValue" \ --version-stages "MyCustomLabel"