Amazon 全局条件键 - Amazon Key Management Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Amazon 全局条件键

Amazon 定义全局条件密钥,这是一组策略条件密钥,适用于使用 IAM 进行访问控制的所有 Amazon 服务。 Amazon KMS 支持所有全局条件键。您可以在 Amazon KMS 密钥策略和 IAM 策略中使用它们。

例如,只有当请求中的委托人由条件键值中的 Amazon 资源名称 Amazon KMS key (ARN) 表示时,您才可以使用 aws: PrincipalArn 全局条件密钥允许访问 (KMS 密钥)。要在中支持基于属性的访问控制 (AB AC) Amazon KMS,您可以在 IAM 策略中使用 aws:ResourceTag/tag-key 全局条件密钥来允许访问带有特定标签的 KMS 密钥。

在委托人为 Amazon 服务主体的策略中,为了防止Amazon 服务被用作混淆的副手,您可以使用aws:SourceArnaws:SourceAccount全局条件键。有关更多信息,请参阅 使用 aws:SourceArn 或 aws:SourceAccount 条件键

有关 Amazon 全局条件密钥的信息,包括可用的请求类型,请参阅 IAM 用户指南中的Amazon 全局条件上下文密钥。有关在 IAM policy 中使用全局条件键的示例,请参阅 IAM 用户指南中的控制对请求的访问控制标签密钥

以下主题提供有关使用基于 IP 地址和 VPC 终端节点的条件键的特殊指导。

在具有 Amazon KMS 权限的策略中使用 IP 地址条件

您可以使用 Amazon KMS 在集成 Amazon 服务中保护您的数据。但是,在允许或拒绝访问的同一策略声明中指定 IP 地址aws:SourceIp条件运算符或条件密钥时,请谨慎行事 Amazon KMS。例如,“Amazon 基于源 IP 拒绝访问” 中的Amazon策略将 Amazon 操作限制为来自指定 IP 范围的请求。

请考虑以下情况:

  1. 您向 IAM 身份附加了如下所示的策略Amazon: Amazon 基于源 IP 拒绝访问。您将aws:SourceIp 条件键的值设置为该用户公司的 IP 地址范围。此 IAM 身份还附有其他政策,允许其使用 Amazon EBS EC2、Amazon 和 Amazon KMS。

  2. 该身份尝试将加密的 EBS 卷附加到 EC2 实例。即使用户有权使用所有相关服务,此操作也会失败并显示授权错误。

第 2 步失败,因为解密卷加密数据密钥的请求来自与 Ama EC2 zon 基础设施关联的 IP 地址。 Amazon KMS 要想成功,请求必须来自始发用户的 IP 地址。由于步骤 1 中的策略明确拒绝来自指定 IP 地址以外的 IP 地址的所有请求,因此 Amazon EC2 无法解密 EBS 卷的加密数据密钥。

此外,当请求来自 Amazon VPC 终端节点时,aws:SourceIP 条件键也不起作用。要限制对 VPC 终端节点(包括 Amazon KMS VPC 终端节点)的请求,请使用 aws:SourceVpceaws:SourceVpc 条件键。有关更多信息,请参阅 Amazon VPC 用户指南 中的 VPC 终端节点 - 控制终端节点的使用

在具有 Amazon KMS 权限的策略中使用 VPC 终端节点条件

Amazon KMS 支持由提供支持的亚马逊虚拟私有云(亚马逊 VPC)终端节点Amazon PrivateLink。当请求来自 VPC 或使用 VPC 终端节点时,您可以在密钥策略和 IAM 策略中使用以下全局条件密钥来控制对 Amazon KMS 资源的访问。有关更多信息,请参阅 使用 VPC 终端节点控制对 Amazon KMS 资源的访问

  • aws:SourceVpc 将访问限制为来自指定 VPC 的请求。

  • aws:SourceVpce 将访问限制为来自指定 VPC 终端节点的请求。

如果您使用这些条件密钥来控制对 KMS 密钥的访问,则可能会无意中拒绝访问代表您使用的 Amazon Amazon KMS 服务。

请注意避免出现类似 IP 地址条件键示例的情况。如果您将对 KMS 密钥的请求限制在 VPC 或 VPC 终端节点上,则 Amazon KMS 从 Amazon S3 或 Amazon EBS 等集成服务对的调用可能会失败。即使源请求最终来源于 VPC 或 VPC 终端节点,也会发生这种情况。

在 IAM 和 KMS 密钥策略中使用 IPv6 地址

在尝试访问 KMS 之前 IPv6,请确保所有包含 IP 地址限制的密钥和 IAM 策略都已更新为包含 IPv6 地址范围。未更新以处理 IPv6 地址的基于 IP 的策略可能会导致客户端在开始使用时错误地丢失或获得访问权限 IPv6。有关 KMS 访问控制的一般指南,请参阅KMS 密钥访问权限和权限。要了解 KMS 和双堆栈支持,请参阅双堆栈端点支持

重要

这些语句不允许执行任何操作。将这些语句与允许特定操作的其他语句结合使用。

以下语句明确拒绝来自 IPv4 地址192.0.2.*范围的请求访问所有 KMS 权限。任何超出此范围的 IP 地址都不会被明确拒绝 KMS 权限。由于所有 IPv6 地址都在拒绝范围之外,因此此语句并未明确拒绝任何 IPv6 地址的 KMS 权限。

{ "Sid": "DenyKMSPermissions", "Effect": "Deny", "Action": [ "kms:*" ], "Resource": "*", "Condition": { "NotIpAddress": { "aws:SourceIp": [ "192.0.2.0/24" ] } } }

您可以修改Condition元素以拒绝 IPv4 (192.0.2.0/24) 和 IPv6 (2001:db8:1234::/32) 地址范围,如以下示例所示。

{ "Sid": "DenyKMSPermissions", "Effect": "Deny", "Action": [ "kms:*" ], "Resource": "*", "Condition": { "NotIpAddress": { "aws:SourceIp": [ "192.0.2.0/24", "2001:db8:1234::/32" ] } } }