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

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

使用别名控制对 CMK 的访问

您可以控制对Amazon KMS基于与 CMK 关联的别名的客户主密钥 (CMK)。为此,请使用KMS: 请求别名KMS: 资源别名条件键。此功能是Amazon KMS支持基于属性的访问控制(阿巴克).

这些区域有:kms:RequestAlias条件键允许或拒绝基于请求中的别名访问 CMK。这些区域有:kms:ResourceAliases条件键允许或拒绝基于 CMK 关联的别名访问 CMK。

这些功能不允许您通过使用resource元素中的一个策略语句。当别名是resource元素时,策略将应用于别名资源,而不是可能与其关联的任何 CMK。

注意

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

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

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

  • 谨慎为委托人提供kms:CreateAliaskms:UpdateAlias,或者kms:DeleteAlias权限,允许他们添加、编辑和删除别名。当您使用别名控制对 CMK 的访问时,更改别名可以授予委托人使用他们无权使用的 CMK 的权限。它还可以拒绝对其他委托人执行其工作所需的 CMK 的访问。

  • 查看您的 Amazon Web Services 账户 ,当前有权管理别名和调整权限(如有必要)。没有权限更改密钥策略或创建授权的密钥管理员可以控制对 CMK 的访问,如果他们有权管理别名。

    例如,控制台密钥管理员的默认密钥策略includeskms:CreateAliaskms:DeleteAlias, 和kms:UpdateAlias权限。IAM 策略可能会为您的所有 CMK 授予别名权限 Amazon Web Services 账户 . 例如,Amazon 密钥管理服务高级用户托管策略允许委托人创建、删除和列出所有 CMK 的别名,但不更新它们。

  • 在设置依赖于别名的策略之前,请查看 Amazon Web Services 账户 . 请确保您的策略仅适用于您要包含的别名。使用CloudTrail 日志CloudWatch 警报以提醒您可能会影响对 CMK 访问的别名更改。此外,ListAliases响应包括每个别名的创建日期和上次更新日期。

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

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

KMS: 请求别名

基于标识请求中 CMK 的别名,允许或拒绝对 CMK 的访问。您可以使用KMS: 请求别名条件键密钥策略或 IAM 策略。它适用于使用别名来识别请求中 CMK 的操作,即加密操作DescribeKey, 和GetPublicKey. 它对别名操作无效,例如CreateAlias或者DeleteAlias.

在条件键中,指定别名或别名模式。您无法指定别名 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,a密钥 ARN,或者不同的别名将无法满足条件,即使这些值标识相同的 CMK 也是如此。

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

KMS: 资源别名

允许或拒绝基于与 CMK 关联的别名访问 CMK,即使请求中未使用别名也是如此。这些区域有:KMS: 资源别名条件键允许您指定别名或别名模式,例如alias/test*,因此您可以在 IAM 策略中使用它来控制对同一区域中多个 CMK 的访问。它适用于任何Amazon KMS操作,该操作使用 CMK。

例如,以下 IAM 策略允许委托人在两个 Amazon Web Services 账户 . 但是,该权限仅适用于具有以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*" } } } ] }

这些区域有:kms:ResourceAliases条件是资源的条件,而不是请求。因此,未指定别名的请求仍然可以满足条件。

以下示例请求(指定匹配别名)满足条件。

$ aws kms enable-key-rotation --key-id "alias/restricted-project"

但是,下面的示例请求也满足条件,前提是指定的 CMK 具有以restricted,即使该别名未在请求中使用。

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