控制对别名的访问
创建或更改别名时,会影响别名及其关联的 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*" }