

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

# IAM 政策範例
<a name="customer-managed-policies"></a>

在本節中，您可以找到允許各種 AWS KMS 動作之許可的 IAM 政策範例。

**重要**  
以下政策中的一些許可僅在 KMS 金鑰的金鑰政策也允許時，才會獲得允許。如需詳細資訊，請參閱[許可參考](kms-api-permissions-reference.md)。

如需撰寫及格式化 JSON 政策文件的說明，請參閱《*IAM 使用者指南*》中的 [IAM JSON 政策參考](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html)。

**Topics**
+ [允許使用者在 AWS KMS 主控台中檢視 KMS 金鑰](#iam-policy-example-read-only-console)
+ [允許使用者建立 KMS 金鑰](#iam-policy-example-create-key)
+ [允許使用者使用特定 中的任何 KMS 金鑰來加密和解密 AWS 帳戶](#iam-policy-example-encrypt-decrypt-one-account)
+ [允許使用者在特定 和 區域中使用任何 KMS 金鑰來加密 AWS 帳戶 和解密](#iam-policy-example-encrypt-decrypt-one-account-one-region)
+ [允許使用者使用特定 KMS 金鑰來加密和解密](#iam-policy-example-encrypt-decrypt-specific-cmks)
+ [防止使用者停用或刪除任何 KMS 金鑰](#iam-policy-example-deny-disable-delete)

## 允許使用者在 AWS KMS 主控台中檢視 KMS 金鑰
<a name="iam-policy-example-read-only-console"></a>

下列 IAM 政策允許使用者唯讀存取 AWS KMS 主控台。具有這些許可的使用者可以檢視其 中的所有 KMS 金鑰 AWS 帳戶，但無法建立或變更任何 KMS 金鑰。

若要檢視 **AWS 受管金鑰** 和**客戶受管金鑰**頁面的 KMS 金鑰，主體需要 [kms:ListKeys](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.html)、[kms:ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListAliases.html) 和 [tag:GetResources](https://docs.aws.amazon.com/resourcegroupstagging/latest/APIReference/API_GetResources.html) 許可，即使金鑰沒有標籤或別名。其餘的許可 (特別是 [kms:DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)) 需要在 KMS 金鑰詳細資訊頁面上檢視選用的 KMS 金鑰表資料欄和資料。[iam:ListUsers](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUsers.html) 和 [iam:ListRoles](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListRoles.html) 許可需要在預設檢視中顯示金鑰政策，而不會出現錯誤。若要檢視**自訂金鑰存放區**頁面上的資料和自訂金鑰存放區中 KMS 金鑰的詳細資訊，則主體也需要 [kms:DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeCustomKeyStores.html) 許可。

如果您限制對特定 KMS 金鑰的使用者主控台存取，則主控台會針對不可見的每個 KMS 金鑰顯示錯誤。

此政策包含兩個政策陳述式。第一個政策陳述式中的 `Resource` 元素允許範例 AWS 帳戶所有區域中所有 KMS 金鑰上的指定許可。主控台檢視器不需要額外的存取權，因為 AWS KMS 主控台只會顯示主體帳戶中的 KMS 金鑰。即使他們有權在其他 中檢視 KMS 金鑰，也是如此 AWS 帳戶。其餘 AWS KMS 和 IAM 許可需要 `"Resource": "*"`元素，因為它們不適用於任何特定的 KMS 金鑰。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "ReadOnlyAccessForAllKMSKeysInAccount",
      "Effect": "Allow",
      "Action": [
        "kms:GetPublicKey",        
        "kms:GetKeyRotationStatus",
        "kms:GetKeyPolicy",
        "kms:DescribeKey",
        "kms:ListKeyPolicies",
        "kms:ListResourceTags",
        "tag:GetResources"
      ],
      "Resource": "arn:aws:kms:*:{{111122223333}}:key/*"
    },
    {
      "Sid": "ReadOnlyAccessForOperationsWithNoKMSKey",
      "Effect": "Allow",
      "Action": [
        "kms:ListKeys",
        "kms:ListAliases",
        "iam:ListRoles",
        "iam:ListUsers"
      ],
      "Resource": "*"
    }
  ]
}
```

------

## 允許使用者建立 KMS 金鑰
<a name="iam-policy-example-create-key"></a>

下列 IAM 政策可讓使用者建立各類型的 KMS 金鑰。`Resource` 元素的值是 ，`*`因為 `CreateKey`操作不使用任何特定 AWS KMS 資源 (KMS 金鑰或別名）。

若要限制使用者僅能使用特定類型的 KMS 金鑰，請使用 [kms:KeySpec](conditions-kms.md#conditions-kms-key-spec)、[kms:KeyUsage](conditions-kms.md#conditions-kms-key-usage) 和 [kms:KeyOrigin](conditions-kms.md#conditions-kms-key-origin) 條件金鑰。

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

****  

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

------

建立金鑰的主體可能需要一些相關許可。
+ **kms:PutKeyPolicy** – 擁有 `kms:CreateKey` 許可的主體可以設定 KMS 金鑰的初始金鑰政策。不過，`CreateKey` 呼叫者必須有 [kms:PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html) 許可，這可讓其變更 KMS 金鑰政策，或者他們必須指定 `CreateKey` 的 `BypassPolicyLockoutSafetyCheck` 參數，但不建議這樣操作。`CreateKey` 呼叫者可以從 IAM 政策為 KMS 金鑰取得 `kms:PutKeyPolicy` 許可，或者其可以在所建立之 KMS 金鑰的金鑰政策中包含此許可。
+ **kms:TagResource** – 若要為 `CreateKey` 操作中的 KMS 金鑰新增標籤，`CreateKey` 呼叫者必須有 IAM 政策中的 [kms:TagResource](https://docs.aws.amazon.com/kms/latest/APIReference/API_TagResource.html) 許可。在新 KMS 金鑰的金鑰政策中包含此許可並不足夠。但是，如果 `CreateKey` 呼叫者在初始金鑰政策中包含 `kms:TagResource`，則他們可以在建立 KMS 金鑰之後，在個別呼叫中新增標籤。
+ **kms:CreateAlias** — 在 AWS KMS 主控台中建立 KMS 金鑰的委託人必須在 KMS 金鑰和別名上擁有 [kms:CreateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateAlias.html) 許可。(主控台進行兩個呼叫；一個至 `CreateKey` 和一個至 `CreateAlias`)。您必須在 IAM 政策中提供別名許可。您可以在金鑰政策、IAM 政策中提供 KMS 金鑰許可。如需詳細資訊，請參閱[控制對別名的存取](alias-access.md)。

除了 之外`kms:CreateKey`，下列 IAM 政策還提供 中所有 KMS 金鑰的`kms:TagResource`許可， AWS 帳戶 以及帳戶所有別名的`kms:CreateAlias`許可。其中還包含一些只能在 IAM 政策中提供的有用唯讀許可。

此 IAM 政策並不包括 `kms:PutKeyPolicy` 許可或可在金鑰政策中設定的任何其他許可。[最佳實務](iam-policies-best-practices.md)是在金鑰政策中設定這些許可，在其中它們會專門套用至一個 KMS 金鑰。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "IAMPermissionsForParticularKMSKeys",
      "Effect": "Allow",
      "Action": "kms:TagResource",
      "Resource": "arn:aws:kms:*:{{111122223333}}:key/*"
    },
    {
      "Sid": "IAMPermissionsForParticularAliases",
      "Effect": "Allow",
      "Action": "kms:CreateAlias",
      "Resource": "arn:aws:kms:*:{{111122223333}}:alias/*"
    },
    {
      "Sid": "IAMPermissionsForAllKMSKeys",
      "Effect": "Allow",
      "Action": [
        "kms:CreateKey",
        "kms:ListKeys",
        "kms:ListAliases"
      ],
      "Resource": "*"
    }
  ]
}
```

------

## 允許使用者使用特定 中的任何 KMS 金鑰來加密和解密 AWS 帳戶
<a name="iam-policy-example-encrypt-decrypt-one-account"></a>

下列 IAM 政策允許使用者使用 AWS 帳戶 111122223333 中的任何 KMS 金鑰來加密和解密資料。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:Encrypt",
      "kms:Decrypt"
    ],
    "Resource": "arn:aws:kms:*:{{111122223333}}:key/*"
  }
}
```

------

## 允許使用者在特定 和 區域中使用任何 KMS 金鑰來加密 AWS 帳戶 和解密
<a name="iam-policy-example-encrypt-decrypt-one-account-one-region"></a>

下列 IAM 政策允許使用者在美國西部 （奧勒岡） 區域中，使用 中的任何 AWS 帳戶 `111122223333` KMS 金鑰來加密和解密資料。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:Encrypt",
      "kms:Decrypt"
    ],
    "Resource": [
      "arn:aws:kms:us-west-2:{{111122223333}}:key/*"
    ]
  }
}
```

------

## 允許使用者使用特定 KMS 金鑰來加密和解密
<a name="iam-policy-example-encrypt-decrypt-specific-cmks"></a>

以下 IAM 政策允許使用者使用 `Resource` 元素中指定的兩個 KMS 金鑰來加密和解密資料。若要在 IAM 政策陳述式中指定 KMS 金鑰，您必須使用 KMS 金鑰的[金鑰 ARN](concepts.md#key-id-key-ARN)。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:Encrypt",
      "kms:Decrypt"
    ],
    "Resource": [
      "arn:aws:kms:us-west-2:{{111122223333}}:key/1234abcd-12ab-34cd-56ef-1234567890ab",
      "arn:aws:kms:us-west-2:{{111122223333}}:key/01234abc-d12a-b34c-d56e-f1234567890a'"
    ]
  }
}
```

------

## 防止使用者停用或刪除任何 KMS 金鑰
<a name="iam-policy-example-deny-disable-delete"></a>

以下 IAM 政策能防止使用者停用或刪除任何 KMS 金鑰，即使另一個 IAM 政策或金鑰政策允許這些許可。明確拒絕許可的政策會覆寫所有其他政策，即使那些政策明確允許相同的許可。如需詳細資訊，請參閱[故障診斷 AWS KMS 許可](policy-evaluation.md)。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Deny",
    "Action": [
      "kms:DisableKey",
      "kms:ScheduleKeyDeletion"
    ],
    "Resource": "*"
  }
}
```

------