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

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

客户管理的策略示例

在本节中,您可以找到允许执行各种 AWS KMS 操作的权限的示例 IAM 策略。

重要

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

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

允许用户在 AWS KMS 控制台中查看 CMK

以下 IAM 策略允许用户对 AWS KMS 控制台进行只读访问。具有这些权限的用户可以查看其 AWS 账户中的所有 CMK,但无法创建或更改任何 CMK。

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

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

此策略包含两个策略语句。这些区域有:Resource元素允许对示例 AWS 账户的所有区域中的所有 CMK 拥有指定权限。控制台查看器不需要其他访问权限,因为 AWS KMS 控制台仅显示委托人账户中的 CMK。即使他们有权查看其他 AWS 账户中的 CMK,也是如此。剩余的 AWS 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操作不使用任何特定 AWS 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: 标记资源— 要将标签添加到 CMK 中CreateKey操作,CreateKey调用方必须具有KMS: 标记资源权限。将此权限包含在新 CMK 的关键策略中是不够的。但是,如果CreateKey调用方包括kms:TagResource,他们可以在创建 CMK 后在单独调用中添加标签。

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

除了kms:CreateKey,以下 IAM 策略提供kms:TagResource对 AWS 账户中所有 CMK 的权限和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": "*" } ] }

允许用户使用特定 AWS 账户中的任何 CMK 进行加密和解密

以下 IAM 策略允许用户使用 AWS 账户 111122223333 中的任何 CMK 来加密和解密数据。

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

允许用户使用特定 AWS 账户和区域中的任何 CMK 进行加密和解密

以下 IAM 策略允许用户使用美国西部(俄勒冈)区域的 AWS 账户 111122223333 中的任何 CMK 来加密和解密数据。

{ "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": "*" } }