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

控制对别名的访问

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

注意

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

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

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

kms:CreateAlias

要创建别名,委托人需要别名和相关 KMS 密钥的以下权限。

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

    以下示例策略语句在 Resource 元素中指定特定别名。但是,您可以列出多个别名 ARN 或指定别名模式,例如“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 密钥的 kms:CreateAlias。此权限必须在密钥策略或者从密钥策略委派的 IAM policy 中提供。

    { "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 密钥。例如,您可以使用 kms:KeySpec 条件键,以允许委托人仅在非对称 KMS 密钥上创建别名。有关您可以用于限制对 KMS 密钥资源的 kms:CreateAlias 权限的条件键完整列表,请参阅 AWS KMS 权限

kms:ListAliases

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

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

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

kms:UpdateAlias

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

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

  • 别名的 kms:UpdateAlias。您可以在附加到委托人的 IAM policy 中提供此权限。以下 IAM policy 指定了一个特定的别名。但是,您可以列出多个别名 ARN 或指定别名模式,例如 "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 密钥的 kms:UpdateAlias。此权限必须在密钥策略或者从密钥策略委派的 IAM policy 中提供。

    { "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 密钥的 kms:UpdateAlias。此权限必须在密钥策略或者从密钥策略委派的 IAM policy 中提供。

    { "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 密钥。例如,您可以使用 kms:ResourceAliases 条件键,以允许委托人仅在目标 KMS 密钥已具有特定别名时更新别名。有关您可以用于限制对 KMS 密钥资源的 kms:UpdateAlias 权限的条件键完整列表,请参阅 AWS KMS 权限

kms:DeleteAlias

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

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

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

    以下示例策略语句在 Resource 元素中指定别名。但是,您可以列出多个别名 ARN 或指定别名模式,如 "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 密钥的 kms:DeleteAlias。此权限必须在密钥策略或者从密钥策略委派的 IAM policy 中提供。

    { "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 policy 允许对特定账户和区域中的 KMS 密钥执行别名操作。但是,它使用 kms:KeyOrigin 条件键进一步限制对具有 AWS KMS 提供的密钥材料的 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 policy 语句的 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*" }