

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

# 在 IAM policy 语句中指定 KMS 密钥
<a name="cmks-in-iam-policies"></a>

您可以使用 IAM policy 来允许委托人使用或管理 KMS 密钥。KMS 密钥在策略语句的 `Resource` 元素中指定。
+ 要在 IAM policy 语句中指定 KMS 密钥，必须使用其[密钥 ARN](concepts.md#key-id-key-ARN)。您不能使用[密钥 ID](concepts.md#key-id-key-id)、[别名名称](concepts.md#key-id-alias-name)或[别名 ARN](concepts.md#key-id-alias-ARN) 来标识 IAM policy 语句中的 KMS 密钥。

  例如：“`Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`”

  要根据别名控制对 KMS 密钥的访问权限，请使用 k [ms: RequestAlias](conditions-kms.md#conditions-kms-request-alias) 或 k [ms: ResourceAliases](conditions-kms.md#conditions-kms-resource-aliases) 条件密钥。有关更多信息，请参阅 [ABAC for AWS KMS](abac.md)。

  仅在控制别名操作（例如、或）访问权限的策略声明中使用别名 ARN 作为[CreateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/CreateAlias.html)资源。[UpdateAlias[DeleteAlias](https://docs.aws.amazon.com/kms/latest/APIReference/DeleteAlias.html)](https://docs.aws.amazon.com/kms/latest/APIReference/UpdateAlias.html)有关更多信息，请参阅 [控制对别名的访问](alias-access.md)。
+ 要在账户和区域中指定多个 KMS 密钥，请在密钥 ARN 的区域或资源 ID 位置中使用通配符 (\$1)。

  例如，要指定账户的美国西部（俄勒冈）区域中的所有 KMS 密钥，请使用“`Resource": "arn:aws:kms:us-west-2:111122223333:key/*`”。要指定账户的所有区域中的所有 KMS 密钥，请使用“`Resource": "arn:aws:kms:*:111122223333:key/*`”。
+ 要表示所有 KMS 密钥，请单独使用通配符 (`"*"`)。对于不使用任何特定 KMS 密钥（即、和）的操作 [CreateKey[GenerateRandom[ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListAliases.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateRandom.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)，请使用此格式[ListKeys](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.html)。

在编写策略语句时，[最佳实践](iam-policies-best-practices.md)是只指定委托人需要使用的 KMS 密钥，而不是授予他们对所有 KMS 密钥的访问权限。

例如，以下 IAM 策略声明仅允许委托人对策略声明`Resource`元素中列出的 KMS 密钥调用[DescribeKey[GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)、、[Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 操作。通过密钥 ARN 指定 KMS 密钥是一种最佳实践，可确保权限仅限于指定的 KMS 密钥。

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

****  

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

------

要将权限应用于特定可信对象中的所有 KMS 密钥 AWS 账户，可以在区域和密钥 ID 位置中使用通配符 (\$1)。例如，以下策略语句允许委托人对两个可信示例账户的中的 KMS 密钥调用指定操作。

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

****  

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

------

您还可以单独在 `Resource` 元素中使用通配符 (`"*"`)。由于它允许访问帐户有权使用的所有 KMS 密钥，因此建议主要用于没有特定 KMS 密钥的操作和 `Deny` 语句。您还可以在仅允许不太敏感的只读操作的策略语句中使用它。要确定某项 AWS KMS 操作是否涉及特定的 KMS 密钥，请在中表的 “**资源**” 列中查找 **KMS 密钥**值[AWS KMS 权限](kms-api-permissions-reference.md)。

例如，以下策略语句使用 `Deny` 效果来禁止委托人对任何 KMS 密钥使用指定的操作。它在 `Resource` 元素中使用通配符来表示所有 KMS 密钥。

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

****  

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

------

以下策略语句单独使用通配符来表示所有 KMS 密钥。但它只允许不太敏感的只读操作和不适用于任何特定 KMS 密钥的操作。

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

****  

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

------