

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

# 旋转 AWS KMS keys
<a name="rotate-keys"></a>

要为[客户托管的密钥](concepts.md#customer-mgn-key)创建新的加密材料，您可以创建新的 KMS 密钥，然后更改您的应用程序或别名来使用新的 KMS 密钥。或者，您可以通过启用自动密钥轮换或执行按需轮换，来轮换与现有 KMS 密钥关联的密钥材料。

默认情况下，当您为 KMS *密钥启用自动密钥轮换*时，每年会为 KMS 密钥 AWS KMS 生成新的加密材料。您还可以指定自定义，[rotation-period](#rotation-period)以定义启用自动密钥轮换以轮换密钥材料后的天数，以及此后每次自动轮换之间的天数。 AWS KMS 如果您需要立即启动密钥材料轮换，则无论是否启用自动密钥轮换，都可以执行*按需轮换*。按需轮换不会更改现有的自动轮换计划。

您可以在 Amazon CloudWatch 和 AWS Key Management Service 控制台中[跟踪 KMS 密钥的密钥材料的轮换](#monitor-key-rotation)情况。 AWS CloudTrail您还可以使用[GetKeyRotationStatus](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetKeyRotationStatus.html)操作来验证 KMS 密钥是否启用了自动轮换，并识别任何正在进行的按需轮换。您可以使用[ListKeyRotations](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeyRotations.html)操作来查看已完成旋转的详细信息。

密钥轮换只会更改*当前密钥材料*，即加密操作中使用的密钥。当您使用轮换的 KMS 密钥解密密文时，会 AWS KMS 使用用于加密密文的密钥材料。无法为解密操作选择特定的密钥材料， AWS KMS 会自动选择正确的密钥材料。由于使用适当的密钥材料进行 AWS KMS 透明解密，因此您可以安全地在应用程序中使用轮换的 KMS 密钥，而 AWS 服务 无需更改代码。

 不管密钥材料有没有变更或变更了多少次，该 KMS 密钥仍是相同的逻辑资源。KMS 密钥的属性不会发生变化，如下图所示。

![\[Key rotation process showing key material change while Key ID remains constant.\]](http://docs.aws.amazon.com/zh_cn/kms/latest/developerguide/images/key-rotation-auto.png)


您可能决定创建新的 KMS 密钥来替代原有的 KMS 密钥。这跟轮换现有 KMS 密钥的密钥材料具有相同效果，因此这通常被视为[手动轮换密钥](rotate-keys-manually.md)。当您想要轮换不符合自动或按需密钥轮换条件的 KMS 密钥（包括[非对称 KMS 密钥、HMAC KMS 密](symmetric-asymmetric.md)[钥和[自定义](key-store-overview.md#custom-key-store-overview)密钥存储中的 KMS 密钥](hmac.md)）时，手动轮换是一个不错的选择。

**注意**  
 密钥轮换不会影响 KMS 密钥所保护的数据。不会轮换 KMS 密钥生成的数据密钥，也不会对任何受 KMS 密钥保护的数据重新加密。密钥轮换不会减轻数据密钥泄露的影响。

**密钥轮换和定价**  
AWS KMS 对为您的 KMS 密钥维护的密钥材料的第一次和第二次轮换收取月费。此次涨价以第二次轮换为上限，后续任何轮换均不收取费用。有关详细信息，请参阅 [AWS Key Management Service 定价](https://aws.amazon.com/kms/pricing/)。

**注意**  
您可以使用《AWS Cost Explorer Service》[https://docs.aws.amazon.com/cost-management/latest/userguide/ce-what-is.html](https://docs.aws.amazon.com/cost-management/latest/userguide/ce-what-is.html)来查看您的密钥存储费用明细。例如，您可以通过将**使用类型**指定为 `$REGION-KMS-Keys` 并按 **API 操作**对数据进行分组来筛选视图，以查看按当前和轮换 KMS 密钥计费的密钥的总费用。  
您可能仍会看到历史日期的旧 `Unknown` API 操作的实例。

**密钥轮换和配额**  
在计算密钥资源配额时，无论轮换密钥材料版本的数量如何，每个 KMS 密钥均算作一个密钥。

有关密钥材料和轮换的详细信息，请参阅《[AWS Key Management Service 加密详细信息](https://docs.aws.amazon.com/kms/latest/cryptographic-details/)》。

**Topics**
+ [为什么要轮换 KMS 密钥？](#rotating-kms-keys)
+ [密钥轮换的工作原理](#rotate-keys-how-it-works)
+ [启用自动密钥轮换](rotating-keys-enable.md)
+ [禁用自动密钥轮换](rotating-keys-disable.md)
+ [执行按需密钥轮换](rotating-keys-on-demand.md)
+ [列出轮换和密钥材料](list-rotations.md)
+ [手动轮换密钥](rotate-keys-manually.md)
+ [更改一组多区域密钥中的主密钥](multi-region-update.md)

## 为什么要轮换 KMS 密钥？
<a name="rotating-kms-keys"></a>

加密最佳实践不鼓励大量重复使用直接加密数据的密钥，例如生成的[数据密钥](data-keys.md)。 AWS KMS 当 256 位数据密钥加密数百万条消息时，它们可能会耗尽并开始生成带有细微模式的加密文字，聪明的操作者可以利用这些密文来发现密钥中的位。建议数据密钥仅使用一次或少数几次，以减少这种密钥耗尽问题。

但是，KMS 密钥最常用作“包装密钥”**，也称为“密钥加密密钥”**。包装密钥不是加密数据，而是对加密数据的数据密钥进行加密。因此，其使用频率远低于数据密钥，并且几乎从未被重复使用到足以出现密钥耗尽的风险。

尽管耗尽风险非常低，但由于业务或合同规则或政府法规，您可能需要轮换 KMS 密钥。被迫轮换 KMS 密钥时，我们建议您在支持自动密钥轮换时使用自动轮换，在不支持自动轮换时使用按需轮换，在既不支持自动密钥轮换也不支持按需密钥轮换时使用手动密钥轮换。

您可以考虑执行按需轮换，演示密钥材料轮换功能或验证自动化脚本。我们建议将按需轮换用于计划外轮换场景，尽可能使用自动密钥轮换并自定义[轮换周期](#rotation-period)。

## 密钥轮换的工作原理
<a name="rotate-keys-how-it-works"></a>

AWS KMS 密钥轮换设计为透明且易于使用。 AWS KMS 仅支持[客户托管密钥的可选自动和按需密钥](concepts.md#customer-mgn-key)轮换。

**自动密钥轮换**  
AWS KMS 在轮换周期定义的下一个轮换日期自动轮换 KMS 密钥。您无需记住或计划更新。  
只有 AWS KMS 生成密钥材料的对称加密 KMS 密钥才支持自动密钥轮换（`AWS_KMS`来源）。  
对于客户托管的 KMS 密钥，自动轮换是可选的。 AWS KMS 始终每年轮换 AWS 托管 KMS 密钥的密钥材料。 AWS 拥有的 KMS 密钥的轮换由拥有 AWS 服务 该密钥的人管理。

** 按需轮换**  
无论是否启用了自动密钥轮换，都会立即开始轮换与 KMS 密钥关联的密钥材料。  
对称加密 KMS 密钥支持按需密钥轮换，其密钥材料 AWS KMS 可生成（`AWS_KMS`来源），对称加密 KMS 密钥支持使用导入的密钥材料（`EXTERNAL`来源）。

**手动轮换**  
以下类型的 KMS 密钥不支持自动密钥轮换或按需密钥轮换，但您可以[手动轮换这些 KMS 密钥](rotate-keys-manually.md)。  
+ [非对称 KMS 密钥](symmetric-asymmetric.md)
+ [HMAC KMS 密钥](hmac.md)
+ [自定义密钥存储](key-store-overview.md#custom-key-store-overview)中的 KMS 密钥

**管理密钥材料**  
AWS KMS 即使禁用了密钥轮换，也会保留带有`AWS_KMS`来源的 KMS 密钥的所有密钥材料。 AWS KMS 只有在删除 KMS 密钥时才会删除密钥材料。  
您负责管理来源为 `EXTERNAL` 的对称加密密钥的密钥材料。您可以使用[DeleteImportedKeyMaterial](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeleteImportedKeyMaterial.html)操作删除任何密钥材料，也可以在导入材料时设置过期时间。一旦 KMS 密钥的任何材料过期或被删除，该 KMS 密钥就会变为无法使用。

**使用密钥材料**  
当您使用轮换的 KMS 密钥加密数据时， AWS KMS 使用当前的密钥材料。当您使用轮换 KMS 密钥解密密文时， AWS KMS 会使用与加密时所用密钥材料相同的版本。您无法为解密操作选择特定版本的密钥材料，而是 AWS KMS 会自动选择正确的版本。

** 轮换周期**  
轮换期限定义了在您启用自动密钥轮换后， AWS KMS 将轮换密钥材料的天数，以及此后每次自动密钥轮换之间的天数。如果您在启用自动密钥轮换时未指定 `RotationPeriodInDays` 的值，则默认值为 365 天。  
您可以使用 k [ms: RotationPeriodInDays](conditions-kms.md#conditions-kms-rotation-period-in-days) 条件键进一步限制委托人可以在参数中`RotationPeriodInDays`指定的值。

**轮换日期**  
轮换日期是指因自动（定期）轮换或按需密钥轮换而更新 KMS 密钥的当前密钥材料的日期。

**轮换日期**  
AWS KMS 在轮换周期定义的轮换日期自动轮换 KMS 密钥。默认轮换周期为 365 天。    
**客户自主管理型密钥**  <a name="rotate-customer-keys"></a>
由于[客户托管密钥](concepts.md#customer-mgn-key)的自动密钥轮换是可选的，并且可以随时启用和禁用，因此轮换日期取决于最近启用轮换的日期。如果您修改先前启用了自动密钥轮换的密钥的轮换周期，则日期可能会更改。在密钥的生命周期内，轮换日期可能会更改很多次。  
例如，如果您在 2022 年 1 月 1 日创建客户托管密钥，并在 2022 年 3 月 15 日启用自动密钥轮换，且默认轮换周期为 365 天，则 AWS KMS 会在 2023 年 3 月 15 日、2024 年 3 月 15 日以及之后每 365 天轮换密钥材料。  
以下示例假设启用了自动密钥轮换，且默认轮换周期为 365 天。这些示例演示了可能影响密钥轮换周期的特殊情况。  
+ 禁用密钥轮换 - 如果您在任何时候[禁用自动密钥轮换](rotating-keys-disable.md)，KMS 密钥将继续使用禁用轮换时使用的密钥材料版本。如果您再次启用自动密钥轮换，则 AWS KMS 会根据新的启用轮换的日期轮换密钥材料。
+ 已禁用 KMS 密钥-当 KMS 密钥处于禁用状态时， AWS KMS 不会对其进行轮换。但是，密钥轮换状态不会发生改变，并且在 KMS 密钥处于禁用状态时不能对其进行更改。重新启用 KMS 密钥后，如果密钥材料已超过其上次计划轮换日期，则 AWS KMS 会立即轮换。如果密钥材料没有错过上次预定的轮换日期，则 AWS KMS 恢复原来的密钥轮换计划。
+ 待删除的 KMS 密钥-当 KMS 密钥处于待删除状态时， AWS KMS 不会对其进行轮换。密钥轮换状态设为 `false`，处于待删除状态时不能更改。如果删除被取消，将恢复之前的密钥轮换状态。如果密钥材料已超过其上次预定的轮换日期，则立即将其 AWS KMS 轮换。如果密钥材料没有错过上次预定的轮换日期，则 AWS KMS 恢复原来的密钥轮换计划。  
**AWS 托管式密钥**  <a name="rotate-aws-managed-keys"></a>
AWS KMS AWS 托管式密钥 每年自动轮换（大约 365 天）。您无法启用或禁用 [AWS 托管式密钥](concepts.md#aws-managed-key) 的密钥轮换。  
的密钥材料在创建日期一年后首次轮换，此后每年（自上次轮换后大约 365 天）进行轮换。 AWS 托管式密钥   
2022年5月，将轮换时间表 AWS 托管式密钥 从每三年（约1,095天） AWS KMS 改为每年（约365天）。  
**AWS 拥有的密钥**  <a name="rotate-aws-owned-keys"></a>
您无法启用或禁用 AWS 拥有的密钥的密钥轮换。的[密钥轮换](#rotate-keys)策略 AWS 拥有的密钥 由创建和管理密钥的 AWS 服务决定。有关详细信息，请参阅服务的用户指南或开发人员指南中的*静态加密*主题。

** 轮换多区域密钥**  
旋转行为会有所不同，具体取决于密钥材料是由 AWS KMS （`AWS_KMS`原点）生成的，还是由（`EXTERNAL`原点）生成的。    
**带原点的多区域密`AWS_KMS`钥**  <a name="rotating-aws-kms-multi-region--keys"></a>
对于来源为 `AWS_KMS` 的对称加密[多区域密钥](multi-region-keys-overview.md)，您可以启用和禁用密钥材料自动轮换并执行按需轮换。密钥轮换是多区域密钥的[共享属性](multi-region-keys-overview.md#mrk-sync-properties)。  
仅在主密钥上启用和禁用自动密钥轮换。您仅对主密钥启动按需轮换。  
+  AWS KMS 同步多区域密钥时，它会将密钥轮换属性设置从主键复制到其所有相关的副本密钥。
+  AWS KMS 轮换密钥材料时，它会为主键创建新的密钥材料，然后将新的密钥材料跨区域边界复制到所有相关的副本密钥中。密钥材料永远不会处于 AWS KMS 未加密状态。此步骤经过精心控制，以确保在加密操作中使用任何密钥之前密钥材料完全同步。
+ AWS KMS 在主密钥及其每个副本密钥中都提供该密钥材料之前，不会使用新的密钥材料加密任何数据。
+ 复制已轮换的主密钥时，新的副本密钥具有相关多区域密钥的当前密钥材料和所有先前版本的密钥材料。
此模式可确保相关的多区域密钥完全可互操作。任何多区域密钥都可以解密由相关多区域密钥加密的任何密文，即使密文在创建密钥之前已加密。  
**带原点的多区域密`EXTERNAL`钥**  <a name="rotating-external-multi-region--keys"></a>
您可以按需轮换对称加密中的密钥材料进行[按需轮](multi-region-keys-overview.md)换。`EXTERNAL`密钥轮换是多区域密钥的[共享属性](multi-region-keys-overview.md#mrk-sync-properties)。  
在将新的密钥材料导入主密钥和每个副本密钥之后，您只能对主密钥启动按需轮换。  
+ 当您将新的密钥材料导入主密钥时， AWS KMS 会将密钥材料标识符和密钥材料描述从主密钥复制到所有相关的副本密钥。它不会复制密钥材料。
+ 您必须将相同的密钥材料分别导入到每个副本密钥中。将密钥材料导入所有相关的多区域密钥后，您可以对主密钥启动按需轮换。这样可以确保在主密钥及其每个副本密钥中提供密钥材料之前， AWS KMS 不会使用新的密钥材料对任何数据进行加密。
+ 主密钥或任何副本密钥中的每个密钥材料都可以独立于同一密钥中的其他密钥材料或任何其他相关多区域密钥中的其他密钥材料而过期或删除。

**AWS 服务**  
您可以对用于 AWS 服务中服务器端加密的[客户托管密钥](concepts.md#customer-mgn-key)启用自动密钥轮换。年度轮换是透明的，并且与 AWS 服务兼容。

**监控密钥轮换**  <a name="monitor-key-rotation"></a>
 AWS KMS 轮换[AWS 托管式密钥](concepts.md#aws-managed-key)或[客户托管密钥的密钥材料时，它会向](concepts.md#customer-mgn-key) Amazon EventBridge 写一个`KMS CMK Rotation`事件，将一个[RotateKey 事件](ct-rotatekey.md)写入您的 AWS CloudTrail 日志。您可以使用这些记录验证 KMS 密钥是否已轮换。  
您可以使用 AWS Key Management Service 控制台查看 KMS 密钥的剩余按需轮换次数以及 KMS 密钥所有已完成的密钥材料轮换的列表。  
您可以使用[ListKeyRotations](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeyRotations.html)操作来查看已完成旋转的详细信息。

**最终一致性**  
密钥轮换会受到与其他 AWS KMS 管理操作相同的最终一致性影响。新的密钥材料在整个 AWS KMS中可用之前可能会有一些延迟。但是，轮换密钥材料不会导致加密操作中断或延迟。当前的密钥材料用于加密操作，直到新的密钥材料在整个 AWS KMS中可用为止。当自动轮换多区域密钥的密钥材料时，将 AWS KMS 使用当前密钥材料，直到新的密钥材料在所有带有相关多区域密钥的区域中都可用。