IAM 策略的最佳实践 - AWS Key Management Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

IAM 策略的最佳实践

保护对 AWS KMS 客户主密钥 (CMK) 的访问对于您所有 AWS 资源的安全至关重要。AWS KMS CMK 用于保护 AWS 账户中许多最敏感的资源。花点时间设计密钥策略、IAM 策略、授予, 和VPC 终端节点策略来控制对 CMK 的访问。

在控制 CMK 访问的 IAM 策略语句中,使用最低权限。仅为 IAM 委托人提供他们必须使用或管理的 CMK 所需的权限。

使用密钥策略

尽可能在影响一个 CMK 的关键策略中提供权限,而不是在适用于许多 CMK(包括其他 AWS 账户中的 CMK)的 IAM 策略中提供权限。这对于敏感权限(如)尤为重要KMS: 普特键策略KMS: 调度键删除而且也适用于确定如何保护您的数据的加密操作。

限制 CreateKey 权限

授予创建密钥的权限(KMS: 创建键)只给需要它的委托人。创建 CMK 的委托人还设置其关键策略,以便他们可以授予自己和他人使用和管理他们创建的 CMK 的权限。允许此权限时,请考虑使用策略条件。例如,您可以使用kms:CustomerMasterKeySpec条件来限制对称 CMK 的权限。

在 IAM 策略中指定 CMK

最佳实践是指定密钥 ARN该权限适用于每个 CMK 的Resource元素。这种做法限制了委托人所需的 CMK 的权限。例如,此Resource元素仅列出委托人需要使用的 CMK。

"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 不切实际时,请使用Resource值,用于限制对受信任 AWS 账户和区域中 CMK 的访问,例如arn:aws:kms:region:account:key/*。或者限制对受信任 AWS 账户的所有区域 (*) 的 CMK 的访问权限,例如arn:aws:kms:*:account:key/*

您无法使用密钥 ID别名,或者别名 ARN表示中的 CMKResource字段中的 IAM 策略。如果指定别名 ARN,则策略将应用于别名,而不是 CMK。有关别名的 IAM 策略的信息,请参阅控制对别名的访问

在 IAM 策略中避免使用 “资源”:“*”

谨慎地使用通配符 (*)。在键策略中,Resource元素表示密钥策略附加到的 CMK。但是在 IAM 策略中,仅在Resource元素 ("Resource": "*") 将权限应用于委托人账户有权使用的所有 AWS 账户中的所有 CMK。这可能包括:其他 AWS 账户中的 CMK,以及委托人账户中的 CMK。

例如,要在另一个 AWS 账户中使用 CMK,委托人需要获得外部账户中 CMK 的密钥策略和其自己账户中的 IAM 策略的许可。假设任意账户为您的 AWS 账户提供了kms:Decrypt权限。如果是这样,您账户中的 IAM 策略授予角色kms:Decrypt对所有 CMK 的权限("Resource": "*")将满足要求的 IAM 部分。因此,可以担任该角色的委托人现在可以使用不受信任账户中的 CMK 解密密文。这两个帐户的 CloudTrail 日志中显示其操作的条目。

特别是,避免使用"Resource": "*"允许以下 API 操作的策略语句中。这些操作可以在其他 AWS 账户中的 CMK 上调用。

何时使用 “资源”:“*”

在 IAM 策略中,在Resource元素仅用于需要它的权限。只有以下权限需要"Resource": "*"元素。

注意

别名操作的权限 (KMS: 创建别名KMS: 更新别名KMS: 删除别名)必须附加到别名和 CMK。您可以使用"Resource": "*"来表示别名和 CMK,或者在Resource元素。有关示例,请参阅 控制对别名的访问

 

本主题中的示例提供了有关设计 CMK IAM 策略的更多信息和指导。有关一般 AWS KMS 最佳实践指南,请参阅AWS Key Management Service 最佳实践。有关所有 AWS 资源的 IAM 最佳实践,请参阅IAM 中的安全最佳实践中的IAM 用户指南