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

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

使用标签控制对 的访问 CMKs

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

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

注意

标签和别名更改可能需要长达五分钟才能影响 CMK 授权。最近的更改在影响授权之前可能显示在 API 操作中。

AWS KMS 支持使用 ResourceTag 全局条件上下文键,该键可让您CMKs根据 上的标签控制对 的访问CMK。由于多个 CMKs 可以具有相同的标签,此功能允许您将权限应用于一组选定的 CMKs。您也可以通过更改 集中CMKs的标签来轻松更改其 。

在 中AWS KMS,只有 aws:ResourceTag 策略支持 IAM 条件键。它旨在帮助您控制对具有相同标签的多个 CMKs 的访问。它在密钥策略中不受支持,该策略仅适用于一个 CMK。此外,资源条件仅适用于使用现有资源的操作。因此,您不能使用 aws:ResourceTag 控制对 CreateKeyListKeysListAliases等操作的访问。

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

  • 使用标签强化最小特权访问的最佳实践。仅向 IAM 委托人授予他们CMKs必须使用或管理的 上所需的权限。例如,使用标签标记CMKs用于项目的 。然后,向项目团队授予仅将 CMKs 与项目标签一起使用的权限。

  • 在向委托人授予 kms:TagResourcekms:UntagResource 权限以允许他们添加、编辑和删除标签时,请务必小心。当您使用标签控制对 的访问时CMKs,更改标签可以为委托人授予使用CMKs其无权使用的 的权限。它还可以拒绝CMKs其他委托人访问 以执行其工作所需的 。如果无权更改密钥策略或创建授权的密钥管理员有权管理标签CMKs,则可以控制对 的访问。

    如果可能,请使用策略条件(如 aws:RequestTagaws:TagKeys )将委托人的标记权限限制标签权限限制为特定 CMKs 上的特定标签或标签模式。

  • 查看您AWS账户中当前具有标记和取消标记权限的委托人,并在必要时对其进行调整。例如,密钥管理员的控制台默认密钥策略包含 的 kms:TagResourcekms:UntagResource 权限CMK。 IAM 策略可能允许对所有 的标签和取消标签权限CMKs。例如AWSKeyManagementServicePowerUser 托管策略允许委托人在所有 上标记、取消标记和列出标签CMKs。

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

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

例如,请考虑以下IAM策略。它允许委托人在您的账户中仅作为区域并具有标签的 CMKs 上调用 GenerateDataKeyWithoutPlaintext 和 亚太区域(新加坡)Decrypt"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中的任何 用于某些加密操作。但是,它禁止委托人对AWS KMS具有CMKs标签或不具有"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"} } ] }