更改密钥的加密 AWS Secrets Manager 密钥 - AWS Secrets Manager

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

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

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

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

提示

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

当您更改加密密钥时,Secrets Manager 会使用新密钥重新加密AWSCURRENTAWSPENDING、和AWSPREVIOUS版本。为了避免将您锁定在密钥之外,Secrets Manager 会使用以前的密钥对所有现有版本进行加密。这意味着您可以使用先前的密钥或新密钥解密AWSCURRENTAWSPENDING、和AWSPREVIOUS版本。如果您没有使用先前密钥的kms:Decrypt权限,则当您更改加密密钥时,Secrets Manager 无法解密密密钥以重新加密它们。在这种情况下,现有版本不会重新加密。

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

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

更改秘密的加密密钥(控制台)
  1. 打开 Secrets Manager 控制台,网址为https://console.aws.amazon.com/secretsmanager/

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

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

AWS CLI

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

更改秘密的加密密钥 (AWS 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 中输入命令时,存在访问命令历史记录或实用程序可以访问您命令参数的风险。请参阅 降低使用 AWS CLI 存储 AWS 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"