结合 IAM policy 和 AWS KMS
您可以使用 IAM policy 以及密钥策略、授权和 VPC 端点策略来在 AWS KMS 中控制对您的 AWS KMS keys 的访问权限。
注意
要使用 IAM policy 控制对 KMS 密钥的访问,KMS 密钥的密钥政策必须授予账户使用 IAM policy 的权限。具体而言,密钥策略必须包含启用 IAM policy 的策略语句。
本节介绍如何使用 IAM policy 控制对 AWS KMS 操作的访问。有关 IAM 的更多一般信息,请参阅 IAM 用户指南。
所有 KMS 密钥都必须具有密钥策略。IAM policy 是可选的。要使用 IAM policy 控制对 KMS 密钥的访问,KMS 密钥的密钥政策必须授予账户使用 IAM policy 的权限。具体而言,密钥策略必须包含启用 IAM policy 的策略语句。
IAM policy 可以控制对任何 AWS KMS 操作的访问。与密钥策略不同,IAM policy 可以控制对多个 KMS 密钥的访问,并为多个相关 AWS 服务的操作提供权限。但 IAM policy 对于控制对操作的访问特别有用,例如 CreateKey,这类操作不能由密钥策略控制,因为它们不涉及任何特定的 KMS 密钥。
如果您通过 Amazon Virtual Private Cloud (Amazon VPC) 终端节点访问 AWS KMS,您还可以在使用 VPC 终端节点时使用该终端节点的策略来限制对 AWS KMS 资源的访问。例如,使用 VPC 终端节点时,您可能只允许 AWS 账户 中的委托人访问您的客户托管密钥。有关详细信息,请参阅 VPC 端点策略。
有关编写和格式化 JSON 策略文档的帮助,请参阅 IAM 用户指南中的 IAM JSON 策略参考。
您可以通过以下方式使用 IAM policy:
-
将权限策略附加到角色以启用联合身份验证或跨账户权限 – 您可以将 IAM policy 附加到 IAM 角色以启用联合身份验证,允许跨账户权限,或者向运行在 EC2 实例上的应用程序授予权限。有关 IAM 角色各种使用场景的更多信息,请参阅 IAM 用户指南中的 IAM 角色。
-
将权限策略附加到用户或组 – 您可以附加允许某个用户或用户组调用 AWS KMS 操作的策略。但是,IAM 最佳实践建议您尽可能使用具有临时凭证的身份,例如 IAM 角色。
以下示例显示了一个具有 AWS KMS 权限的 IAM policy。此策略允许附加到其上的 IAM 身份获取列出所有 KMS 密钥和别名。
与所有 IAM policy 一样,此策略没有 Principal 元素。将 IAM policy 附加到 IAM 身份时,该身份将获取策略中指定的权限。
有关显示所有 AWS KMS API 操作及其适用的资源的表,请参阅 权限参考。
允许多个 IAM 主体访问 KMS 密钥
IAM 组不是密钥策略中的有效委托人。要允许多个 IAM 用户和角色访问 KMS 密钥,请执行下列操作中的一种:
-
将 IAM 角色作为密钥策略中的主体。多个授权用户可以根据需要代入该角色。有关详细信息,请参阅《IAM 用户指南》中的 IAM 角色。
虽然您可以在密钥策略中列出多个 IAM 用户,但不建议采用这种做法,因为这将要求您在每次授权用户列表发生变化时更新密钥策略。此外,IAM 最佳实践也不鼓励使用具有长期凭证的 IAM 用户。有关更多信息,请参阅《IAM 用户指南》中的 IAM 安全最佳实践。
-
使用 IAM policy 向 IAM 组授予权限。要执行此操作,请确保密钥策略包含一个 启用 IAM policy 以允许访问 KMS 密钥 的语句,创建一个 IAM policy 以允许访问该 KMS 密钥,然后 将该策略附加到 IAM 组(其中包含授权 IAM 用户)。使用此方式,您不需要在授权用户列表发生更改时更改任何策略。相反,您只需在相应的 IAM 组中添加或删除这些用户。有关详细信息,请参阅《IAM 用户指南》中的 IAM 用户组。
有关 AWS KMS 密钥政策和 IAM policy 如何协同工作的更多信息,请参阅 排除 AWS KMS 权限故障。