删除 客户主密钥 - AWS Key Management Service

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

删除 客户主密钥

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

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

AWS KMS 绝不会删除您的 CMKs ,除非您明确计划删除它们并且强制的等待期结束。但是,您可能会CMK出于以下一个或多个原因选择删除:

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

  • 避免产生与保持未使用状态相关的管理开销和成本 CMKs

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

注意

如果您关闭或删除您的 AWS 账户,您的账户CMKs将变得无法访问,并且您将不再为其付费。您无需计划删除与关闭账户CMKs分开的 。

AWS KMS 当您AWS CloudTrail计划删除CMK实际删除 CMK时, 会在日志中记录一个条目。

关于等待期限

由于删除具有破坏性且存在潜在危险CMK,因此 AWS KMS 要求您将等待期限设置为 7 – 30 天。默认的等待期限为 30 天。

但是,实际等待期可能比您计划的等待期长 24 小时。要获取CMK将删除的实际日期和时间,请使用 DescribeKey 操作。或在 AWS KMS 控制台中,在 的详细信息页面上CMK的 General configuration (常规配置) 部分中,请参阅 Scheduled deletion date (计划的删除日期)。请务必记下时区。

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

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

使用等待期限以确保您CMK现在或将来不需要 。您可以配置Amazon CloudWatch警报,以便在人员或应用程序CMK在等待期内尝试使用 时提醒您。要恢复 CMK,您可以在等待期限结束前取消密钥删除。在等待期限结束后,您无法取消密钥删除, 将AWS KMS删除 CMK。

删除非对称 CMKs

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

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

  • 警报、日志和其他检测尝试使用待删除的 CMK 的策略无法检测到 外部公有密钥的使用AWS KMS。

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

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

删除客户主密钥操作如何影响与 集成的 AWS 服务 AWS KMS

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

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

例如,考虑以下情景:

  1. 您可以创建加密的 EBS 卷并指定 CMK。 Amazon EBS AWS KMS 要求 使用 为该卷CMK生成加密的数据密钥。 将加密的数据密钥与该卷一起Amazon EBS存储。

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

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

    即使计划的时间结束并AWS KMS删除 CMK,也不会立即影响EC2 实例或 EBS 卷,因为 Amazon EC2 使用明文数据密钥而不是 CMK。

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

计划和取消密钥删除

以下过程介绍如何使用 AWS KMS、AWS 管理控制台 和AWS CLI在 AWS SDK for Java 中计划密钥删除和取消密钥删除。

警告

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

您必须先拥有删除的权限CMK,然后才能删除。如果您仅依赖密钥策略来指定AWS KMS权限,则可能需要添加额外的权限,然后才能删除 CMK。有关添加这些权限的信息,请转到添加计划和取消密钥删除所需的权限

AWS KMS 当您AWS CloudTrail计划删除CMK实际删除 CMK时, 会在日志中记录一个条目。

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

在 中AWS 管理控制台,您可以计划和取消CMKs一次删除多个。

计划密钥删除

  1. 登录 AWS 管理控制台并通过以下网址打开 AWS Key Management Service (AWS KMS) 控制台:https://console.aws.amazon.com/kms

  2. 要更改 AWS 区域,请使用页面右上角的区域选择器。

  3. 在导航窗格中,选择 Customer managed keys (客户托管密钥)

  4. 选中CMKs要删除的 旁边的复选框。

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

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

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

  8. 查看CMKs要删除的 。

  9. 选择 Confirm that you want to schedule these keys for deletion after a (确认您希望计划在某个操作之后删除这些密钥) <waiting period> “day waiting period”复选框。

  10. 选择计划删除

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

取消密钥删除

  1. https://console.aws.amazon.com/kms 打开 AWS KMS 控制台。

  2. 要更改 AWS 区域,请使用页面右上角的区域选择器。

  3. 在导航窗格中,选择 Customer managed keys (客户托管密钥)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

以下示例演示如何使用 计划CMK删除 AWS SDK for Java。此示例要求您在此之前将 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);

以下示例演示如何使用AWS 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 策略来允许AWS KMS权限,则已允许具有IAM管理员访问权限 (AWS) 或"Action": "*"完全访问权限 (AWS KMS) 的"Action": "kms:*"所有用户和角色为 AWS KMS 计划和取消密钥删除CMKs。如果您仅依赖密钥策略来允许AWS KMS权限,则可能需要添加额外的权限来允许您IAM的 用户和角色删除 CMKs。要添加这些权限,请参阅以下步骤。

以下过程介绍如何使用 AWS 管理控制台或 AWS CLI 向密钥策略添加权限。

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

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

您可以使用 AWS 管理控制台来添加计划和取消密钥删除所需的权限。

  1. 登录 AWS 管理控制台并通过以下网址打开 AWS Key Management Service (AWS KMS) 控制台:https://console.aws.amazon.com/kms

  2. 要更改 AWS 区域,请使用页面右上角的区域选择器。

  3. 在导航窗格中,选择 Customer managed keys (客户托管密钥)

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

  5. 选择 Key policy (密钥策略) 选项卡。在 Key deletion (密钥删除) 下,选择 Allow key administrators to delete this key (允许密钥管理员删除此密钥),然后选择 Save changes (保存更改)。

    注意

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

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

您可以使用 AWS 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。