检查密钥策略 - Amazon Key Management Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

检查密钥策略

密钥策略是控制对 KMS 密钥访问的主要方法。每个 KMS 密钥都有且只有一个密钥策略。

如果密钥策略由默认密钥策略组成或包含默认密钥策略,则密钥策略允许账户中的 IAM 管理员使用 IAM 策略控制对 KMS 密钥的访问。此外,如果密钥策略赋予其他 Amazon Web Services 账户 使用 KMS 密钥的权限,则外部账户中的 IAM 管理员可以使用 IAM 策略委派这些权限。要确定可访问 KMS 密钥的委托人的完整列表,请检查 IAM 策略

要查看您账户中的 Amazon KMS 客户托管密钥Amazon 托管式密钥 的密钥策略,请使用 Amazon KMS API 中的 Amazon Web Services Management Console 或 GetKeyPolicy 操作。要查看密钥策略,必须对 KMS 密钥具备 kms:GetKeyPolicy 权限。有关查看 KMS 密钥的密钥策略的说明,请参阅 查看密钥策略

检查密钥策略文档,并记下每个策略语句的 Principal 元素中指定的所有委托人。Principal 元素中的 IAM 用户、IAM 角色和 Amazon Web Services 账户 账户均可以访问此 KMS 密钥。

注意

除非您使用条件限制密钥策略,否则不要在允许权限的任何密钥策略语句将委托人设置为星号 (*)。星号表示允许每个 Amazon Web Services 账户 权限中的每个身份使用 KMS 密钥,除非另一个策略语句明确拒绝它。其他 Amazon Web Services 账户 中的用户需要他们自己的账户中相应的 IAM 权限才能使用 KMS 密钥。

以下示例使用默认密钥策略中的策略语句来演示如何执行该操作。

例 策略语句 1

{ "Sid": "Enable IAM policies", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:root"}, "Action": "kms:*", "Resource": "*" }

在政策语句 1 中,arn:aws:iam::111122223333:root 是指 Amazon Web Services 账户 111122223333。默认情况下,当您使用 Amazon Web Services Management Console 创建新的 KMS 密钥时,密钥策略文档中将存在与此语句类似的策略语句。此外,当您以编程方式创建新的 KMS 密钥但未提供密钥策略时,它也将存在。

如果密钥策略文档中具有允许访问 Amazon Web Services 账户 (根用户)的语句,则将使账户中的 IAM 策略允许访问 KMS 密钥。这意味着,即使账户中的 IAM 用户和角色未在密钥策略文档中显示列为委托人,也可以访问 KMS 密钥。请务必检查所有列为委托人的 Amazon Web Services 账户 中的所有 IAM 策略,以确定它们是否允许访问此 KMS 密钥。

例 策略语句 2

{ "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:user/KMSKeyAdmin"}, "Action": [ "kms:Describe*", "kms:Put*", "kms:Create*", "kms:Update*", "kms:Enable*", "kms:Revoke*", "kms:List*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "*" }

在策略语句 2 中,arn:aws:iam::111122223333:user/KMSKeyAdmin 指的是 Amazon Web Services 账户 111122223333 中名为 KMSKeyAdmin 的 IAM 用户。该策略允许此用户执行语句中列出的操作,即用于管理 KMS 密钥的管理操作。

例 策略语句 3

{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:role/EncryptionApp"}, "Action": [ "kms:DescribeKey", "kms:GenerateDataKey*", "kms:Encrypt", "kms:ReEncrypt*", "kms:Decrypt" ], "Resource": "*" }

在策略语句 3 中,arn:aws:iam::111122223333:role/EncryptionApp 指的是 Amazon Web Services 账户 111122223333 中名为 EncryptionApp 的 IAM 角色。该策略允许可以担任此角色的委托人执行语句中列出的操作,即有关使用 KMS 密钥对数据进行加密和解密的加密操作。

例 策略语句 4

{ "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:role/EncryptionApp"}, "Action": [ "kms:ListGrants", "kms:CreateGrant", "kms:RevokeGrant" ], "Resource": "*", "Condition": {"Bool": {"kms:GrantIsForAWSResource": true}} }

在策略语句 4 中,arn:aws:iam::111122223333:role/EncryptionApp 指的是 Amazon Web Services 账户 111122223333 中名为 EncryptionApp 的 IAM 角色。该策略允许可以担任此角色的委托人执行语句中列出的操作。向大多数与 Amazon KMS 集成的 Amazon 服务(特别是使用授权的服务)委托 KMS 密钥使用权限时,都将需要将这些操作以及示例策略语句 3 中允许的操作结合使用。Condition 元素确保仅当委托为与 Amazon 集成并使用授权命令进行授权的 Amazon KMS 服务时才允许委托。

要了解可以在密钥策略文档中指定委托人的所有不同方法,请参阅 IAM 用户指南中的指定委托人

要了解有关 Amazon KMS 密钥策略的更多信息,请参阅Amazon KMS 中的密钥策略