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

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

使用别名控制对 的访问 CMKs

您可以根据与 关联的别名控制AWS KMS对客户主密钥 (CMKs) 的访问CMK。为此,请使用 kms:RequestAliaskms:ResourceAliases条件键。此功能是AWS KMS支持基于属性的访问控制 (ABAC) 的一部分。

kms:RequestAlias 条件键CMK根据请求中的别名允许或拒绝访问 。kms:ResourceAliases 条件键CMK根据与 关联的别名允许或拒绝对 的访问CMK。

这些功能不允许您在策略语句的 CMK 元素resource中使用别名来标识 。当别名是 resource 元素的值时,策略将应用于别名资源,而不是CMK可能与它关联的任何 。

注意

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

使用别名控制对 的访问时CMKs,请考虑以下事项:

  • 使用别名可强化最小权限访问的最佳实践。仅向IAM委托人授予他们必须为CMKs其使用或管理的 所需的权限。例如,使用别名标识CMKs用于项目的 。然后,向项目团队授予仅将 CMKs 用于项目别名的权限。

  • 在向 委托人授予允许其添加kms:CreateAlias、编辑和删除别名的 kms:UpdateAlias、 或 kms:DeleteAlias 权限时,请务必小心。当您使用别名控制对 的访问时CMKs,更改别名可以为委托人授予使用CMKs其无权使用的 的权限。它还可以拒绝CMKs其他委托人访问 以执行其任务所需的 。

  • 查看您AWS账户中当前有权管理别名并调整权限的委托人(如有必要)。如果无权更改密钥策略或创建授权的密钥管理员有权管理别名CMKs,则可以控制对 的访问。

    例如,密钥管理员的控制台默认密钥策略包括 kms:CreateAliaskms:DeleteAliaskms:UpdateAlias 权限。 IAM 策略可能会为CMKs您的账户AWS中的所有 提供别名权限。例如, AWSKeyManagementServicePowerUser 托管策略允许委托人创建、删除和列出所有 的别名CMKs,但不能更新它们。

  • 在设置依赖于别名的策略之前,请查看您CMKs账户AWS中的 上的别名。确保您的策略仅适用于您打算包含的别名。使用 CloudTrail 日志CloudWatch警报提醒您可能影响 访问权限的别名更改CMKs。此外,ListAliases响应还包含每个别名的创建日期和上次更新日期。

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

kms:RequestAlias 条件键依赖于在操作请求中显式指定的别名。kms:ResourceAliases 条件键取决于与 关联的别名CMK,即使这些别名未显示在请求中。

kms:RequestAlias

允许或拒绝CMK基于在请求CMK中标识 的别名访问 。您可以在密钥策略 策略中使用 kms:RequestAlias条件IAM键。它适用于使用别名标识请求CMK中的 的操作,即加密操作DescribeKey GetPublicKey 。 它对于别名操作(如 CreateAliasDeleteAlias )无效。

在 条件键中,指定别名或别名模式。您不能指定别名 ARN。

例如,以下密钥策略语句允许委托人对 使用指定的操作CMK。仅当请求使用包含 的别名alpha来标识 时,权限才有效CMK。

{ "Sid": "Key policy using a request alias condition", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/alpha-developer" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringLike": { "kms:RequestAlias": "alias/*alpha*" } } }

来自授权委托人的以下示例请求将满足 条件。但是,使用密钥 ID、密钥 ARN 或其他别名的请求将无法满足条件,即使这些值标识了相同的 也是如此CMK。

$ aws kms describe-key --key-id "arn:aws:kms:us-west-2:111122223333:alias/project-alpha"

kms:ResourceAliasess

允许或拒绝CMK基于与 关联的别名访问 CMK,即使该别名未在 请求中使用。kms:ResourceAliases 条件键可让您指定别名或别名模式,例如 alias/test*,以便您可以在 IAM 策略中使用它来控制对同一区域中多个 CMKs 的访问。它对使用 的任何AWS KMS操作都有效CMK。

例如,以下IAM策略允许委托人管理两个CMKs账户AWS中的 上的自动密钥轮换。但是, 权限仅适用于与以 开头的别名CMKs关联的 restricted

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AliasBasedIAMPolicy", "Effect": "Allow", "Action": [ "kms:EnableKeyRotation", "kms:DisableKeyRotation", "kms:GetKeyRotationStatus" ], "Resource": [ "arn:aws:kms:*:111122223333:key/*", "arn:aws:kms:*:444455556666:key/*", ], "Condition": { "ForAnyValue:StringLike": { "kms:ResourceAliases": "alias/restricted*" } } } ] }

以下示例请求将满足 条件CMK,前提是密钥 ID 标识restricted的 与以 开头的别名(如 restrictedrestricted_key或 )关联restricted-test。 请求还可以使用别名名称或别名 ARN。

$ aws kms enable-key-rotation --key-id "1234abcd-12ab-34cd-56ef-1234567890ab"