

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

# 搭配 使用 IAM 政策 AWS KMS
<a name="iam-policies"></a>

您可以使用 IAM 政策，以及[金鑰政策](key-policies.md)、[授權](grants.md)和 [VPC 端點政策](https://docs.aws.amazon.com/vpc/latest/privatelink/interface-endpoints.html#edit-vpc-endpoint-policy)，來控制對 AWS KMS keys 的存取 AWS KMS。

**注意**  
若要使用 IAM 政策來控制 KMS 金鑰的存取，KMS 金鑰的金鑰政策必須授予帳戶使用 IAM 政策的許可。特別是，金鑰政策必須包含[啟用 IAM 政策的政策陳述式](key-policy-default.md#key-policy-default-allow-root-enable-iam)。  
本節說明如何使用 IAM 政策來控制對 AWS KMS 操作的存取。如需 IAM 許可的一般資訊，請參閱《[IAM 使用者指南](https://docs.aws.amazon.com/IAM/latest/UserGuide/)》。

所有 KMS 金鑰都必須有金鑰政策。IAM 政策是選用的。若要使用 IAM 政策來控制 KMS 金鑰的存取，KMS 金鑰的金鑰政策必須授予帳戶使用 IAM 政策的許可。特別是，金鑰政策必須包含[啟用 IAM 政策的政策陳述式](key-policy-default.md#key-policy-default-allow-root-enable-iam)。

IAM 政策可以控制對任何 AWS KMS 操作的存取。與金鑰政策不同，IAM 政策可以控制對多個 KMS 金鑰的存取，並為數個相關 AWS 服務的操作提供許可。但是 IAM 政策對於控制操作的存取 (例如 [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)) 特別有用，因為它們不涉及任何特定 KMS 金鑰而無法由金鑰政策控制。

如果您 AWS KMS 透過 Amazon Virtual Private Cloud (Amazon VPC) 端點存取 ，您也可以使用 VPC 端點政策來限制在使用端點時對 AWS KMS 資源的存取。例如，使用 VPC 端點時，您可能只允許 中的委託人 AWS 帳戶 存取您的客戶受管金鑰。如需詳細資訊，請參閱 [VPC 端點政策](https://docs.aws.amazon.com/vpc/latest/privatelink/interface-endpoints.html#edit-vpc-endpoint-policy)。

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

您可以下方式來使用 IAM 政策：
+ **連接許可政策到聯合或跨帳戶許可的角色** – 您可以連接 IAM 政策到 IAM 角色來啟用聯合身分、允許跨帳戶許可，或提供應用程式在 EC2 執行個體上執行的許可。如需 IAM 角色各種使用案例的詳細資訊，請參閱《*IAM 使用者指南*》中的 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)。
+ **連接許可政策到使用者或群組** – 您可以連接允許使用者或使用者群組呼叫 AWS KMS 操作的政策。不過，IAM 最佳實務建議您盡可能使用具有臨時憑證的身分，例如 IAM 角色。

下列範例顯示具有 AWS KMS 許可的 IAM 政策。此政策允許其連接的 IAM 身分列出所有 KMS 金鑰和別名。

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

****  

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

------

與所有 IAM 政策一樣，此政策沒有 `Principal` 元素。將 IAM 政策連接到 IAM 身分時，該身分會取得政策中指定的許可。

如需顯示所有 AWS KMS API 動作及其適用的資源的資料表，請參閱 [許可參考](kms-api-permissions-reference.md)。

## 允許多個 IAM 主體存取 KMS 金鑰
<a name="key-policy-modifying-multiple-iam-users"></a>

IAM 群組在金鑰政策中不是有效的主體。若要允許多個使用者和角色存取 KMS 金鑰，請執行下列其中一項操作：
+ 使用 IAM 角色作為金鑰政策中的主體。多個授權使用者可以視需要擔任該角色。如需詳細資訊，請參閱《IAM 使用者指南》**中的 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)。

  雖然您可以在金鑰政策中列出多個 IAM 使用者，但不建議使用此做法，因為這會要求您在每次授權使用者清單變更時更新金鑰政策。此外，IAM 最佳實務不建議使用具有長期憑證的 IAM 使用者。如需詳細資訊，請參閱《IAM 使用者指南》**中的 [IAM 中的安全性最佳實務](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)。
+ 使用 IAM 政策，將許可授予給 IAM 群組。為此，請確保金鑰政策包含的陳述式[可啟用 IAM 政策以允許存取 KMS 金鑰](key-policy-default.md#key-policy-default-allow-root-enable-iam)，建立一個允許存取 KMS 金鑰的 [IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html#create-managed-policy-console)，然後[將該政策連接到包含該授權 IAM 使用者的 IAM 群組](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html#attach-managed-policy-console)。透過此方式，您不需要在授權的使用者清單變更時，隨之變更任何政策。相反地，您只需要從適當的 IAM 群組新增或移除這些使用者。如需詳細資訊，請參閱《IAM 使用者指南》**中的 [IAM 使用者群組](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html)

如需 AWS KMS 金鑰政策和 IAM 政策如何搭配運作的詳細資訊，請參閱 [故障診斷 AWS KMS 許可](policy-evaluation.md)。