选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

检查密钥策略

聚焦模式
检查密钥策略 - AWS Key Management Service

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

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

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

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

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

检查密钥策略文档,并记下每个策略语句的 Principal 元素中指定的所有委托人。在Allow生效的策略声明中,IAM 用户、IAM 角色以及Principal元素 AWS 账户 中的角色有权访问此 KMS 密钥。

注意

除非您使用条件限制密钥政策,否则不要在允许权限的任何密钥政策语句将主体设置为星号(*)。星号赋予每个身份使用 KMS 密钥的 AWS 账户 权限,除非其他策略声明明确拒绝。其他用户只要在自己的账户中拥有相应权限,就 AWS 账户 可以使用您的 KMS 密钥。

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

例 策略语句 1
{ "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:root"}, "Action": "kms:*", "Resource": "*" }

在保单声明1中,arn:aws:iam::111122223333:root是指 AWS 账户 111122223333的AWS 账户本金。(这不是账户的根用户。) 默认情况下,当您使用创建新的 KMS 密钥或以编程方式创建新的 KMS 密钥但不提供密钥策略时 AWS Management Console,密钥策略文档中会包含类似这样的策略声明。

包含允许访问账户中的 IAM 策略的声明的 AWS 账户 密钥策略文档,允许访问 KMS 密钥。这意味着,即使账户中的用户和角色未在密钥策略文档中显式列为主体,也可以访问 KMS 密钥。请仔细检查所有 AWS 账户 列为委托人的所有 IAM 策略,以确定它们是否允许访问此 KMS 密钥。

例 策略语句 2
{ "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:role/KMSKeyAdmins"}, "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:role/KMSKeyAdmins提及 AWS 账户 111122223333 中名为 KMSKey Admins 的 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指的是在 AWS 账户 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指的是在 AWS 账户 111122223333 EncryptionApp 中命名的 IAM 角色。被授权代入此角色的主体被允许执行策略语句中列出的操作。向大多数与 AWS KMS集成的AWS 服务(特别是使用授权的服务)委托 KMS 密钥使用权限时,都将需要将这些操作以及示例策略语句 3 中允许的操作结合使用。Condition元素中的 kms: GrantIsFor AWSResource 值可确保只有当委托是与授权集成 AWS KMS 并使用授权进行授权的 AWS 服务时,才允许委托。

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

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

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。