在IAM策略声明中指定KMS密钥 - Amazon Key Management Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

在IAM策略声明中指定KMS密钥

您可以使用IAM策略来允许委托人使用或管理KMS密钥。KMS密钥在策略声明的Resource元素中指定。

  • 要在IAM策略声明中指定KMS密钥,必须使用其密钥ARN。在IAM策略声明中,您不能使用密钥 ID别名或别名ARN来标识KMS密钥。

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

    要根据KMS密钥的别名控制对密钥的访问权限,请使用 k ms: RequestAlias 或 k ms: ResourceAliases 条件密钥。有关详细信息,请参阅ABAC对于 Amazon KMS

    仅在控制别名ARN操作(例如、或)访问权限的策略语句中使用别名作为CreateAlias资源DeleteAliasUpdateAlias有关详细信息,请参阅控制对别名的访问

  • 要在账户和区域中指定多个KMS密钥,请在密钥的区域或资源 ID 位置使用通配符 (*)。ARN

    例如,要指定账户的美国西部(俄勒冈)地区的所有KMS密钥,请使用 “Resource": "arn:aws:kms:us-west-2:111122223333:key/*”。要指定账户所有区域的所有KMS密钥,请使用 “Resource": "arn:aws:kms:*:111122223333:key/*”。

  • 要表示所有KMS密钥,请单独使用通配符 ("*")。对于不使用任何特定KMS键的操作,即、和 CreateKeyGenerateRandomListAliases,请使用此格式ListKeys

在撰写政策声明时,最佳做法是仅指定委托人需要使用的KMS密钥,而不是授予他们访问所有KMS密钥的权限。

例如,以下IAM策略语句仅允许委托人对策略声明Resource元素中列出的密KMS钥调用DescribeKeyGenerateDataKey、、Decrypt 操作。按KMS密钥指定密钥是一种最佳做法,可确保权限仅限于指定的KMS密钥。ARN

{ "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/0987dcba-09fe-87dc-65ba-ab0987654321" ] } }

要将权限应用于特定可信KMS密钥中的所有密钥 Amazon Web Services 账户,可以在区域和密钥 ID 位置使用通配符 (*)。例如,以下策略声明允许委托人对两个可信示例账户中的所有KMS密钥调用指定操作。

{ "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语句。您还可以在仅允许不太敏感的只读操作的策略语句中使用它。要确定某项 Amazon KMS 操作是否涉及特定KMS键,请在中表的 “资源” 列中查找该KMS键Amazon KMS 权限

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

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

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

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