控制对多区域密钥的访问 - Amazon Key Management Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

控制对多区域密钥的访问

您可以在合规性、灾难恢复和备份场景中使用多区域密钥,这些场景在使用单区域密钥的情况下更为复杂。但是,由于多区域密钥的安全属性与单区域密钥的安全属性明显不同,我们建议在授权创建、管理和使用多区域密钥时务必谨慎。

注意

Resource 字段中包通配符的现有 IAM policy 语句现在同时应用于单区域密钥和多区域密钥。要将其限制为单区域 KMS 密钥或多区域密钥,请使用 k ms: MultiRegion 条件密钥。

使用您的授权工具防止在单区域足够的任何情况下创建和使用多区域密钥。允许委托人仅将多区域密钥复制到需要它们的 Amazon Web Services 区域。仅向需要多区域密钥的委托人授予多区域密钥权限,并且仅为需要它们的任务授予其权限。

您可以使用密钥政策、IAM policy 和授权来允许 IAM 委托人在您的 Amazon Web Services 账户 中管理和使用多区域密钥。每个多区域密钥都是一个独立的资源,具有唯一的密钥 ARN 和密钥策略。您需要为每个密钥建立和维护密钥政策,并确保新的和现有的 IAM policy 实施您的授权策略。

多区域密钥的授权基础知识

为多区域密钥设计密钥政策和 IAM policy 时,请考虑以下原则。

  • 密钥策略 — 每个多区域密钥都是一个独立的 KMS 密钥资源,具有自己的密钥策略。您可以将相同或不同的密钥策略应用于相关多区域密钥集中的每个密钥。密钥策略不是多区域密钥的共享属性。Amazon KMS 不会在相关的多区域密钥之间复制或同步密钥策略。

    当您在 Amazon KMS 控制台中创建副本密钥时,为方便起见,控制台将显示主密钥的当前密钥策略。您可以使用此密钥策略、对其进行编辑或删除和替换。但是,即使您接受主密钥策略不变,Amazon KMS 也不会同步策略。例如,如果您更改主密钥的密钥策略,则副本密钥的密钥策略将保持不变。

  • 默认密钥策略-使用CreateKeyReplicateKey操作创建多区域密钥时,除非您在请求中指定密钥策略,否则将应用默认密钥策略。这与应用于单区域密钥的默认密钥策略相同。

  • IAM policy — 与所有 KMS 密钥一样,只要当密钥政策允许时,您才可以使用 IAM policy 来控制对多区域密钥的访问。IAM policy 在默认情况下适用于所有 Amazon Web Services 区域。但是,您可以使用条件键(例如 a ws: RequestedRegion)来限制对特定区域的权限。

    要创建主密钥和副本密钥,委托人必须对应用于创建密钥的区域的 IAM policy 具有 kms:CreateKey 权限。

  • 授权 — Amazon KMS 授权是区域性的。每个授权都允许对一个 KMS 密钥的权限。您可以使用授权来允许对多区域主密钥或副本密钥的权限。但是,您不能使用单个授权来允许对多个 KMS 密钥的权限,即使它们是相关的多区域密钥。

  • 密钥 ARN — 每个多区域密钥都有一个唯一的密钥 ARN。相关多区域密钥的密钥 ARN 具有相同的分区、账户和密钥 ID,但区域不同。

    要将 IAM policy 语句应用于特定的多区域密钥,请使用其密钥 ARN 或包含该区域的密钥 ARN 模式。要将 IAM policy 语句应用于所有相关多区域密钥,请在 ARN 的区域元素中使用通配符 (*),如下例所示。

    { "Effect": "Allow", "Action": [ "kms:Describe*", "kms:List*" ], "Resource": { "arn:aws:kms:*::111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab" } }

    要将策略声明应用于您的所有多区域密钥Amazon Web Services 账户,您可以使用 k ms: MultiRegion 策略条件或包含独特mrk-前缀的密钥 ID 模式。

  • 服务相关角色-创建多区域主键的委托人必须拥有 iam: 权限。CreateServiceLinkedRole

    为了同步相关多区域密钥的共享属性,Amazon KMS 会代入 IAM 服务相关角色。在您创建多区域主密钥的任何时候,Amazon KMS 都会在 Amazon Web Services 账户 中创建服务相关角色。(如果角色存在,Amazon KMS 将重新创建它,这没有任何有害影响。) 该角色在所有区域中都有效。Amazon KMS要允许创建(或重新创建)服务相关角色,创建多区域主键的委托人必须拥有 iam: 权限。CreateServiceLinkedRole

授权多区域密钥管理员和用户

创建和管理多区域密钥的委托人需要在主区域和副本区域中具有以下权限:

  • kms:CreateKey

  • kms:ReplicateKey

  • kms:UpdatePrimaryRegion

  • iam:CreateServiceLinkedRole

创建主密钥

创建多区域主密钥,委托人需要在主密钥所在区域有效的 IAM 策略中的 kms: CreateKey 和 iam: CreateServiceLinkedRole 权限。具有这些权限的委托人可以创建单区域和多区域密钥,除非您限制其权限。

iam:CreateServiceLinkedRole权限允许Amazon KMS创建AWSServiceRoleForKeyManagementServiceMultiRegionKeys角色以同步相关多区域密钥的共享属性

例如,此 IAM policy 允许委托人创建任何类型的 KMS 密钥。

{ "Version": "2012-10-17", "Statement":{ "Action": [ "kms:CreateKey", "iam:CreateServiceLinkedRole" ], "Effect":"Allow", "Resource":"*" } }

要允许或拒绝创建多区域主密钥的权限,请使用 k ms: MultiRegion 条件密钥。有效值为 true(多区域密钥)或 false(单区域密钥)。例如,以下 IAM policy 语句使用 Deny 操作与 kms:MultiRegion 条件键来防止委托人创建多区域密钥。

{ "Version": "2012-10-17", "Statement":{ "Action":"kms:CreateKey", "Effect":"Deny", "Resource":"*", "Condition": { "Bool": "kms:MultiRegion": true } } }

复制密钥

要创建多区域副本密钥,委托人需要以下权限:

  • km ReplicateKey s:主密钥的密钥策略中的权限。

  • kms:在副本密钥区域有效的 IAM 策略中的CreateKey权限。

允许这些权限时请谨慎。它们允许委托人创建 KMS 密钥和授权其使用的密钥策略。kms:ReplicateKey 权限还授权跨 Amazon KMS 内的区域边界传输密钥材料。

要限制可以复制多区域密钥的范围,请使用 k ms: ReplicaRegion 条件密钥。Amazon Web Services 区域它只限制 kms:ReplicateKey 权限。否则,会没有效果。例如,以下密钥策略允许委托人复制该主密钥,但仅限在指定区域中进行。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/Administrator" }, "Action": "kms:ReplicateKey", "Resource": "*", "Condition": { "StringEquals": { "kms:ReplicaRegion": [ "us-east-1", "eu-west-3", "ap-southeast-2" ] } } }

更新主区域

授权的委托人可以将副本密钥转换为主密钥,从而将以前的主密钥更改为副本密钥。该操作称为更新主区域。要更新主区域,委托人需要两个区域的 kms: UpdatePrimaryRegion 权限。您可以在密钥政策或 IAM policy 中提供这些权限。

  • 主密钥上的 kms:UpdatePrimaryRegion。此权限必须在主密钥区域中有效。

  • 副本密钥上的 kms:UpdatePrimaryRegion。此权限必须在副本密钥区域中有效。

例如,以下密钥策略向可以担任管理员角色的用户授予更新 KMS 密钥的主区域的权限。此 KMS 密钥可以是此操作中的主密钥或副本密钥。

{ "Effect": "Allow", "Resource": "*", "Principal": { "AWS": "arn:aws:iam::111122223333:role/Administrator" }, "Action": "kms:UpdatePrimaryRegion" }

要限制Amazon Web Services 区域可以托管主密钥的,请使用 k ms: PrimaryRegion 条件密钥。例如,以下 IAM policy 语句允许委托人在 Amazon Web Services 账户 中更新多区域密钥的主区域,但仅当新的主区域是指定区域之一时才可以。

{ "Effect": "Allow", "Action": "kms:UpdatePrimaryRegion", "Resource": { "arn:aws:kms:*:111122223333:key/*" }, "Condition": { "StringEquals": { "kms:PrimaryRegion": [ "us-west-2", "sa-east-1", "ap-southeast-1" ] } } }

使用和管理多区域密钥

默认情况下,有权在 Amazon Web Services 账户 和区域中使用和管理 KMS 密钥的委托人也有权使用和管理多区域密钥。但是,您可以使用 k ms: MultiRegion 条件密钥来仅允许单区域密钥或仅允许多区域密钥。或者使用 k ms: MultiRegionKeyType 条件密钥仅允许多区域主键或仅允许副本密钥。两个条件密钥都控制对CreateKey操作和使用现有 KMS 密钥的任何操作(例如 Enc rypt 或)的访问权限EnableKey

以下示例 IAM policy 语句使用 kms:MultiRegion 条件键,以防委托人使用或管理任何多区域密钥。

{ "Effect": "Deny", "Action": "kms:*", "Resource": "*", "Condition": { "Bool": "kms:MultiRegion": true } }

此示例 IAM policy 语句使用 kms:MultiRegionKeyType 条件,以允许委托人计划和取消删除密钥,但仅限于多区域副本密钥。

{ "Effect": "Allow", "Action": [ "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": { "arn:aws:kms:us-west-2:111122223333:key/*" }, "Condition": { "StringEquals": "kms:MultiRegionKeyType": "REPLICA" } }

授权 Amazon KMS 同步多区域密钥

为了支持多区域密钥、Amazon KMS 使用 IAM 服务相关角色。这个角色为 Amazon KMS 授予同步共享属性所需的权限。您可以在Amazon CloudTrail日志中查看记录Amazon KMS同步共享属性的SynchronizeMultiRegionKey CloudTrail 事件。

关于多区域密钥的服务相关角色

服务相关角色是一种 IAM 角色,该角色可向一个 Amazon 服务提供代表您调用其他 Amazon 服务的权限。该角色旨在使您能够更轻松地使用多项集成式 Amazon 服务的功能,而无需创建和维护复杂的 IAM policy。

对于多区域密钥,使用策略Amazon KMS创建AWSServiceRoleForKeyManagementServiceMultiRegionKeys服务相关角色。AWSKeyManagementServiceMultiRegionKeysServiceRolePolicy此策略将授予角色 kms:SynchronizeMultiRegionKey 权限,从而允许它同步多区域密钥的共享属性。

由于AWSServiceRoleForKeyManagementServiceMultiRegionKeys服务相关角色仅受信任mrk.kms.amazonaws.com,因此Amazon KMS只能担任此服务相关角色。此角色仅限于 Amazon KMS 同步多区域共享属性所需的操作。它不会向 Amazon KMS 提供任何额外权限。例如,Amazon KMS 无权创建、复制或删除任何 KMS 密钥。

有关 Amazon 服务如何使用服务相关角色的更多信息,请参阅 IAM 用户指南中的使用服务相关角色

创建服务相关角色

Amazon KMS如果您创建多区域密钥Amazon Web Services 账户时会自动在中创建AWSServiceRoleForKeyManagementServiceMultiRegionKeys服务相关角色(如果该角色尚不存在)。您无法直接创建或重新创建此服务相关角色。

编辑服务相关角色描述

您无法编辑AWSServiceRoleForKeyManagementServiceMultiRegionKeys服务相关角色中的角色名称或策略声明,但可以编辑角色描述。有关说明,请参阅 IAM 用户指南中的编辑服务相关角色

删除服务相关角色

Amazon KMS不会从您的中删除AWSServiceRoleForKeyManagementServiceMultiRegionKeys服务相关角色Amazon Web Services 账户,也无法将其删除。但是,除非您的Amazon Web Services 账户和区域中有多区域密钥,否则Amazon KMS不会代入该AWSServiceRoleForKeyManagementServiceMultiRegionKeys角色或使用其任何权限。