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

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

客户管理的策略示例

本节的 IAM 策略示例介绍如何允许各Amazon KMS操作。

重要

仅当 CMK 的密钥策略也允许时,才允许提供以下策略中的某些权限。有关更多信息,请参阅Amazon KMS API 权限参考

有关编写和格式化 JSON 策略文档的帮助,请参阅IAM JSON 策略参考中的IAM 用户指南.

允许用户查看Amazon KMS控制台

以下 IAM 策略允许用户对Amazon KMS控制台。具有这些权限的用户可以查看 Amazon Web Services 账户 ,但它们不能创建或更改任何 CMK。

要查看Amazon托管密钥Customer managed keys页面,委托人需要KMS: 列表键kms:ListAliases权限。剩余的权限,特别是kms:DescribeKey,才能查看 CMK 详细信息页面上的可选 CMK 表列和数据。这些区域有:iAM: 列表用户iam:ListRoles权限才能在默认视图中显示密钥策略而不会出现错误。要查看自定义密钥存储页面和有关自定义密钥存储中 CMK 的详细信息,委托人还需要KMS: 描述关键店权限。

如果限制用户对特定 CMK 的控制台访问权限,则控制台会为每个 CMK 显示一个不可见的错误。

此策略包含两个策略语句。这些区域有:Resource元素允许对示例所有区域中的所有 CMK 具有指定权限 Amazon Web Services 账户 . 控制台查看器不需要额外的访问权限,因为Amazon KMS控制台仅显示委托人账户中的 CMK。即使他们有权查看其他 Amazon Web Services 账户 . 剩余的Amazon KMS和 IAM 权限需要"Resource": "*"元素,因为它们不适用于任何特定的 CMK。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadOnlyAccessForAllCMKsInAccount", "Effect": "Allow", "Action": [ "kms:GetPublicKey", "kms:GetKeyRotationStatus", "kms:GetKeyPolicy", "kms:DescribeKey", "kms:ListKeyPolicies", "kms:ListResourceTags" ], "Resource": "arn:aws:kms:*:111122223333:key/*" }, { "Sid": "ReadOnlyAccessForOperationsWithNoCMK", "Effect": "Allow", "Action": [ "kms:ListKeys", "kms:ListAliases", "iam:ListRoles", "iam:ListUsers" ], "Resource": "*" } ] }

允许用户创建 CMK

以下 IAM 策略允许用户创建 CMK。Resource 元素的值是 *,这是因为 CreateKey 操作不使用任何特定的 Amazon KMS 资源(CMK 或别名)。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*" } }

创建密钥的委托人可能需要一些相关权限。

  • KMS: 普特键策略— 拥有的委托人kms:CreateKey权限可以设置 CMK 的初始密钥策略。但是,CreateKey调用方必须具有KMS: 普特键策略权限,允许他们更改 CMK 的密钥策略,或者他们必须指定BypassPolicyLockoutSafetyCheck的参数CreateKey,我们不建议这么做。这些区域有:CreateKey调用方可以获得kms:PutKeyPolicy权限,也可以将此权限包含在他们正在创建的 CMK 的密钥策略中。

  • KMS: 标记资源— 要将标签添加到 CMKCreateKey操作,CreateKey调用方必须具有KMS: 标记资源权限。将此权限包含在新 CMK 的关键策略中是不够的。但是,如果CreateKey调用方包括kms:TagResource,他们可以在创建 CMK 后在单独调用中添加标签。

  • KMS: 创建别名— 在Amazon KMS控制台必须具有KMS: 创建别名权限上的 CMK 和别名。(控制台进行两次调用;一次调用CreateKey和一个CreateAlias)。您必须在 IAM 策略中提供别名权限。您可以在密钥策略或 IAM 策略中提供 CMK 权限。有关详细信息,请参阅 控制对别名的访问

除了kms:CreateKey,以下 IAM 策略提供kms:TagResource权限上的所有 CMK Amazon Web Services 账户 和kms:CreateAlias权限对所有别名的帐户。它还包括一些只能在 IAM 策略中提供的有用的只读权限。

此 IAM 策略不包含kms:PutKeyPolicy权限或可以在密钥策略中设置的任何其他权限。这是一个最佳实践以在密钥策略中设置这些权限,其中它们专门应用于一个 CMK。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "IAMPermissionsForParticularCMKs", "Effect": "Allow", "Action": "kms:TagResource", "Resource": "arn:aws:kms:*:111122223333:key/*" }, { "Sid": "IAMPermissionsForParticularAliases", "Effect": "Allow", "Action": "kms:CreateAlias", "Resource": "arn:aws:kms:*:111122223333:alias/*" }, { "Sid": "IAMPermissionsForAllCMKs", "Effect": "Allow", "Action": [ "kms:CreateKey", "kms:ListKeys", "kms:ListAliases" ], "Resource": "*" } ] }

允许用户使用特定的 CMK 进行加密和解密 Amazon Web Services 账户

以下 IAM 策略允许用户使用 Amazon Web Services 账户 1111122223333。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt" ], "Resource": "arn:aws:kms:*:111122223333:key/*" } }

允许用户使用特定的 CMK 进行加密和解密 Amazon Web Services 账户 和区域

以下 IAM 策略允许用户使用 Amazon Web Services 账户 美国西部(俄勒冈)区域中的 111122223333。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-west-2:111122223333:key/*" ] } }

允许用户使用特定 CMK 进行加密和解密

以下 IAM 策略允许用户使用Resource元素。在 IAM 策略语句中指定 CMK 时,必须使用密钥 ARNCMK 的。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321" ] } }

阻止用户禁用或删除任何 CMK

以下 IAM 策略阻止用户禁用或删除任何 CMK,即使其他 IAM 策略或密钥策略允许这些权限时也是如此。以显式方式拒绝权限的策略将覆盖所有其他策略,甚至包括那些以显式方式允许相同权限的策略。有关更多信息,请参阅密钥访问故障排除

{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": [ "kms:DisableKey", "kms:ScheduleKeyDeletion" ], "Resource": "*" } }