

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

# 控制对多区域密钥的访问
<a name="multi-region-keys-auth"></a>

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

**注意**  
在 `Resource` 字段中包通配符的现有 IAM policy 语句现在同时应用于单区域密钥和多区域密钥。要将其限制为单区域 KMS 密钥或多区域密钥，请使用 k [ms: MultiRegion](conditions-kms.md#conditions-kms-multiregion) 条件密钥。

使用您的授权工具防止在单区域足够的任何情况下创建和使用多区域密钥。仅允许委托人将多区域密钥复制到需要他们的密钥 AWS 区域 中。仅对需要多区域密钥的主体授予权限，并且仅对需要多区域密钥的任务授予权限。

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

要支持多区域密钥，请 AWS KMS 使用 IAM 服务关联角色。这个角色为 AWS KMS 授予同步[共享属性](multi-region-keys-overview.md#mrk-sync-properties)所需的权限。有关更多信息，请参阅 [授权同步多 AWS KMS 区域密钥](multi-region-auth-slr.md)。

**Topics**
+ [多区域密钥的授权基础知识](#multi-region-auth-about)
+ [授权多区域密钥管理员和用户](#multi-region-auth-users)

## 多区域密钥的授权基础知识
<a name="multi-region-auth-about"></a>

为多区域密钥设计密钥政策和 IAM policy 时，请考虑以下原则。
+ **密钥策略** — 每个多区域密钥都是一个独立的 KMS 密钥资源，具有自己的[密钥策略](key-policies.md)。您可以将相同或不同的密钥策略应用于相关多区域密钥集中的每个密钥。密钥策略*不是*多区域密钥的[共享属性](multi-region-keys-overview.md#mrk-sync-properties)。 AWS KMS 不会在相关的多区域密钥之间复制或同步密钥策略。

  在 AWS KMS 控制台中创建副本密钥时，为了方便起见，控制台会显示主密钥的当前密钥策略。您可以使用此密钥策略、对其进行编辑或删除和替换。但是，即使您接受未更改的主密钥策略，也 AWS KMS 不会同步这些策略。例如，如果您更改主密钥的密钥策略，则副本密钥的密钥策略将保持不变。
+ **默认密钥策略**-使用[CreateKey](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateKey.html)和`ReplicateKey`操作创建多区域密钥时，除非您在请求中指定[密钥策略，否则将应用默认](key-policy-default.md)密钥策略。这与应用于单区域密钥的默认密钥策略相同。
+ **IAM policy** — 与所有 KMS 密钥一样，只要当[密钥政策允许](key-policy-default.md#key-policy-default-allow-root-enable-iam)时，您才可以使用 IAM policy 来控制对多区域密钥的访问。默认情况下，[IAM 策略](iam-policies.md)适用于所有 AWS 区域 人。但是，您可以使用条件键（例如 a [ws: RequestedRegion](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requestedregion)）来限制对特定区域的权限。

  要创建主密钥和副本密钥，委托人必须对应用于创建密钥的区域的 IAM policy 具有 `kms:CreateKey` 权限。
+ **补助金** — AWS KMS [补助金](grants.md)是区域性的。每个授权都允许对一个 KMS 密钥的权限。您可以使用授权来允许对多区域主密钥或副本密钥的权限。但是，您不能使用单个授权来允许对多个 KMS 密钥的权限，即使它们是相关的多区域密钥。
+ **密钥 ARN** — 每个多区域密钥都有一个[唯一的密钥 ARN](mrk-how-it-works.md)。相关的多区域密钥 ARNs 的密钥具有相同的分区、账户和密钥 ID，但区域不同。

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

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

  要将策略声明应用于您的所有多区域密钥 AWS 账户，您可以使用 k [ms: MultiRegion](conditions-kms.md#conditions-kms-multiregion) 策略条件或包含独特`mrk-`前缀的密钥 ID 模式。
+ **服务相关角色**-创建多区域主键的委托人必须拥有 iam: [权限](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceLinkedRole.html)。CreateServiceLinkedRole

  要同步相关多区域密钥的共享属性，请担任 I AWS KMS AM [服务相关](multi-region-auth-slr.md)角色。 AWS KMS 每当您创建多区域主键 AWS 账户 时，都会在中创建服务相关角色。（如果角色存在， AWS KMS 将重新创建它，这没有任何有害影响。） 该角色在所有区域中都有效。 AWS KMS [要允许创建（或重新创建）服务相关角色，创建多区域主键的委托人必须拥有 iam: 权限。CreateServiceLinkedRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceLinkedRole.html)

## 授权多区域密钥管理员和用户
<a name="multi-region-auth-users"></a>

创建和管理多区域密钥的委托人需要在主区域和副本区域中具有以下权限：
+ `kms:CreateKey`
+ `kms:ReplicateKey`
+ `kms:UpdatePrimaryRegion`
+ `iam:CreateServiceLinkedRole`

### 创建主密钥
<a name="mrk-auth-create-primary"></a>

要[创建多区域主密钥](create-primary-keys.md)，委托人需要在主[密钥所在区域有效的 IAM 策略中的 kms: CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) [和 iam: CreateServiceLinkedRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceLinkedRole.html) 权限。具有这些权限的委托人可以创建单区域和多区域密钥，除非您限制其权限。

该`iam:CreateServiceLinkedRole`权限允许 AWS KMS 创建[**AWSServiceRoleForKeyManagementServiceMultiRegionKeys**角色](multi-region-auth-slr.md)以同步相关多区域密钥的[共享属性](multi-region-keys-overview.md#mrk-sync-properties)。

例如，此 IAM 策略将允许主体创建多区域密钥，为这些密钥附加策略，以及为多区域密钥创建服务相关角色。

------
#### [ JSON ]

****  

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

------

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

------
#### [ JSON ]

****  

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

------

### 复制密钥
<a name="mrk-auth-replicate"></a>

要[创建多区域副本密钥](#mrk-auth-replicate)，委托人需要以下权限：
+  [km ReplicateKey s：](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReplicateKey.html)主密钥的密钥策略中的权限。
+ [kms：](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)在副本密钥区域有效的 IAM 策略中的CreateKey权限。

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

要限制可以复制多区域密钥的范围，请使用 k [ms: ReplicaRegion](conditions-kms.md#conditions-kms-replica-region) 条件密钥。 AWS 区域 它只限制 `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"
      ]
    }
  }
}
```

### 更新主区域
<a name="mrk-auth-update"></a>

授权的委托人可以将副本密钥转换为主密钥，从而将以前的主密钥更改为副本密钥。该操作称为[更新主区域](multi-region-update.md)。要更新主区域，委托人需要两个区域的 [kms: UpdatePrimaryRegion](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdatePrimaryRegion.html) 权限。您可以在密钥政策或 IAM policy 中提供这些权限。
+ 主密钥上的 `kms:UpdatePrimaryRegion`。此权限必须在主密钥区域中有效。
+ 副本密钥上的 `kms:UpdatePrimaryRegion`。此权限必须在副本密钥区域中有效。

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

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

要限制 AWS 区域 可以托管主密钥的，请使用 k [ms: PrimaryRegion](conditions-kms.md#conditions-kms-primary-region) 条件密钥。例如，以下 IAM 政策声明允许委托人更新中多区域密钥的主区域 AWS 账户，但前提是新的主区域是指定区域之一。

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

### 使用和管理多区域密钥
<a name="mrk-auth-using"></a>

默认情况下，有权在 AWS 账户 和区域中使用和管理 KMS 密钥的委托人也有权使用和管理多区域密钥。但是，您可以使用 k [ms: MultiRegion](conditions-kms.md#conditions-kms-multiregion) 条件密钥来仅允许单区域密钥或仅允许多区域密钥。或者使用 k [ms: MultiRegionKeyType](conditions-kms.md#conditions-kms-multiregion-key-type) 条件密钥仅允许多区域主键或仅允许副本密钥。两个条件密钥都控制对[CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)操作和使用现有 KMS 密钥的任何操作（例如 Enc [rypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) 或）的访问权限[EnableKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_EnableKey.html)。

以下示例 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"
  }
}
```