控制对别名的访问 - AWS Key Management Service

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

控制对别名的访问

创建或更改别名时,会影响该别名及其关联的KMS密钥。因此,管理别名的委托人必须有权对别名和所有受影响的KMS密钥调用别名操作。您可以使用密钥策略、IAM策略和授权来提供这些权限

注意

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

有关控制对所有 AWS KMS 操作的访问权限的信息,请参见权限参考

创建和管理别名的权限如下所示。

kms: CreateAlias

要创建别名,委托人需要对别名和关联KMS密钥都具有以下权限。

  • 别名的 kms:CreateAlias。在附加到允许创建别名的委托人的IAM策略中提供此权限。

    以下示例策略语句在 Resource 元素中指定特定别名。但是您可以列出多个别名ARNs或指定别名模式,例如 “test*”。您还可以指定 "*"Resource 值以允许委托人在账户和区域中创建任何别名。创建别名的权限也可以包含在对账户和区域中的所有资源的 kms:Create* 权限中。

    { "Sid": "IAMPolicyForAnAlias", "Effect": "Allow", "Action": [ "kms:CreateAlias", "kms:UpdateAlias", "kms:DeleteAlias" ], "Resource": "arn:aws:kms:us-west-2:111122223333:alias/test-key" }
  • kms:CreateAlias为了KMS钥匙。此权限必须在密钥策略或从密钥IAM策略委托的策略中提供。

    { "Sid": "Key policy for 1234abcd-12ab-34cd-56ef-1234567890ab", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:user/KMSAdminUser"}, "Action": [ "kms:CreateAlias", "kms:DescribeKey" ], "Resource": "*" }

您可以使用条件键来限制可以与别名关联的KMS密钥。例如,您可以使用 k ms: KeySpec 条件密钥来允许委托人仅在非对称KMS密钥上创建别名。有关可用于限制密钥资源kms:CreateAlias权限的条件密钥的完整列表,请参阅AWS KMS 权限。KMS

kms: ListAliases

要列出账户和区域中的别名,委托人必须拥有IAM策略中的kms:ListAliases权限。由于此策略与任何特定的KMS密钥或别名资源无关,因此策略中资源元素的值必须为"*"

例如,以下IAM政策声明授予委托人列出账户和区域中所有KMS密钥和别名的权限。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:ListKeys", "kms:ListAliases" ], "Resource": "*" } }

kms: UpdateAlias

要更改与别名关联的KMS密钥,委托人需要三个权限元素:一个用于别名,一个用于当前KMS密钥,一个用于新KMS密钥。

例如,假设你想将test-key别名从密钥编号为 1234abcd-12ab-34cd-56ef-1234567890ab 的KMS密钥更改为密钥标识为 0987dcba-09fe-87dc-65ba-ab0987654321 的密钥。KMS在这种情况下,请包括类似于本部分中的示例的策略语句。

  • 别名的 kms:UpdateAlias。您在委托人所附的IAM策略中提供此权限。以下IAM策略指定了特定的别名。但是您可以列出多个别名ARNs或指定别名模式,例如"test*"。您还可以指定 "*"Resource 值以允许委托人在账户和区域中更新任何别名。

    { "Sid": "IAMPolicyForAnAlias", "Effect": "Allow", "Action": [ "kms:UpdateAlias", "kms:ListAliases", "kms:ListKeys" ], "Resource": "arn:aws:kms:us-west-2:111122223333:alias/test-key" }
  • kms:UpdateAlias用于当前与别名关联的KMS密钥。此权限必须在密钥策略或从密钥IAM策略委托的策略中提供。

    { "Sid": "Key policy for 1234abcd-12ab-34cd-56ef-1234567890ab", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:user/KMSAdminUser"}, "Action": [ "kms:UpdateAlias", "kms:DescribeKey" ], "Resource": "*" }
  • kms:UpdateAlias用于操作与别名关联的KMS密钥。此权限必须在密钥策略或从密钥IAM策略委托的策略中提供。

    { "Sid": "Key policy for 0987dcba-09fe-87dc-65ba-ab0987654321", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:user/KMSAdminUser"}, "Action": [ "kms:UpdateAlias", "kms:DescribeKey" ], "Resource": "*" }

您可以使用条件键来限制UpdateAlias操作中的一个或两个KMS密钥。例如,您可以使用 k ms: ResourceAliases 条件密钥来允许委托人仅在目标KMS密钥已经具有特定别名时才更新别名。有关可用于限制密钥资源kms:UpdateAlias权限的条件密钥的完整列表,请参阅AWS KMS 权限。KMS

kms: DeleteAlias

要删除别名,委托人需要获得别名和关联KMS密钥的权限。

与往常一样,在授予委托人删除资源的权限时,您应该谨慎操作。但是,删除别名对关联的KMS密钥没有影响。虽然这可能会导致依赖别名的应用程序出现故障,但如果错误地删除了别名,您可以重新创建别名。

  • 别名的 kms:DeleteAlias。在附加到允许删除别名的委托人的IAM策略中提供此权限。

    以下示例策略语句在 Resource 元素中指定别名。但是您可以列出多个别名ARNs或指定别名模式,例如"test*",您也可以将Resource值指定为"*"以允许委托人删除账户和区域中的任何别名。

    { "Sid": "IAMPolicyForAnAlias", "Effect": "Allow", "Action": [ "kms:CreateAlias", "kms:UpdateAlias", "kms:DeleteAlias" ], "Resource": "arn:aws:kms:us-west-2:111122223333:alias/test-key" }
  • kms:DeleteAlias获取关联的KMS密钥。此权限必须在密钥策略或从密钥IAM策略委托的策略中提供。

    { "Sid": "Key policy for 1234abcd-12ab-34cd-56ef-1234567890ab", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/KMSAdminUser" }, "Action": [ "kms:CreateAlias", "kms:UpdateAlias", "kms:DeleteAlias", "kms:DescribeKey" ], "Resource": "*" }

限制别名权限

当资源是密钥时,您可以使用条件键来限制别名权限。KMS例如,以下IAM策略允许对特定账户和区域中的KMS密钥进行别名操作。但是,它使用 k ms: KeyOrigin 条件密钥来进一步限制对KMS密钥材料来自的密钥的权限 AWS KMS。

有关可用于限制密钥资源的别名权限的条件密KMS钥的完整列表,请参阅AWS KMS 权限

{ "Sid": "IAMPolicyKeyPermissions", "Effect": "Allow", "Resource": "arn:aws:kms:us-west-2:111122223333:key/*", "Action": [ "kms:CreateAlias", "kms:UpdateAlias", "kms:DeleteAlias" ], "Condition": { "StringEquals": { "kms:KeyOrigin": "AWS_KMS" } } }

您不能在资源为别名的策略语句中使用条件键。要限制委托人可以管理的别名,请使用IAM策略声明中控制别名访问权限的Resource元素的值。例如,以下政策声明允许委托人创建、更新或删除 AWS 账户 和区域中的任何别名,除非别名以开头Restricted

{ "Sid": "IAMPolicyForAnAliasAllow", "Effect": "Allow", "Action": [ "kms:CreateAlias", "kms:UpdateAlias", "kms:DeleteAlias" ], "Resource": "arn:aws:kms:us-west-2:111122223333:alias/*" }, { "Sid": "IAMPolicyForAnAliasDeny", "Effect": "Deny", "Action": [ "kms:CreateAlias", "kms:UpdateAlias", "kms:DeleteAlias" ], "Resource": "arn:aws:kms:us-west-2:111122223333:alias/Restricted*" }