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

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

使用标签控制对 CMK 的访问

您可以控制对Amazon KMS基于 CMK 上的标签的客户主密钥 (CMK)。例如,您可以编写 IAM 策略,允许委托人仅启用和禁用具有特定标签的 CMK。或者,您可以使用 IAM 策略来防止委托人在加密操作中使用 CMK,除非 CMK 具有特定的标签。

此功能是的一部分Amazon KMS支持基于属性的访问控制(阿巴克). 有关使用标签控制对Amazon资源,请参阅什么是适用于的 ABACAmazon?控制对 的访问Amazon使用资源标签的资源中的IAM 用户指南。有关解决与 ABAC 相关的访问问题的帮助,请参阅故障排除Amazon KMS

注意

标签和别名更改可能需要最多 5 分钟的时间才能影响 CMK 授权。最近的更改可能会在 API 操作中显示,然后才会影响授权。

Amazon KMS支持使用aws:ResourceT/标签键 全局条件上下文键,它允许您根据 CMK 上的标签控制对 CMK 的访问。因为多个 CMK 可以具有相同的标记,所以此功能允许您将权限应用于选定的 CMK 集。您还可以通过更改标签轻松地更改集合中的 CMK。

InAmazon KMS,aws:ResourceTag/tag-key条件密钥仅在 IAM 策略中受支持。它旨在帮助您控制对具有相同标签的多个 CMK 的访问。关键策略不支持它,这些策略仅适用于一个 CMK。此外,资源条件仅适用于使用现有资源的操作。因此,您无法使用aws:ResourceTag/tag-key来控制对操作的访问,如CreateKeyListKeys,或者ListAliases

使用标签控制访问提供了一种简单、可扩展且灵活的方式来管理权限。但是,如果设计和管理不当,它可能会无意中允许或拒绝对您的 CMK 进行访问。如果您使用标签来控制访问,请考虑以下做法。

  • 使用标签来强化最低权限。仅为 IAM 委托人提供他们必须使用或管理的 CMK 所需的权限。例如,使用标签来标记用于项目的 CMK。然后授予项目团队仅使用带有项目标签的 CMK 的权限。

  • 谨慎为委托人提供kms:TagResourcekms:UntagResource权限,允许用户添加、编辑和删除标签。当您使用标签控制对 CMK 的访问时,更改标签可以授予委托人使用他们没有权限使用的 CMK 的权限。它还可以拒绝对其他委托人执行其工作所需的 CMK 的访问。没有权限更改密钥策略或创建授权的密钥管理员可以控制对 CMK 的访问,如果他们拥有管理标签的权限。

    如有可能,请使用策略条件,例如aws:RequestTag/tag-key或者aws:TagKeys限制委托人的标记权限添加到特定 CMK 上的特定标签或标签模式。

  • 查看您的 Amazon Web Services 账户 ,当前具有标记和取消标记权限,并根据需要对其进行调整。例如,控制台密钥管理员的默认密钥策略includeskms:TagResourcekms:UntagResource权限。IAM 策略可能允许对所有 CMK 进行标记和取消标签权限。例如,Amazon 密钥管理服务高级用户托管策略允许委托人标记、取消标记和列出所有 CMK 上的标记。

  • 在设置依赖于标签的策略之前,请查看 Amazon Web Services 账户 。请确保您的策略仅适用于您要包含的标签。使用CloudTrail 日志CloudWatch 警报以提醒您标记可能会影响对 CMK 访问的更改。

  • 基于标记的策略条件使用模式匹配;它们不绑定到标记的特定实例。使用基于标记的条件键的策略会影响与模式匹配的所有新标记和现有标记。如果删除并重新创建与策略条件匹配的标记,则该条件将应用于新标记,就像对旧标记一样。

例如,考虑以下 IAM 策略。它允许委托人调用GenerateDataKeyWithoutPlaintextDecrypt操作仅限于您账户中的 CMK 上,而且具有"Project"="Alpha"标签。可向示例 Alpha 项目中的角色附加此策略。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "IAMPolicyWithResourceTag", "Effect": "Allow", "Action": [ "kms:GenerateDataKeyWithoutPlaintext", "kms:Decrypt" ], "Resource": "arn:aws:kms:ap-southeast-1:111122223333:key/*", "Condition": { "StringEquals": { "aws:ResourceTag/Project": "Alpha" } } } ] }

以下示例 IAM 策略允许委托人使用账户中的任何 CMK 执行某些加密操作。但它禁止委托人使用任何Amazon KMS对 CMK 的操作"Type"="Reserved"标签或否"Type"标签。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "IAMAllowCryptographicOperations", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:GenerateDataKey*", "kms:Decrypt", "kms:ReEncrypt*" ], "Resource": "arn:aws:kms:*:111122223333:key/*" }, { "Sid": "IAMDenyOnTag", "Effect": "Deny", "Action": "kms:*", "Resource": "arn:aws:kms:*:111122223333:key/*", "Condition": { "StringEquals": { "aws:ResourceTag/Type": "Reserved" } } }, { "Sid": "IAMDenyNoTag", "Effect": "Deny", "Action": "kms:*", "Resource": "arn:aws:kms:*:111122223333:key/*", "Condition": { "Null": { "aws:ResourceTag/Type": "true" } } } ] }