

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 控制對多區域金鑰的存取
<a name="multi-region-keys-auth"></a>

您可以在合規、災難復原和備份案例中使用多區域金鑰，而單一區域金鑰會比較複雜。不過，由於多區域金鑰的安全屬性與單一區域金鑰的安全屬性有很大的不同，所以建議在授權建立、管理和使用多區域金鑰時謹慎使用。

**注意**  
在 `Resource` 欄位包含萬用字元的現有 IAM 政策陳述式，現在會同時套用至單一區域和多區域金鑰。若要將其限制為單一區域 KMS 金鑰或多區域金鑰，請使用 [kms:MultiRegion](conditions-kms.md#conditions-kms-multiregion) 條件索引鍵。

使用您的授權工具來防止在任何單一區域足夠的情況下建立和使用多區域金鑰。允許主體僅將多區域金鑰複寫至需要它們 AWS 區域 的 。只將多區域金鑰的許可授予需要這些金鑰的委託人，並且僅為需要這些金鑰的任務授予。

您可以使用金鑰政策、IAM 政策和授權，允許 IAM 主體管理和使用您 中的多區域金鑰 AWS 帳戶。每個多區域金鑰都是具有唯一金鑰 ARN 和金鑰政策的獨立資源。您需要為每個金鑰建立和維護金鑰政策，並確保新的和現有的 IAM 政策會實作您的授權策略。

若要支援多區域金鑰， 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 政策時，請考慮下列政策。
+ **金鑰政策** – 每個多區域金鑰都是獨立的 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 政策** – 與所有 KMS 金鑰一樣，您可以使用 IAM 政策來控制多區域金鑰的存取，僅當[金鑰政策允許](key-policy-default.md#key-policy-default-allow-root-enable-iam)時。根據 AWS 區域 預設，[IAM 政策](iam-policies.md)適用於所有 。不過，您可以使用條件索引鍵，例如 [aws:RequestedRegion](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requestedregion)，以限制特定區域的許可。

  若要建立主要金鑰和複本金鑰，委託人必須在 IAM 政策中具有 `kms:CreateKey` 許可，該許可會套用至建立金鑰的區域。
+ **授予** - AWS KMS [授予](grants.md)是區域性的。每個授予都允許一個 KMS 金鑰的許可。您可以使用授予來允許多區域主要金鑰或複本金鑰的許可。但是，您無法使用單一授予來允許多個 KMS 金鑰的許可，即使這些金鑰是相關的多區域金鑰。
+ **金鑰 ARN** – 每個多區域金鑰都有[唯一金鑰 ARN](mrk-how-it-works.md)。相關多區域金鑰的金鑰 ARN 具有相同的分割區、帳戶和金鑰 ID，但區域不同。

  若要將 IAM 政策陳述式套用至特定的多區域金鑰，請使用其金鑰 ARN 或包含區域的金鑰 ARN 模式。若要將 IAM 政策陳述式套用到所有相關的多區域金鑰，請在 ARN 的區域元素中使用萬用字元 (\$1)，如下列範例所示。

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

  若要將政策陳述式套用至 中的所有多區域金鑰 AWS 帳戶，您可以使用 [kms:MultiRegion](conditions-kms.md#conditions-kms-multiregion) 政策條件或包含獨特`mrk-`字首的金鑰 ID 模式。
+ **服務連結角色** – 建立多區域主要金鑰的委託人必須具有 [iam:CreateServiceLinkedRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceLinkedRole.html) 許可。

  若要同步相關多區域金鑰的共用屬性， AWS KMS 會擔任 IAM [服務連結角色](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 政策在主要金鑰的區域中有效。擁有這些許可的委託人可以建立單一區域和多區域金鑰，除非您限制其許可。

`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":"*"
  }
}
```

------

若要允許或拒絕建立多區域主要金鑰的許可，請使用 [kms:MultiRegion](conditions-kms.md#conditions-kms-multiregion) 條件索引鍵。有效值為 `true` (多區域金鑰) 或 `false` (單一區域金鑰)。例如，下列 IAM 政策陳述式會使用具有 `kms:MultiRegion` 條件索引鍵的 `Deny` 動作，以防止委託人建立多區域金鑰。

------
#### [ 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)，則委託人需要下列許可：
+  主要金鑰之金鑰政策中的 [kms:ReplicateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReplicateKey.html) 許可。
+ 在複本金鑰區域中有效之 IAM 政策中的 [kms:CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) 許可。

允許這些許可時請小心謹慎。其允許委託人建立 KMS 金鑰，以及授權其使用的金鑰政策。`kms:ReplicateKey` 許可還授權在 AWS KMS範圍內跨區域邊界傳輸金鑰材料。

若要限制可複寫多區域金鑰 AWS 區域 的 ，請使用 [kms:ReplicaRegion](conditions-kms.md#conditions-kms-replica-region) 條件金鑰。它只限制 `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 政策中提供這些許可。
+ 主要金鑰上的 `kms:UpdatePrimaryRegion`。此許可必須在主要金鑰區域有效。
+ 複本金鑰上的 `kms:UpdatePrimaryRegion`。此許可必須在複本金鑰區域中生效。

例如，下列金鑰政策會為可以擔任管理員角色的使用者提供許可，以更新 KMS 金鑰的主要區域。此 KMS 金鑰可以是此操作中的主要金鑰或複本金鑰。

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

若要限制可託管主索引鍵 AWS 區域 的 ，請使用 [kms: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 金鑰之許可的委託人也具有使用和管理多區域金鑰的許可。不過，您可以使用 [kms:MultiRegion](conditions-kms.md#conditions-kms-multiregion) 條件索引鍵，只允許單一區域索引鍵或僅允許多區域索引鍵。或者使用 [kms:MultiRegionKeyType](conditions-kms.md#conditions-kms-multiregion-key-type) 條件索引鍵，只允許多區域主要金鑰或只允許複本金鑰。兩個條件索引鍵都會控制對 [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) 操作和使用現有 KMS 金鑰之任何操作 (例如，[Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) 或 [EnableKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_EnableKey.html)) 的存取。

下列範例 IAM 政策陳述式使用 `kms:MultiRegion` 條件索引鍵，以防止委託人使用或管理任何多區域金鑰。

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

此範例 IAM 政策陳述式使用 `kms:MultiRegionKeyType` 條件，以允許委託人排程和取消金鑰刪除，但僅限於多區域複本金鑰。

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