本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
控制对标签的访问
要在 AWS KMS 控制台中或使用添加、查看和删除标签API,委托人需要标记权限。您可以在密钥策略中提供这些权限。您也可以在IAM策略(包括VPC终端节点策略)中提供它们,但前提是密钥策略允许。AWSKeyManagementServicePowerUser托管策略允许委托人对账户可以访问的所有KMS密钥进行标记、取消标记和列出标签。
您也可以通过对标签使用 AWS 全局条件键来限制这些权限。在中 AWS KMS,这些条件可以控制对标记操作(例如TagResource和 UntagResource)的访问权限。
注意
请谨慎授予委托人管理标签和别名的权限。更改标签或别名可以允许或拒绝对客户托管密钥的权限。有关详细信息,请参阅 AWS KMS 中的 ABAC 和 使用标签控制对KMS密钥的访问。
有关策略示例和更多信息,请参阅《IAM用户指南》中的基于标签密钥控制访问权限。
用于创建和管理标签的权限如下所示。
- kms: TagResource
-
允许主体添加或编辑标签。要在创建KMS密钥时添加标签,委托人必须在不限于特定KMS密钥的IAM策略中拥有权限。
- kms: ListResourceTags
-
允许委托人查看KMS密钥上的标签。
- kms: UntagResource
-
允许委托人从KMS密钥中删除标签。
标记策略中的权限
您可以在密钥策略或IAM策略中提供标记权限。例如,以下示例密钥策略为选定用户提供了对密KMS钥进行标记的权限。它为所有可以担任示例管理员或开发人员角色的用户授予查看标签的权限。
{ "Version": "2012-10-17", "Id": "example-key-policy", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:root"}, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow all tagging permissions", "Effect": "Allow", "Principal": {"AWS": [ "arn:aws:iam::111122223333:user/LeadAdmin", "arn:aws:iam::111122223333:user/SupportLead" ]}, "Action": [ "kms:TagResource", "kms:ListResourceTags", "kms:UntagResource" ], "Resource": "*" }, { "Sid": "Allow roles to view tags", "Effect": "Allow", "Principal": {"AWS": [ "arn:aws:iam::111122223333:role/Administrator", "arn:aws:iam::111122223333:role/Developer" ]}, "Action": "kms:ListResourceTags", "Resource": "*" } ] }
要向委托人授予对多个KMS密钥进行标记的权限,您可以使用策略。IAM为了使此策略生效,每个密钥的KMS密钥策略必须允许账户使用IAM策略来控制对KMS密钥的访问。
例如,以下IAM策略允许委托人创建KMS密钥。它还允许他们为指定账户中的所有KMS密钥创建和管理标签。这种组合允许委托人在创建KMS密钥时使用CreateKey操作的 Tags 参数向密钥添加标签。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "IAMPolicyCreateKeys", "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*" }, { "Sid": "IAMPolicyTags", "Effect": "Allow", "Action": [ "kms:TagResource", "kms:UntagResource", "kms:ListResourceTags" ], "Resource": "arn:aws:kms:*:111122223333:key/*" } ] }
限制标签权限
您可以通过使用策略条件限制标记权限。以下策略条件可应用于 kms:TagResource
和 kms:UntagResource
权限。例如,您可以使用 aws:RequestTag/tag-key
条件来允许主体仅添加特定标签,或阻止主体添加具有特定标签键的标签。或者,您可以使用该kms:KeyOrigin条件来防止委托人使用导入的密钥材料对KMS密钥进行标记或取消标记。
使用标签控制KMS密钥访问权限时,最佳做法是使用aws:RequestTag/tag-key
或aws:TagKeys
条件键来确定允许使用哪些标签(或标签密钥)。
例如,以下IAM策略与前一个策略类似。但是,此策略允许主体为具有 Project
标签键的标签创建标签 (TagResource
) 并删除标签 UntagResource
。
由于TagResource
和UntagResource
请求可以包含多个标签,因此您必须使用 aws: TagKeys 条件指定ForAllValues
或ForAnyValue
设置运算符。ForAnyValue
运算符要求请求中至少有一个标签键与策略中的其中一个标签键匹配。ForAllValues
运算符要求请求中所有的标签键与策略中的其中一个标签键匹配。true
如果请求中没有标签,则ForAllValues
运算符也会返回,但 TagResource 如果未指定标签,则会 UntagResource失败。有关集合运算符的详细信息,请参阅《IAM用户指南》中的使用多个键和值。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "IAMPolicyCreateKey", "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*" }, { "Sid": "IAMPolicyViewAllTags", "Effect": "Allow", "Action": "kms:ListResourceTags", "Resource": "arn:aws:kms:*:111122223333:key/*" }, { "Sid": "IAMPolicyManageTags", "Effect": "Allow", "Action": [ "kms:TagResource", "kms:UntagResource" ], "Resource": "arn:aws:kms:*:111122223333:key/*", "Condition": { "ForAllValues:StringEquals": {"aws:TagKeys": "Project"} } } ] }