创建多区域副本密钥 - AWS Key Management Service

创建多区域副本密钥

您可以在 AWS KMS 控制台中、使用 ReplicateKey 操作,或使用 AWS::KMS::ReplicaKey CloudFormation 模板创建多区域副本密钥。您无法使用 CreateKey 操作创建副本密钥。

您可以使用这些步骤复制任何多区域主密钥,包括对称加密 KMS 密钥非对称 KMS 密钥,或者 HMAC KMS 密钥

此操作完成后,新的副本密钥具有暂时性的密钥状态 Creating。在创建新副本密钥的过程完成几秒后,此密钥状态将变为 Enabled(如果您使用导入的密钥材料创建多区域密钥,则变为 PendingImport)。当密钥状态为 Creating 时,您可以管理该密钥,但不能将其用于加密操作。如果要以编程方式创建和使用副本密钥,请重试 KMSInvalidStateException 或调用 DescribeKey 来检查其 KeyState 值,然后再使用它。

如果误删了副本密钥,您可以使用此过程来重新创建副本密钥。如果您在同一区域中复制相同的主密钥,则您创建的新副本密钥将具有与原始副本密钥相同的共享属性

重要

不要在别名、描述或标签中包含机密或敏感信息。这些字段可能以纯文本形式出现在 CloudTrail 日志和其他输出中。

要使用 AWS CloudFormation 模板来创建副本密钥,请参阅 AWS CloudFormation 用户指南中的 AWS::KMS::ReplicaKey

步骤 1:选择副本区域

您通常会基于您的业务模式和法规要求选择将多区域密钥复制到 AWS 区域 中。例如,您可以将密钥复制到保留资源的区域中。或者,为了符合灾难恢复要求,您可以将密钥复制到地理位置偏远的区域中。

以下是对副本区域的 AWS KMS 要求。如果您选择的区域不符合这些要求,则尝试复制密钥失败。

  • 每个区域一个相关的多区域密钥 — 您不能在与主密钥相同的区域中创建副本密钥,也不能在与主密钥的另一个副本相同的区域中创建副本密钥。

    如果您尝试在已具有该主密钥副本的区域中复制主密钥,则尝试会失败。如果区域中的当前副本密钥处于 PendingDeletion 密钥状态,您可以取消副本密钥删除或者等待副本密钥被删除。

  • 同一区域中的多个不相关的多区域密钥 — 您可以在同一个区域中拥有多个不相关的多区域密钥。例如,您可以在 us-east-1 区域中拥有两个多区域主密钥。每个主密钥在 us-west-2 区域中都可以有一个副本密钥。

  • 同一分区中的区域 — 副本密钥区域必须位于与主密钥区域相同的 AWS 分区中。

  • 必须启用区域 — 如果某个区域默认已禁用,则无法在该区域中创建任何资源,直到为您的 AWS 账户 启用该区域为止。

步骤 2:创建副本密钥

注意

创建副本密钥时,请谨慎考虑您选择用于管理和使用副本密钥的 IAM 用户和角色。IAM policy 可以向其他 IAM 用户和角色授予管理 KMS 密钥的权限。

IAM 最佳实践不鼓励使用具有长期凭证的 IAM 用户。而应尽可能使用提供临时凭证的 IAM 角色。有关更多信息,请参阅《IAM 用户指南》中的 IAM 安全最佳实践

在 AWS KMS 控制台中,您可以在同一操作中创建多区域主密钥的一个或多个副本。

此过程类似于在控制台中创建标准的单区域 KMS 密钥。但是,由于副本密钥基于主密钥,因此您不能为共享属性选择值,例如密钥规范(对称或非对称)、密钥用法或密钥来源。

您可以指定不共享的属性,包括别名、标签、描述和密钥策略。为方便起见,控制台会显示主密钥的当前属性值,但您可以更改它们。即使您保留主密钥值,AWS KMS 也不会保持这些值同步。

重要

不要在别名、描述或标签中包含机密或敏感信息。这些字段可能以纯文本形式出现在 CloudTrail 日志和其他输出中。

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

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

  3. 在导航窗格中,选择客户托管密钥

  4. 选择多区域主密钥的密钥 ID 或别名。此操作将打开 KMS 密钥的密钥详细信息页面。

    要识别多区域主密钥,请使用右上角的工具图标将 Regionality(区域性)列添加到表中。

  5. 选择 Regionality(区域性)选项卡。

  6. Related multi-Region keys(相关的多区域密钥)部分中,选择 Create new replica keys(创建新的副本密钥)。

    Related multi-Region keys(相关的多区域密钥)部分显示主密钥及其副本密钥的区域。您可以使用此显示来帮助您为新副本密钥选择区域。

  7. 选择一个或多个 AWS 区域。此过程将在您选择的每个区域中创建一个副本密钥。

    菜单仅包含与主密钥处于相同 AWS 分区中的区域。已具有相关多区域密钥的区域显示出来,但不可选。您可能没有权限将密钥复制到菜单上的所有区域。

    完成选择 Regions(区域)后,关闭菜单。将显示您选择的区域。要取消复制到某个区域,请选择 Region(区域)名称旁边的 X

  8. 为副本密钥键入别名

    控制台将显示主密钥的当前别名之一,但您可以对其进行更改。您可以为多区域主密钥及其副本密钥指定相同的别名或不同的别名。别名不是多区域密钥的共享属性。AWS KMS 不同步多区域密钥的别名。

    添加、删除或更新别名可以允许或拒绝对 KMS 密钥的权限。有关详细信息,请参阅 AWS KMS 中的 ABAC使用别名控制对 KMS 密钥的访问

  9. (可选)键入副本密钥的描述。

    控制台将显示主密钥的当前描述,但您可以对其进行更改。描述不是多区域密钥的共享属性。您可以为多区域主密钥及其副本密钥指定相同的描述或不同的描述。AWS KMS 不同步多区域密钥的密钥描述。

  10. (可选) 键入标签键和一个可选标签值。要为副本密钥分配多个标签,请选择 Add tag(添加标签)。

    控制台将显示当前附加到主密钥的标签,但您可以更改它们。标签不是多区域密钥的共享属性。您可以为多区域主密钥及其副本密钥指定相同的标签或不同的标签。AWS KMS 不同步多区域密钥的标签。

    标记或取消标记 KMS 密钥可以允许或拒绝对 KMS 密钥的权限。有关详细信息,请参阅 AWS KMS 中的 ABAC使用标签控制对 KMS 密钥的访问

  11. 选择可管理副本密钥的 IAM 用户和角色。

    备注
    • 如果您在创建多区域主密钥时修改了默认密钥策略,则控制台将不会在创建副本密钥期间提示您选择密钥管理员或密钥用户(第 11-15 步)。在这种情况下,您需要通过在编辑密钥策略步骤(第 17 步)中选择编辑,手动将密钥管理员和用户所需的权限添加到密钥策略中。

    • 此步骤将开始为副本密钥创建密钥策略的过程。控制台将显示主密钥的当前密钥策略,但您可以对其进行更改。密钥策略不是多区域密钥的共享属性。您可以为多区域主密钥及其副本提供相同的密钥策略或不同的密钥策略。AWS KMS 不同步密钥策略。您可以随时更改任何 KMS 密钥的密钥策略。

    • AWS KMS 控制台会在语句标识符 "Allow access for Key Administrators" 下将密钥管理员添加到密钥策略中。如果修改此语句标识符,则可能会影响控制台显示您对该语句所做修改的方式。

  12. (可选)要阻止选定 IAM 用户和角色删除此 KMS 密钥,请在页面底部的 Key deletion(密钥删除)部分中,清除 Allow key administrators to delete this key(允许密钥管理员删除此密钥)复选框。

  13. 选择下一步

  14. 选择可将 KMS 密钥用于加密操作的 IAM 用户和角色。

    注意

    AWS KMS 控制台会在语句标识符 "Allow use of the key""Allow attachment of persistent resources" 下将密钥管理员添加到密钥策略中。如果修改这些语句标识符,则可能会影响控制台显示您对该语句所做修改的方式。

  15. (可选)您可以允许其他 AWS 账户 将此 KMS 密钥用于加密操作。为此,请在页面底部的其他 AWS 账户部分中选择添加其他 AWS 账户,然后输入外部账户的 AWS 账户 标识号。要添加多个外部账户,请重复此步骤。

    注意

    要允许外部账户中的委托人使用 KMS 密钥,外部账户的管理员必须创建提供这些权限的 IAM policy。有关更多信息,请参阅 允许其他账户中的用户使用 KMS 密钥

  16. 选择下一步

  17. 检查密钥的密钥策略语句。要对密钥策略进行更改,请选择编辑

  18. 选择下一步

  19. 检视您选择的密钥设置。您仍然可以返回并更改所有设置。

  20. 选择完成以创建多区域副本密钥。

要创建多区域副本密钥,请使用 ReplicateKey 操作。您无法使用 CreateKey 操作创建副本密钥。此操作一次创建一个副本密钥。您指定的区域必须符合副本密钥的区域要求

当您使用 ReplicateKey 操作时,无需为多区域密钥的任何共享属性指定值。共享属性值从主密钥复制并保持同步。但是,您可以为未共享的属性指定值。否则,AWS KMS 将为 KMS 密钥应用标准默认值,而不是主密钥的值。

注意

如果您还没有为 DescriptionKeyPolicyTags 参数指定值,AWS KMS 将创建带空字符串描述的副本密钥、默认的密钥政策,不带标签。

不要在 DescriptionTags 字段中包含机密或敏感信息。这些字段可能以纯文本形式出现在 CloudTrail 日志和其他输出中。

例如,以下命令在亚太地区(悉尼)区域 (ap-southeast-2) 中创建一个多区域副本密钥。此副本密钥基于美国东部(弗吉尼亚北部)区域 (us-east-1) 中的主密钥建模,它由 KeyId 参数的值进行标识。此示例接受所有其他属性的默认值,包括密钥策略。

响应描述了新的副本密钥。它包含共享属性的字段,例如 KeyIdKeySpecKeyUsage 和密钥材料来源 (Origin)。它还包括独立于主密钥的属性,例如 Description、密钥策略 (ReplicaKeyPolicy) 和标签 (ReplicaTags)。

响应还包括主密钥的密钥 ARN 和区域及其所有副本密钥,包括刚刚在 ap-southeast-2 区域中创建的密钥。在此示例中,ReplicaKey 元素表明此主密钥已在欧洲(爱尔兰)区域 (eu-west-1) 复制。

$ aws kms replicate-key \ --key-id arn:aws:kms:us-east-1:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab \ --replica-region ap-southeast-2 { "ReplicaKeyMetadata": { "MultiRegion": true, "MultiRegionConfiguration": { "MultiRegionKeyType": "REPLICA", "PrimaryKey": { "Arn": "arn:aws:kms:us-east-1:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab", "Region": "us-east-1" }, "ReplicaKeys": [ { "Arn": "arn:aws:kms:ap-southeast-2:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab", "Region": "ap-southeast-2" }, { "Arn": "arn:aws:kms:eu-west-1:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab", "Region": "eu-west-1" } ] }, "AWSAccountId": "111122223333", "Arn": "arn:aws:kms:ap-southeast-2:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab", "CreationDate": 1607472987.918, "Description": "", "Enabled": true, "KeyId": "mrk-1234abcd12ab34cd56ef1234567890ab", "KeyManager": "CUSTOMER", "KeySpec": "SYMMETRIC_DEFAULT", "KeyState": "Enabled", "KeyUsage": "ENCRYPT_DECRYPT", "Origin": "AWS_KMS", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ] }, "ReplicaKeyPolicy": "{\n \"Version\" : \"2012-10-17\",\n \"Id\" : \"key-default-1\",..., "ReplicaTags": [] }