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

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

删除和恢复密钥

由于密钥非常重要,AWS Secrets Manager 有意使删除密钥变得非常困难。Secrets Manager 不会立即删除密钥,而是 Secrets Manager 立即使这些密钥无法访问,并计划在恢复时段(最少 为 7 天)后删除这些密钥。在恢复时段结束后,您才能恢复以前删除的密钥。通过使用 CLI,您可以删除密钥,而没有恢复时段。

此外,您也无法直接 删除某个密钥版本,而是从密钥中删除所有暂存标签。这会将密钥标记为已弃用,并允许 Secrets Manager 在后台自动删除该版本。

本部分包括描述删除密钥和恢复已删除密钥的过程和命令:

删除密钥及所有版本

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

Using the Secrets Manager console

在您删除密钥时,Secrets Manager 立即弃用该密钥。不过,在经过恢复时段中指定的天数后,Secrets Manager 才会真正删除密钥。您无法访问弃用的密钥。如果您需要访问计划删除的密钥,您必须恢复该密钥。然后,您可以访问密钥和加密的密钥信息。

您可以使用 AWS CLI 或 AWS 开发工具包永久删除没有恢复时段的密钥。但是,您无法在 Secrets Manager 控制台中执行该操作。

最小权限

要删除控制台中的密钥,您必须具有以下权限:

  • secretsmanager:ListSecrets – 用于导航到要删除的密钥。

  • secretsmanager:DeleteSecret – 用于弃用密钥并计划将其永久删除。

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

  2. 导航到您当前在 Secrets Manager 中管理的密钥列表,然后选择要删除的密钥的名称。

  3. 密钥详细信息部分中,选择删除密钥

  4. 计划密钥删除对话框中,指定恢复时段的天数。这表示在永久删除之前等待的天数。Secrets Manager 附加一个名为 DeletionDate 的字段,并将该字段设置为当前日期和时间加上为恢复时段指定的天数。

  5. 选择计划删除

  6. 如果在控制台中启用显示删除的项目的选项,则会继续显示该密钥。您可以选择在列表中查看 Deleted date (删除日期) 字段。

    1. 选择右上角的首选项图标(齿轮 )。

    2. 选择显示计划删除的密钥

    3. 启用删除日期开关。

    4. 选择 Save

    删除的密钥现在显示在列表中并带有删除每个密钥的日期。

Using the AWS CLI or AWS SDK operations

您可以使用以下命令检索存储在 AWS Secrets Manager 中的密钥:

您必须在 SecretId 字段中按友好名称或 Amazon 资源名称 (ARN) 标识要删除的密钥。

以下示例 AWS CLI 命令弃用名为“MyTestDatabase”的密钥,并计划在恢复时段(14 天)后删除该密钥。

$ aws secretsmanager delete-secret --secret-id development/MyTestDatabase --recovery-window-in-days 14 { "ARN": "arn:aws-cn:secretsmanager:region:accountid:secret:development/MyTestDatabase-AbCdEf", "Name": "development/MyTestDatabase", "DeletionDate": 1510089380.309 }

DeletionDate 字段中指定的日期和时间之后的任意时间,AWS Secrets Manager 将永久删除该密钥。

您也可以立即删除密钥,无需等待。

重要

无法通过 RestoreSecret 操作恢复使用 ForceDeleteWithoutRecovery 参数删除的密钥。

AWS CLI 命令的以下示例立即删除密钥而没有恢复时段。DeletionDate 响应字段显示当前日期和时间,而不是将来的时间。

$ aws secretsmanager delete-secret --secret-id development/MyTestDatabase --force-delete-without-recovery { "ARN": "arn:aws-cn:secretsmanager:region:accountid:secret:development/MyTestDatabase-AbCdEf", "Name": "development/MyTestDatabase", "DeletionDate": 1508750180.309 }
方便的提示

如果您不知道应用程序仍在使用密钥,则可以创建 Amazon CloudWatch 警报以提醒您在恢复时段任何尝试访问密钥的行为。有关更多信息,请参阅监控计划删除的密钥版本

恢复计划删除的密钥

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

Using the Secrets Manager console

Secrets Manager 将计划删除的密钥视为已弃用,而不再直接访问该密钥。在恢复时段过后,Secrets Manager 将永久删除该密钥。在 Secrets Manager 删除密钥后,您无法恢复该密钥。在恢复时段结束之前,您可以恢复密钥并再次使其可进行访问。这会删除 DeletionDate 字段,从而取消计划的永久删除。

最小权限

要在控制台中恢复密钥和元数据,您必须具有以下权限:

  • secretsmanager:ListSecrets – 用于导航到要恢复的密钥。

  • secretsmanager:RestoreSecret – 用于删除仍与密钥关联的任何版本。

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

  2. 导航到您当前在 Secrets Manager 中管理的密钥列表。

  3. 要查看删除的密钥,您必须在控制台中启用该功能。如果尚未启用该功能,请执行以下步骤:

    1. 选择右上角的 Preferences (首选项) 图标(齿轮 )。

    2. 选择显示计划删除的密钥

    3. 启用删除日期开关。

    4. 选择 Save

    删除的密钥现在显示在列表中并带有删除每个密钥的日期。

  4. 选择要恢复的已删除密钥的名称。

  5. 密钥详细信息部分中,选择取消删除

  6. 取消密钥删除确认对话框中,选择取消删除

    AWS Secrets Manager 从密钥中删除 DeletionDate 字段。这将取消计划的删除并恢复对密钥的访问。

Using the AWS CLI or AWS SDK operations

您可以使用以下命令检索存储在 AWS Secrets Manager 中的密钥:

您必须在 SecretId 字段中按友好名称或 ARN 指定要恢复的密钥。

以下 AWS CLI 命令示例恢复以前删除的名为“MyTestDatabase”的密钥。这将取消计划的删除并恢复对密钥的访问。

$ aws secretsmanager restore-secret --secret-id development/MyTestDatabase { "ARN": "arn:aws-cn:secretsmanager:region:accountid:secret:development/MyTestDatabase-AbCdEf", "Name": "development/MyTestDatabase" }

删除密钥的一个版本

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

Using the AWS CLI or AWS SDK operations

您无法使用 Secrets Manager 控制台删除密钥的某个版本。您必须使用 AWS CLI 或 AWS API。

您无法直接删除某个密钥版本,而是删除所有暂存标签,这实际上将密钥标记为已弃用。然后,Secrets Manager 可以在后台将其删除。

您可以使用以下命令弃用 AWS Secrets Manager 中存储的密钥版本:

您必须按友好名称或 ARN 指定密钥。您还会指定要添加、移动或删除的暂存标签。

您可在以下组合中指定 FromSecretVersionIdMoveToSecretId

  • 仅限 FromSecretVersionId:这会从指定的版本中完全删除暂存标签。

  • 仅限 MoveToVersionId:这会将暂存标签添加到指定的版本中。如果其他版本已附加任何暂存标签,则 Secrets Manager 自动从这些版本中删除标签。

  • MoveToVersionIdRemoveFromVersionId:这些选项明确移动标签。暂存标签必须在密钥的 RemoveFromVersionId 版本上存在,否则,将会出现错误。

以下示例 AWS CLI 命令从名为“MyTestDatabase”的密钥的某个版本中删除 AWSPREVIOUS 暂存标签。您可以使用 ListSecretVersionIds 命令检索要删除的版本的版本 ID。

$ aws secretsmanager update-secret-version-stage \ --secret-id development/MyTestDatabase \ --remove-from-version-id EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE --version-stage AWSPREVIOUS { "ARN": "arn:aws-cn:secretsmanager:region:accountid:secret:development/MyTestDatabase-AbCdEf", "Name": "development/MyTestDatabase" }