控制对标签的访问 - Amazon Key Management Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

控制对标签的访问

要添加、查看和删除标签,可以在Amazon KMS控制台或使用 API,则委托人需要标记权限。您可以在密钥策略。您还可以在 IAM 策略(包括VPC 终端节点策略),但仅当密钥策略允许。这些区域有:Amazon 密钥管理服务高级用户托管策略允许委托人标记、取消标记和列出账户可以访问的所有 CMK 上的标签。

您还可以通过使用Amazon全局条件键。InAmazon KMS,这些条件可以控制对标记操作的访问,例如TagResourceUntagResource

注意

授予委托人管理标签和别名的权限时要谨慎。更改标签或别名可以允许或拒绝对 CMK 的权限。有关详细信息,请参阅 使用 ABACAmazon KMS使用标签控制对 CMK 的访问

有关示例策略和更多信息,请参阅。根据标签键控制访问中的IAM 用户指南

用于创建和管理标签的权限如下。

KMS: 标记资源

允许委托人添加或编辑标签。要在创建 CMK 时添加标签,委托人必须具有 IAM 策略中不限于特定 CMK 的权限。

KMS: 列出资源标签

允许委托人查看 CMK 上的标签。

KMS: 取消标记资源

允许委托人从 CMK 中删除标签。

策略中的标记权限

您可以在密钥策略或 IAM 策略中提供标记权限。例如,以下示例密钥策略向选定用户授予 CMK 上的标记权限。它为所有可以担任示例管理员或开发人员角色的用户授予查看标签的权限。

{ "Version": "2012-10-17", "Id": "key-policy-example", "Statement": [ { "Sid": "Enable IAM policies", "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": "*" } ] }

要向委托人授予对多个 CMK 的标记权限,您可以使用 IAM 策略。要使此策略生效,每个 CMK 的密钥策略必须允许账户使用 IAM 策略来控制对 CMK 的访问。

例如,以下 IAM 策略允许委托人创建 CMK。它还允许他们在指定账户中的所有 CMK 上创建和管理标签。这种组合允许承担者使用标签参数CreateKey操作在创建 CMK 时向其添加标签。

{ "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:TagResourcekms:UntagResource权限。例如,您可以使用aws:RequestTag/tag-key条件来允许委托人仅添加特定标签,或阻止委托人添加具有特定标签键的标签。或者,您也可以使用kms:KeyOrigin条件来防止委托人标记或取消标记 CMK导入的密钥材料

作为使用标签控制对 CMK 的访问的最佳实践,请使用aws:RequestTag/tag-key或者aws:TagKeys条件键来确定允许哪些标签(或标签键)。

例如,以下 IAM 策略与上一个策略相似。但是,此策略允许委托人创建标签 (TagResource) 并删除标签UntagResource仅适用于带有Project标签键。

由于TagResourceUntagResource请求可以包含多个标签,则必须指定ForAllValues或者ForAnyValue集合运算符aws:TagKeys条件。这些区域有:ForAnyValue运算符要求请求中至少有一个标签键与策略中的其中一个标签键匹配。这些区域有:ForAllValues运算符要求请求中的标签键与策略中的其中一个标签键匹配。这些区域有:ForAllValues运算符也返回true如果请求中没有标签,但是当没有指定标记时,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"} } } ] }