

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

# 檢查金鑰政策
<a name="determining-access-key-policy"></a>

[金鑰政策](key-policies.md)是控制對 KMS 金鑰之存取的主要方式。每個 KMS 金鑰只有一個金鑰政策。

當金鑰政策包含[預設金鑰政策](key-policy-default.md#key-policy-default-allow-root-enable-iam)時，金鑰政策可讓帳戶中的 IAM 管理員使用 IAM 政策控制 KMS 金鑰的存取。此外，如果金鑰政策授權[另一個 AWS 帳戶](key-policy-modifying-external-accounts.md) 使用 KMS 金鑰，則外部帳戶的 IAM 管理員可以使用 IAM 政策委派這些許可。請[檢查 IAM 政策](determining-access-iam-policies.md)，以判斷可存取 KMS 金鑰之主體的完整清單。

若要檢視 AWS KMS [客戶受管金鑰](concepts.md#customer-mgn-key)或[AWS 受管金鑰](concepts.md#aws-managed-key)帳戶中的金鑰政策，請使用 AWS KMS API 中的 AWS 管理主控台 或 [GetKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetKeyPolicy.html) 操作。若要檢視金鑰政策，您必須具有 KMS 金鑰的 `kms:GetKeyPolicy` 許可。如需檢視 KMS 金鑰之金鑰政策的說明，請參閱 [檢視金鑰政策](key-policy-viewing.md)。

檢查金鑰政策文件並記下在各政策陳述式 `Principal` 元素中指定的所有主體。在具有 `Allow`效果的政策陳述 AWS 帳戶 式中，IAM 使用者、IAM 角色和 `Principal`元素中的 可以存取此 KMS 金鑰。

**注意**  
除非採用[條件](policy-conditions.md)來限制金鑰政策，否則請勿在任何允許許可的金鑰政策陳述式將主體設為星號 (\$1)。除非另一個政策陳述式明確拒絕，否則星號會提供每個 AWS 帳戶 許可中的每個身分使用 KMS 金鑰。其他 中的使用者只要在自己的帳戶中擁有對應的許可， AWS 帳戶 就可以使用您的 KMS 金鑰。

以下範例使用[預設金鑰政策](key-policy-default.md)中的政策陳述式來示範如何執行此操作。

**Example 政策陳述式 1**  

```
{
  "Sid": "Enable IAM User Permissions",
  "Effect": "Allow",
  "Principal": {"AWS": "arn:aws:iam::111122223333:root"},
  "Action": "kms:*",
  "Resource": "*"
}
```
在政策陳述式 1 中， `arn:aws:iam::111122223333:root` 是參考 AWS 帳戶 111122223333 [AWS 的帳戶委託人](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-accounts)。(其不是帳戶根使用者。) 根據預設，當您使用 建立新的 KMS 金鑰，或以程式設計方式建立新的 KMS 金鑰，但不提供金鑰政策時 AWS 管理主控台，金鑰政策文件中會包含像這樣的政策陳述式。  
金鑰政策文件具有允許存取 的陳述式， AWS 帳戶 可讓[帳戶中的 IAM 政策允許存取 KMS 金鑰](key-policy-default.md#key-policy-default-allow-root-enable-iam)。這表示帳戶中的使用者和角色可能可以存取 KMS 金鑰，即使他們未在金鑰政策文件中被明確列為主體。請注意檢查 AWS 帳戶 所有列為主體的 中的所有 [IAM 政策](determining-access-iam-policies.md)，以判斷它們是否允許存取此 KMS 金鑰。

**Example 政策陳述式 2**  

```
{
  "Sid": "Allow access for Key Administrators",
  "Effect": "Allow",
  "Principal": {"AWS": "arn:aws:iam::111122223333:role/KMSKeyAdmins"},
  "Action": [
    "kms:Describe*",
    "kms:Put*",
    "kms:Create*",
    "kms:Update*",
    "kms:Enable*",
    "kms:Revoke*",
    "kms:List*",
    "kms:Disable*",
    "kms:Get*",
    "kms:Delete*",
    "kms:ScheduleKeyDeletion",
    "kms:CancelKeyDeletion"
  ],
  "Resource": "*"
}
```
在政策陳述式 2 中， `arn:aws:iam::111122223333:role/KMSKeyAdmins`是指名為 KMSKeyAdmins in AWS 帳戶 111122223333 的 IAM 角色。被授權擔任此角色的使用者可以執行政策陳述式中所列的動作，這些是用於管理 KMS 金鑰的管理動作。

**Example 政策陳述式 3**  

```
{
  "Sid": "Allow use of the key",
  "Effect": "Allow",
  "Principal": {"AWS": "arn:aws:iam::111122223333:role/EncryptionApp"},
  "Action": [
    "kms:DescribeKey",
    "kms:GenerateDataKey*",
    "kms:Encrypt",
    "kms:ReEncrypt*",
    "kms:Decrypt"
  ],
  "Resource": "*"
}
```
在政策陳述式 3 中， `arn:aws:iam::111122223333:role/EncryptionApp`是指名為 EncryptionApp in AWS 帳戶 111122223333 的 IAM 角色。被授權擔任此角色的主體可以執行政策陳述式中所列的動作，包括對稱加密 KMS 金鑰的[密碼編譯操作](kms-cryptography.md#cryptographic-operations)。

**Example 政策陳述式 4**  

```
{
  "Sid": "Allow attachment of persistent resources",
  "Effect": "Allow",
  "Principal": {"AWS": "arn:aws:iam::111122223333:role/EncryptionApp"},
  "Action": [
    "kms:ListGrants",
    "kms:CreateGrant",
    "kms:RevokeGrant"
  ],
  "Resource": "*",
  "Condition": {"Bool": {"kms:GrantIsForAWSResource": true}}
}
```
在政策陳述式 4 中， `arn:aws:iam::111122223333:role/EncryptionApp`是指名為 EncryptionApp in AWS 帳戶 111122223333 的 IAM 角色。被授權擔任此角色的主體能夠執行政策陳述式中所列的動作。當這些動作結合**範例政策陳述式 3** 中允許的動作時，是委派 KMS 金鑰的使用給大部分[與 AWS KMS整合的AWS 服務](service-integration.md) (尤其是使用[授予](grants.md)的服務) 的必要動作。`Condition` 元素中的 [kms:GrantIsForAWSResource](conditions-kms.md#conditions-kms-grant-is-for-aws-resource) 值可確保僅當委派代表是與 整合 AWS KMS 並使用授權的 AWS 服務時，才允許委派。

若要了解在金鑰政策文件中指定主體的所有不同方法，請參閱《[IAM 使用者指南](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Principal_specifying)》中的 *Specifying a Principal* (指定主體)。

若要進一步了解 AWS KMS 金鑰政策，請參閱 [中的金鑰政策 AWS KMS](key-policies.md)。