如何在 AWS KMS 中手动轮换客户管理的密钥?

2 分钟阅读
0

AWS Key Management Service (AWS KMS) 会每年自动轮换 AWS KMS 密钥。如何在每年自动轮换 AWS KMS 密钥之前手动轮换它们?

解决方法

使用手动密钥轮换创建新的 AWS KMS 密钥,以替换当前密钥。

此示例演示了如何使用您要轮换到的新密钥轮换当前的 AWS KMS 密钥。

注意:如果您在运行 AWS 命令行界面(AWS CLI)命令时遇到错误,请确保您使用的是最新版本的 AWS CLI

1.    创建一个名为 application-current 的别名,然后将它附到现有的 AWS KMS 密钥上:

acbc32cf8f6f:~ $$ aws kms create-alias --alias-name alias/application-current --target-key-id 0987dcba-09fe-87dc-65ba-ab0987654321
acbc32cf8f6f:~ $$ aws kms list-aliases --output text | grep application
ALIASES    arn:aws:kms:eu-west-1:123456789012:alias/application-current    alias/application-current    0987dcba-09fe-87dc-65ba-ab0987654321

2.    创建一个名为 application-20180606 的新别名,将轮换日期包含在要轮换的 AWS KMS 密钥的名称中。在以下示例中,轮换日期为 2018-06-06。AWS KMS 密钥有两个别名:

acbc32cf8f6f:~ $$ aws kms create-alias --alias-name alias/application-20180606 --target-key-id 0987dcba-09fe-87dc-65ba-ab0987654321
acbc32cf8f6f:~ $$ aws kms list-aliases --output text | grep application
ALIASES    arn:aws:kms:eu-west-1:123456789012:alias/application-20180606    alias/application-20180606    0987dcba-09fe-87dc-65ba-ab0987654321
ALIASES    arn:aws:kms:eu-west-1:123456789012:alias/application-current     alias/application-current     0987dcba-09fe-87dc-65ba-ab0987654321

3.    创建类似于以下形式的新 AWS KMS 密钥

acbc32cf8f6f:~ $$ aws kms create-key
{
    "KeyMetadata": {
        "Origin": "AWS_KMS",
        "KeyId": "9bf76697-5b41-4caf-9fe1-e23bbe20f858",
        "Description": "",
        "KeyManager": "CUSTOMER",
        "Enabled": true,
        "KeyUsage": "ENCRYPT_DECRYPT",
        "KeyState": "Enabled",
        "CreationDate": 1528289057.531,
        "Arn": "arn:aws:kms:eu-west-1:123456789012:key/9bf76697-5b41-4caf-9fe1-e23bbe20f858",
        "AWSAccountId": "123456789012"
    }
}

4.    将 application-current 别名关联到新的 AWS KMS 密钥:请务必使用步骤 3 中新创建的密钥 ID 来替换 NEW_KMS_KEY_ID

$$ aws kms update-alias --alias-name alias/application-current --target-key-id NEW_KMS_KEY_ID

5.    这时您拥有了新密钥和当前的 AWS KMS 密钥。使用 application-current 密钥来加密数据。AWS KMS 会在解密数据时自动解析 AWS KMS 密钥:

acbc32cf8f6f:~ $$ aws kms list-aliases --output text | grep application
ALIASES    arn:aws:kms:eu-west-1:123456789012:alias/application-20180606    alias/application-20180606    0987dcba-09fe-87dc-65ba-ab0987654321
ALIASES    arn:aws:kms:eu-west-1:123456789012:alias/application-current     alias/application-current     9b5d79d7-f04c-4b30-baf1-deed52a7cc97

**重要提示:**将当前 AWS KMS 密钥作为备份保存,以跟踪密钥轮换的发生时间或进行回滚更改。

**注意:**使用现有密钥的用户必须将该策略复制到 application-current 密钥。

6.    登录 AWS KMS控制台并选择客户托管密钥

7.    在别名中,选择当前密钥。

8.    在 Key policy(密钥策略)中,选择 Switch to policy view(切换到策略视图)。

9.    复制当前策略,然后选择 Customer managed keys(客户托管密钥)。

10.    在 Alias(别名)中,选择 application-current

11.    在 Key Policy(密钥策略)中,选择 Edit(编辑),删除 application-current 策略,粘贴当前策略,然后选择 Save Changes(保存更改)。


相关信息

如何将密钥导入 AWS Key Management Service?

相关视频

AWS 官方
AWS 官方已更新 1 年前