

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

# 执行按需密钥轮换
<a name="rotating-keys-on-demand"></a>

无论是否启用了自动密钥轮换，您都可以对客户托管 KMS 密钥中的密钥材料执行按需轮换。禁用自动轮换 ([DisableKeyRotation](https://docs.aws.amazon.com/kms/latest/APIReference/API_DisableKeyRotation.html)) 不会影响您执行按需轮换的能力，也不会取消任何正在进行的按需轮换。按需轮换不会更改现有的自动轮换计划。例如，假设一个 KMS 密钥启用了自动密钥轮换，轮换周期为 730 天。如果密钥计划在 2024 年 4 月 14 日自动轮换，而您在 2024 年 4 月 10 日执行按需轮换，则密钥将按计划在 2024 年 4 月 14 日自动轮换，此后每 730 天自动轮换一次。

每个 KMS 密钥最多可以按需轮换 25 次。您可以使用 AWS KMS 控制台查看 KMS 密钥的剩余按需轮换次数。

只有[对称加密 KMS 密钥](symm-asymm-choose-key-spec.md#symmetric-cmks)支持按需密钥轮换。您无法按需轮换[自定义](key-store-overview.md#custom-key-store-overview)密钥存储库中的[非对称 KMS 密钥](symmetric-asymmetric.md)、[HMAC](hmac.md) KMS 密钥或 KMS 密钥。要按需轮换一组相关的[多区域密钥](rotate-keys.md#multi-region-rotate)，请对主密钥调用按需轮换。

拥有`kms:RotateKeyOnDemand`和`kms:GetKeyRotationStatus`权限的授权用户可以使用 AWS KMS 控制台和 AWS KMS API 启动按需密钥轮换并查看密钥轮换状态。[ListKeyRotations](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeyRotations.html)用于查看 KMS 密钥的已完成轮换。

**Topics**
+ [启动按需密钥轮换（控制台）](#rotate-on-demand-console)
+ [启动按需密钥轮换 (AWS KMS API)](#rotate-on-demand-api)

## 启动按需密钥轮换（控制台）
<a name="rotate-on-demand-console"></a>

1. 登录 AWS 管理控制台 并在 [https://console.aws.amazon.com/km](https://console.aws.amazon.com/kms) s 处打开 AWS Key Management Service (AWS KMS) 控制台。

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

1. 在导航窗格中，选择**客户托管密钥**。（您无法对 AWS 托管式密钥执行按需轮换。其将每年自动轮换一次。）

1. 选择 KMS 密钥的别名和密钥 ID。

1. 选择按**密钥材料和轮换**选项卡。

   **密钥材料和轮换**选项卡仅在支持自动轮换或按需轮换的对称加密 KMS 密钥的详细信息页面上显示。这包括 AWS KMS 生成密钥材料的 KMS 密钥（**AWS\_KMS**来源）和带有导入密钥材料的 KMS 密钥（**外部**来源） 

   您无法按需轮换[自定义](key-store-overview.md#custom-key-store-overview)密钥存储库中的非对称 KMS 密钥、HMAC KMS 密钥或 KMS 密钥。但是，您可以[手动轮换它们](rotate-keys-manually.md)。

1. 选择**立即轮换**。对于包含已导入密钥材料的对称加密密钥，只有在您之前[导入了新的密钥材料](importing-keys-import-key-material.md#import-new-key-material)且其处于 “**待轮换” 状态时，“**立即**轮换**” 选项才可用。
**注意**  
对于多区域密钥，只能轮换主区域密钥。

1. 阅读并考虑有关密钥剩余按需轮换次数的警告和信息。您还将看到在轮换后将变为当前的密钥材料的 ID、描述和过期时间等信息。如果您决定不继续按需轮换，请选择**取消**。

1. 选择**轮换密钥**以确认按需轮换。
**注意**  
按需轮换会受到与其他 AWS KMS 管理操作相同的最终一致性影响。新的密钥材料在整个 AWS KMS中可用之前可能会有一些延迟。控制台顶部的横幅会在按需轮换完成后通知您。

## 启动按需密钥轮换 (AWS KMS API)
<a name="rotate-on-demand-api"></a>

您可以使用 [AWS Key Management Service （AWS KMS）API](https://docs.aws.amazon.com/kms/latest/APIReference/) 启动按需密钥轮换，并查看任何客户托管密钥的当前轮换状态。此示例使用 [AWS Command Line Interface （AWS CLI）](https://aws.amazon.com/cli/)，但您可以使用任何受支持的编程语言。

该[RotateKeyOnDemand](https://docs.aws.amazon.com/kms/latest/APIReference/API_RotateKeyOnDemand.html)操作会立即启动指定的 KMS 密钥的按需密钥轮换。要在这些操作中标识 KMS 密钥，请使用其[密钥 ID](concepts.md#key-id-key-id) 或[密钥 ARN](concepts.md#key-id-key-ARN)。

以下示例对指定的对称加密 KMS 密钥启动按需密钥轮换，并使用该[GetKeyRotationStatus](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetKeyRotationStatus.html)操作验证按需轮换是否正在进行中。`kms:GetKeyRotationStatus` 响应中的 `OnDemandRotationStartDate` 标识了正在进行的按需轮换启动的日期和时间。在此例中，该 KMS 密钥还启用了自动轮换，轮换周期为 365 天。

```
$ aws kms rotate-key-on-demand --key-id {{1234abcd-12ab-34cd-56ef-1234567890ab}}
{
    "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab"    
}

$ aws kms get-key-rotation-status --key-id {{1234abcd-12ab-34cd-56ef-1234567890ab}}
{
    "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab",
    "KeyRotationEnabled": true,
    "NextRotationDate": "2024-03-14T18:14:33.587000+00:00",
    "OnDemandRotationStartDate": "2024-02-24T18:44:48.587000+00:00"
    "RotationPeriodInDays": 365    
}
```

如果 KMS 密钥不支持自动轮换或未启用自动轮换，则 `kms:GetKeyRotationStatus` 响应的字段数将比下例所示的要少：

```
$ aws kms rotate-key-on-demand --key-id {{1234abcd-12ab-34cd-56ef-1234567890ab}}
{
    "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab"
}

$ aws kms get-key-rotation-status --key-id {{1234abcd-12ab-34cd-56ef-1234567890ab}}
{
    "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab",
    "KeyRotationEnabled": false,
    "OnDemandRotationStartDate": "2024-02-24T18:44:48.587000+00:00"
}
```