删除客户主密钥 - Amazon Key Management Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

删除客户主密钥

删除 Amazon Key Management Service (Amazon KMS) 中的客户主密钥 (CMK) 是一项破坏性操作且具有潜在危险。它不可撤销地删除密钥材料以及与 CMK 关联的所有元数据。删除 CMK 后,您无法再解密使用该 CMK 加密的数据,这意味着数据将无法恢复。只有当您确定不再需要使用 CMK 时,才能将其删除。如果您不确定,请考虑禁用 CMK,而不是将其删除。如果您稍后需要再次使用已禁用的 CMK,您可以重新启用,但您无法恢复已删除的 CMK。

在删除 CMK 之前,您可能需要了解使用该 CMK 加密了多少密文。Amazon KMS 不会存储此信息,也不会存储任何密文。要获取此信息,您必须自行确定 CMK 的过去使用情况。想要获取可能有助于您完成该操作的一些指导,请转到确定客户主密钥的过去使用情况

Amazon KMS 从不会删除您的 CMK,除非您明确安排删除它们并且强制的等待期到期。但是,您可能会出于以下一个或多个原因而选择删除 CMK:

  • 完成不再需要的 CMK 的密钥生命周期

  • 避免因维护不用的 CMK 而产生的管理开销和成本

  • 减少计入您的 CMK 资源配额的 CMK 数量

注意

如果您关闭或删除 Amazon Web Services 账户 ,您的 CMK 将变得无法访问,您也不必再为它们付费。您不需要在关闭账户的操作之外单独计划删除 CMK。

Amazon KMS将一个条目记录在Amazon CloudTrail记录时计划删除,并且当CMK 实际上已被删除

有关删除多区域主键和副本键的信息,请参阅删除多区域键

关于等待时间

删除 CMK 具有破坏性且具有潜在危险,因此,Amazon KMS要求您将等待时间设置为 7-30 天。默认的等待期限为 30 天。

但是,实际等待时间可能比您计划的时间长 24 小时。要获取删除 CMK 的实际日期和时间,请使用DescribeKeyoperation. 或者在Amazon KMS控制台,在详情页面对于 CMK,在常规配置部分中,请参阅预定删除日期。请务必注意时区。

在等待期限内,CMK 状态和密钥状态为 Pending deletion (等待删除)

等待期结束后,Amazon KMS删除 CMK、其别名以及所有相关Amazon KMS元数据。

请利用等待期限确保您无论现在还是将来都不需要 CMK。您可以配置亚 Amazon CloudWatch 警报在有人员或应用程序在等待期限内试图使用 CMK 时发出警告。要恢复 CMK,您可以在等待期限结束前取消密钥删除。等待期限结束后,将无法取消密钥删除,Amazon KMS 将删除 CMK。

删除非对称 CMK

获得授权的用户可以删除对称 CMK 或非对称 CMK。对于两种密钥类型,计划删除 CMK 的过程是相同的。但是,由于非对称 CMK 的公有密钥可以下载并在 Amazon KMS 外部使用,因此操作会带来重大的额外风险,尤其是对于用于加密的非对称 CMK(密钥用法为 ENCRYPT_DECRYPT)。

  • 您在计划删除 CMK 时,CMK 的密钥状态将更改为 Pending deletion (待删除),并且 CMK 将无法用在加密操作中。但是,计划删除对 Amazon KMS 外部的公有密钥没有影响。持有公有密钥的用户可以继续使用该密钥加密消息。他们不会收到密钥状态已更改的任何通知。除非删除取消,否则使用公有密钥创建的密文将无法解密。

  • 警报、日志以及其他检测试图使用等待删除的 CMK 的策略,无法检测到 Amazon KMS 外部公有密钥的使用。

  • CMK 删除后,涉及该 CMK 的所有 Amazon KMS 操作都将失败。但是,持有公有密钥的用户可以继续使用该密钥加密消息。这些密文将无法解密。

如果必须删除密钥用法为 ENCRYPT_DECRYPT 的非对称 CMK,请使用 CloudTrail 日志条目确定是否已下载并共享公有密钥。如果有,请验证该公有密钥是否在 Amazon KMS 外部使用。然后,考虑禁用 CMK 而不是删除。

删除多区域 CMK

用户授权的人员可以计划删除多区域主键和副本键。然而,Amazon KMS不会删除具有副本键的多区域主键。此外,只要主键存在,您就可以重新创建已删除的多区域复制副本键。有关详细信息,请参阅 删除多区域键

删除 CMKAmazon服务

有多个 Amazon 服务都与 Amazon KMS 进行了集成,以保护您的数据。其中一些服务,例如Amazon EBS 卷Amazon Redshift,请使用客户主键(CMK)Amazon KMS生成数据密钥,然后使用数据密钥对数据进行加密。只要明文数据密钥所保护的数据还在经常使用,这些密钥就会保留在内存中。

计划删除 CMK 将使其变得不可用,但它不会阻止 Amazon 服务使用内存中的数据密钥来加密和解密您的数据。该服务不会受到影响,直到它需要使用待删除或已删除的 CMK。

例如,考虑以下情景:

  1. 您创建一个加密的 EBS 卷并指定 CMK。Amazon EBS 询问Amazon KMS使用您的 CMK 来生成加密数据密钥对于卷。Amazon EBS 使用该卷存储加密数据密钥。

  2. 当您将 EBS 卷附加到 EC2 实例时,Amazon EC2 会询问Amazon KMS使用 CMK 解密 EBS 卷的加密数据密钥。Amazon EC2 将明文数据密钥存储在管理程序内存中,并使用它来加密 EBS 卷的磁盘 I/O。只要 EBS 卷附加到 EC2 实例,数据密钥就会保留在内存中。

  3. 您计划删除 CMK,从而使其变得不可用。这不会立即影响到 EC2 实例或 EBS 卷,因为 Amazon EC2 正在使用明文数据密钥(而不是 CMK)来加密 EBS 卷的磁盘 I/O。

    即使在计划的时间过去和Amazon KMS删除 CMK,则不会立即影响到 EC2 实例或 EBS 卷,因为 Amazon EC2 正在使用明文数据密钥而不是 CMK。

  4. 但是,当加密的 EBS 卷从 EC2 实例分离时,Amazon EBS 将从内存中删除该明文密钥。下次将加密的 EBS 卷附加到 EC2 实例时,附加会失败,因为 Amazon EBS 无法使用 CMK 来解密卷的加密数据密钥。

计划和取消密钥删除

以下过程介绍如何计划删除和取消密钥删除单区域客户主密钥 (CMK) 在Amazon KMS使用Amazon Web Services Management Console,Amazon CLI,以及Amazon SDK for Java。

有关计划删除多区域键的信息,请参阅删除多区域键

警告

删除 Amazon KMS 中的客户主密钥 (CMK) 是一项破坏性操作且具有潜在危险。只有当您确定不再需要使用 CMK 并且将来也不再需要了,才能继续删除操作。如果您不确定,则应禁用 CMK,而不是将其删除。

在删除 CMK 之前,您必须具有执行这一操作的权限。如果您仅依赖密钥策略来指定 Amazon KMS 权限,则可能需要添加额外的权限才能删除 CMK。有关添加这些权限的信息,请转到添加计划和取消密钥删除所需的权限

Amazon KMS将一个条目记录在Amazon CloudTrail记录时计划删除,并且当CMK 实际上已被删除

计划和取消密钥删除(控制台)

在Amazon Web Services Management Console,您可以一次安排和取消删除多个 CMK。

计划密钥删除

  1. 登录到Amazon Web Services Management Console并打开Amazon Key Management Service(Amazon KMS) 控制台位于https://console.aws.amazon.com/kms

  2. 要更改Amazon区域中,使用页面右上角的 Region selector (区域选择器)。

  3. 在导航窗格中,选择客户托管密钥

  4. 选中您想要删除的 CMK 旁边的复选框。

  5. 依次选择 Key actions (密钥操作)Schedule key deletion (计划密钥删除)

  6. 阅读并考虑警告,以及有关在等待期限内取消删除的信息。如果决定取消删除,请在页面底部选择Cancel

  7. 对于 Waiting period (in days) (等待期限(天)),键入一个介于 7 和 30 之间的天数。

  8. 查看要删除的 CMK。

  9. 选中 Confirm you want to schedule this key for deletion in <number of days> days (确认您要计划在 n 天后删除此密钥) 旁的复选框。

  10. 选择计划删除

CMK 状态更改为 Pending deletion (等待删除)

取消密钥删除

  1. 打开Amazon KMS控制台位于https://console.aws.amazon.com/kms

  2. 要更改Amazon区域中,使用页面右上角的 Region selector (区域选择器)。

  3. 在导航窗格中,选择客户托管密钥

  4. 选中您想要恢复的 CMK 旁边的复选框。

  5. 依次选择 Key actions (密钥操作)Cancel key deletion (取消密钥删除)

CMK 状态将从 Pending deletion (等待删除) 更改为 Disabled (已禁用)。要使用该 CMK,您必须启用它

计划和取消密钥删除(Amazon CLI)

使用 aws kms schedule-key-deletionAmazon CLI 命令计划密钥删除,如以下示例所示。

$ aws kms schedule-key-deletion --key-id 1234abcd-12ab-34cd-56ef-1234567890ab --pending-window-in-days 10

使用成功后,Amazon CLI 将返回与以下示例中显示的输出类似的输出:

{ "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "DeletionDate": 1598304792.0, "KeyState": "PendingDeletion", "PendingWindowInDays": 10 }

使用 aws kms cancel-key-deletionAmazon CLI 命令取消密钥删除,如以下示例所示。

$ aws kms cancel-key-deletion --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

使用成功后,Amazon CLI 将返回与以下示例中显示的输出类似的输出:

{ "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" }

CMK 状态将从待删除更改为已禁用。要使用该 CMK,您必须启用它

计划和取消密钥删除(Amazon SDK for Java)

以下示例演示如何使用Amazon SDK for Java计划 CMK 删除。此示例要求您在此之前将 AWSKMSClient 实例化为 kms

String KeyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; int PendingWindowInDays = 10; ScheduleKeyDeletionRequest scheduleKeyDeletionRequest = new ScheduleKeyDeletionRequest().withKeyId(KeyId).withPendingWindowInDays(PendingWindowInDays); kms.scheduleKeyDeletion(scheduleKeyDeletionRequest);

以下示例演示如何使用Amazon SDK for Java取消密钥删除。此示例要求您在此之前将 AWSKMSClient 实例化为 kms

String KeyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; CancelKeyDeletionRequest cancelKeyDeletionRequest = new CancelKeyDeletionRequest().withKeyId(KeyId); kms.cancelKeyDeletion(cancelKeyDeletionRequest);

CMK 状态将从待删除更改为已禁用。要使用该 CMK,您必须启用它

添加计划和取消密钥删除所需的权限

如果您使用 IAM 策略允许Amazon KMS权限的所有 IAM 用户和角色Amazon管理员访问权限("Action": "*")或Amazon KMS完全访问权限("Action": "kms:*")已允许计划和取消密钥删除Amazon KMSCMK。如果您仅依赖密钥策略来允许Amazon KMS权限,您可能需要添加额外的权限,才能允许您的 IAM 用户和角色删除 CMK。要添加这些权限,请使用以下过程之一。

添加计划和取消密钥删除所需的权限(控制台)

您可以使用 Amazon Web Services Management Console来添加计划和取消密钥删除所需的权限。

  1. 登录到Amazon Web Services Management Console并打开Amazon Key Management Service(Amazon KMS) 控制台位于https://console.aws.amazon.com/kms

  2. 要更改Amazon区域中,使用页面右上角的 Region selector (区域选择器)。

  3. 在导航窗格中,选择客户托管密钥

  4. 选择要更改其权限的 CMK 的别名或密钥 ID。

  5. 选择 Key policy (密钥策略) 选项卡。UDER删除密钥中,选择允许密钥管理员删除此密钥,然后选择保存更改。

    注意

    如果您没有看到 Allow key administrators to delete this key (允许密钥管理员删除此密钥) 选项,这通常意味着您已使用 Amazon KMS API 修改此密钥策略。在此情况下,您必须手动更新密钥策略文档。将 kms:ScheduleKeyDeletionkms:CancelKeyDeletion 权限添加到密钥策略中的密钥管理员语句 ("Sid": "Allow access for Key Administrators"),然后选择 Save changes (保存更改)

添加计划和取消密钥删除所需的权限 (Amazon CLI)

您可以使用 Amazon Command Line Interface来添加计划和取消密钥删除所需的权限。

添加计划和取消密钥删除所需的权限

  1. 使用 aws kms get-key-policy 命令检索现有的密钥策略,然后将策略文档保存到文件中。

  2. 在您的首选文本编辑器中打开策略文档,将 kms:ScheduleKeyDeletionkms:CancelKeyDeletion 权限添加到向密钥管理员授予权限的策略语句(例如,带有 "Sid": "Allow access for Key Administrators" 的策略语句)。然后保存文件。以下示例显示了一个具有这两项权限的策略语句:

    { "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:user/KMSKeyAdmin"}, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "*" }
  3. 使用 aws kms put-key-policy 命令将密钥策略应用于 CMK。