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

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

轮换客户主密钥

加密最佳实践建议不要广泛重复使用加密密钥。若要为您的Amazon Key Management Service(Amazon KMS) 客户主密钥 (CMK),您可以创建新的 CMK,然后更改您的应用程序或别名来使用新的 CMK。或者,您可以为现有客户拥有的 CMK 启用自动密钥轮换。

当您启用自动密钥轮换对于客户托管 CMK,Amazon KMS每年为 CMK 生成新的密钥材料。Amazon KMS还会永久保留 CMK 的较旧密钥材料,以便用它来解密其加密的数据。Amazon KMS不会删除任何旋转的关键材质,直到删除 CMK

密钥轮换仅更改 CMK 的密钥材料,即加密操作中所使用的加密材料。不管其关键材料有没有变更或变更了多少次,该 CMK 仍是相同的逻辑资源。CMK 的属性不会发生变化,如下图所示。

自动密钥轮换具有以下优点:

  • CMK 的属性,包括其密钥 ID密钥 ARN、区域、策略和权限,在密钥轮换时不会发生改变。

  • 您无需更改引用 CMK 密钥 ID 或密钥 ARN 的应用程序或别名。

  • 启用密钥轮换后,Amazon KMS 会每年自动轮换 CMK。您无需记住或计划更新。

然而,自动密钥轮换对 CMK 所保护的数据无效。它不会轮换 CMK 生成的数据密钥,也不会对任何受 CMK 保护的数据重新加密,并且它无法减轻数据密钥泄露的影响。

您可能决定创建新的 CMK 来替代原有的 CMK。这跟轮换现有 CMK 的密钥材料具有相同效果,因此这通常被视为手动轮换密钥 。如果您想控制密钥轮换计划,手动轮换是很好的选择。对于不符合自动密钥轮换要求的 CMK,包括非对称 CMK自定义密钥存储中的 CMK 以及包含导入的密钥材料的 CMK,这也提供了一种轮换方式。

密钥轮换和定价

轮换客户管理的 CMK 可能会导致额外的月度费用。有关详细信息,请参阅 Amazon Key Management Service 定价。有关密钥材料和轮换的更多详细信息,请参阅。Amazon Key Management Service加密详细信息

自动密钥轮换的工作方式

Amazon KMS 中的密钥轮换属于加密最佳实践,特点是透明且易于使用。Amazon KMS 仅对客户托管的 CMK 支持可选的自动密钥轮换。

  • 管理密钥材料材料 Amazon KMS会保留 CMK 的所有密钥材料,即使密钥轮换处于禁用状态。只有删除 CMK 后才会删除密钥材料。如果使用 CMK 进行加密,会显示,Amazon KMS会使用当前密钥材料。如果使用 CMK 进行解密,会导致您的 CMK 进行解密,Amazon KMS使用用于加密的密钥材料。

  • 启用和禁用密钥轮换。默认情况下,会禁用自动密钥轮换。客户托管 CMK CMK。当您启用(或重新启用)密钥轮换时,Amazon KMS 会在启用日期 365 天后自动轮换 CMK,并在此后每隔 365 天轮换一次。

  • 已禁用的 CMK。 禁用 CMK 后,Amazon KMS 不会对它进行轮换。但是,密钥轮换状态不会发生改变,并且在 CMK 处于禁用状态时不能对其进行更改。重新启用 CMK 后,如果密钥材料已超过 365 天,Amazon KMS会立即轮换,并在此后每隔 365 天轮换一次。如果密钥材料少于 365 天,请参阅。Amazon KMS恢复原始密钥轮换计划。

  • 待删除的 CMK。 对于待删除的 CMK,Amazon KMS 不会对它进行轮换。密钥轮换状态设为 false,处于待删除状态时不能更改。如果删除被取消,将恢复之前的密钥轮换状态。如果密钥材料已超过 365 天,请参阅。Amazon KMS会立即轮换,并在此后每隔 365 天轮换一次。如果密钥材料少于 365 天,请参阅。Amazon KMS恢复原始密钥轮换计划。

  • Amazon 托管 CMK。 对于 Amazon 管理的 CMK,您无法管理其密钥轮换。Amazon KMS 每隔三年(1095 天)自动轮换一次 Amazon 管理的 CMK。

  • Amazon 拥有的 CMK。 对于的密钥轮换管理Amazon拥有的 CMK。这些区域有:密钥轮换的策略Amazon拥有的 CMK 由Amazon服务,用于创建和管理 CMK。有关详细信息,请参阅。静态加密主题或服务开发人员指南中的主题。

  • Amazon 服务。您可以在客户托管 CMK CMK用于的服务器端加密Amazon服务。年度轮换是透明的,并兼容与Amazon服务。

  • 多区域 CMK。您可以启用和禁用对于的自动密钥轮换。多区域密钥交替。您只能在主键上设置属性。何时Amazon KMS同步密钥时,它会将属性设置从主键复制到其副本键。旋转主键的键材质时,Amazon KMS会自动将该密钥材料复制到其所有副本密钥中。有关详细信息,请参阅旋转多区域关键帧

  • 监控密钥轮换。 何时Amazon KMS自动旋转关键材质Amazon托管 CMK或者客户托管 CMK CMK CMK,它会写一个CMK Rotation事件设置为Amazon CloudWatch Events轮换密钥事件添加到您的Amazon CloudTrail日志。您可以使用这些记录验证 CMK 是否已轮换。

  • 不支持的 CMK 类型。 以下类型的 CMK 支持自动密钥轮换,但您可以手动轮换这些 CMK

如何启用和禁用自动密钥轮换

您可以使用 Amazon KMS 控制台或 Amazon KMS API 启用和禁用自动密钥轮换,并查看任何客户管理的 CMK 的轮换状态。

当您启用自动密钥轮换时,Amazon KMS 会在启用日期 365 天后轮换 CMK,并在此后每隔 365 天轮换一次。

启用和禁用密钥轮换(控制台)

  1. 登录到 Amazon Web Services Management Console,然后通过以下网址打开 Amazon Key Management Service (Amazon KMS) 控制台:https://console.aws.amazon.com/kms

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

  3. 在导航窗格中,选择客户托管密钥。(您无法启用或禁用Amazon托管密钥。 它们每三年自动轮换一次。)

  4. 选择 CMK 的别名和密钥 ID。

  5. 选择 Key rotation (密钥轮换) 选项卡。

    Key rotation (密钥轮换) 选项卡仅显示在具有 Amazon KMS 生成的密钥材料(即 Origin (源)AWS_KMS)的对称 CMK 的详细信息页面上。您不能自动轮换非对称CMK、具有导入的密钥材料的 CMK 或自定义密钥存储中的 CMK。但是,您可以手动轮换它们

  6. 选中或清除 Automatically rotate this CMK every year (每年自动轮换此 CMK) 复选框。

    注意

    如果 CMK 被禁用或待删除,则将清除 Automatically rotate this CMK every year (每年自动轮换此 CMK) 复选框,并且您不能对其进行更改。在启用 CMK 或取消删除后,将恢复密钥轮换状态。有关详细信息,请参阅 自动密钥轮换的工作方式密钥状态:对您的 CMK 产生的影响

  7. 选择 Save

启用和禁用密钥轮换(Amazon KMSAPI)

您可以使用 Amazon Key Management Service (Amazon KMS) API 启用和禁用自动密钥轮换,并查看任何客户管理的 CMK 的当前轮换状态。这些示例使用 Amazon Command Line Interface (Amazon CLI),但您可以使用任何受支持的编程语言。

EnableKeyRotation操作可以为指定 CMK 启用自动密钥轮换。DisableKeyRotation 操作会禁用它。要在这些操作中标识 CMK,请使用其密钥 ID密钥 ARN。在默认情况下,客户管理 CMK 的密钥轮换处于禁用状态。

以下示例对指定的对称 CMK 启用密钥轮换,并使用 GetKeyRotationStatus 操作查看结果。然后,它禁用了密钥轮换,并使用 GetKeyRotationStatus 查看更改。

$ aws kms enable-key-rotation --key-id 1234abcd-12ab-34cd-56ef-1234567890ab $ aws kms get-key-rotation-status --key-id 1234abcd-12ab-34cd-56ef-1234567890ab { "KeyRotationEnabled": true } $ aws kms disable-key-rotation --key-id 1234abcd-12ab-34cd-56ef-1234567890ab $ aws kms get-key-rotation-status --key-id 1234abcd-12ab-34cd-56ef-1234567890ab { "KeyRotationEnabled": false }

手动轮换密钥

您可能希望创建一个新的 CMK,并使用它替代当前的 CMK,而不启用自动密钥轮换。当新 CMK 使用的密钥材料与当前 CMK 使用的密钥材料不相同时,使用新的 CMK 与更改现有 CMK 的密钥材料具有相同的效果。使用一个 CMK 替换另一个 CMK 的过程被称为手动密钥轮换

如果您希望控制轮换的频率,建议您通过手动的方式轮换密钥。对于不符合自动密钥轮换要求的 CMK,例如非对称 CMK、自定义密钥存储中的 CMK 以及具有导入的密钥材料的 CMK,这也是一种很好的解决方案。

注意

当您开始使用新的 CMK 时,请确保启用原来的 CMK,以便 Amazon KMS 可以解密使用原 CMK 加密的数据。

由于新 CMK 与当前 CMK 不相同的资源,它具有不同的密钥 ID 和密钥 ARN。当您更改 CMK 时,您需要更新应用程序中对密钥 ID 或密钥 ARN 的引用。别名,它会将友好名称与 CMK 关联,使得这个过程变得更容易。使用别名来引用应用程序中的 CMK。之后,当您想更改应用程序所使用的 CMK 时,更改别名的目标 CMK 即可。有关详细信息,请参阅在应用程序中使用别名

要更新别名的目标 CMK,请使用 API 中的UpdateAliasAmazon KMS操作。例如,此命令会更新 TestKey 别名以指向新 CMK。由于该操作不返回任何输出,该示例使用ListAliases操作以显示该别名已关联到不同的 CMK,并在LastUpdatedDate字段将更新。

$ aws kms list-aliases { "Aliases": [ { "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/TestKey", "AliasName": "alias/TestKey", "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": 1521097200.123, "LastUpdatedDate": 1521097200.123 }, ] } $ aws kms update-alias --alias-name alias/TestKey --target-key-id 0987dcba-09fe-87dc-65ba-ab0987654321 $ aws kms list-aliases { "Aliases": [ { "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/TestKey", "AliasName": "alias/TestKey", "TargetKeyId": "0987dcba-09fe-87dc-65ba-ab0987654321", "CreationDate": 1521097200.123, "LastUpdatedDate": 1604958290.722 }, ] }