使用 IAM 策略控制 API 访问 - AWS CloudHSM

使用 IAM 策略控制 API 访问

将 IAM 策略升级到 IPv6

AWS CloudHSM 客户使用 IAM 策略来控制对 AWS CloudHSM API 的访问,并阻止配置范围之外的任何 IP 地址访问 AWS CloudHSM API。

托管 AWS CloudHSM API 的 cloudhsmv2.region.api.aws 双栈端点除了 IPv4 之外还支持 IPv6。

需要同时支持 IPv4 和 IPv6 的客户必须更新其 IP 地址筛选策略以处理 IPv6 地址,否则将影响他们通过 IPv6 连接到 AWS CloudHSM 的能力。

谁应该升级?

使用双寻址且策略包含 aws:sourceIp 的客户会受到此次升级的影响。双寻址意味着网络支持 IPv4 和 IPv6。

如果您使用双地址,则必须更新当前配置为 IPv4 格式地址的 IAM 策略,使其包含 IPv6 格式的地址。

有关访问问题的帮助,请联系 AWS Support

注意

以下客户不受此次升级的影响:

  • 使用 IPv4 网络的客户。

什么是 IPv6?

IPv6 是下一代 IP 标准,旨在最终取代 IPv4。之前的版本 IPv4 使用 32 位寻址方案来支持 43 亿台设备。而 IPv6 可使用 128 位寻址来支持大约 340 万亿万亿(或 2 的 128 次方)台设备。

有关更多详细信息,请参阅 VPC IPv6 网页

2001:cdba:0000:0000:0000:0000:3257:9652 2001:cdba:0:0:0:0:3257:9652 2001:cdba::3257:965

更新 IAM 策略以支持 IPv6

目前,IAM 策略用于使用 aws:SourceIp 筛选器设置允许的 IP 地址范围。

双寻址同时支持 IPv4 和 IPv6 流量。如果您的网络使用双寻址,则必须更新用于 IP 地址筛选的所有 IAM 策略,使其包括 IPv6 地址范围。

例如,下面的策略确定了 Condition 元素中允许的 IPv4 地址范围 192.0.2.0.*203.0.113.0.*

# https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_aws_deny-ip.html { "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": "*", "Resource": "*", "Condition": { "NotIpAddress": { "*aws:SourceIp*": [ "*192.0.2.0/24*", "*203.0.113.0/24*" ] }, "Bool": { "aws:ViaAWSService": "false" } } } }

要更新此策略,请更改 Condition 元素以包括 IPv6 地址范围 2001:DB8:1234:5678::/642001:cdba:3257:8593::/64

注意

请勿删除现有的 IPv4 地址,因为它们是向后兼容所必需的。

"Condition": { "NotIpAddress": { "*aws:SourceIp*": [ "*192.0.2.0/24*", <<DO NOT REMOVE existing IPv4 address>> "*203.0.113.0/24*", <<DO NOT REMOVE existing IPv4 address>> "*2001:DB8:1234:5678::/64*", <<New IPv6 IP address>> "*2001:cdba:3257:8593::/64*" <<New IPv6 IP address>> ] }, "Bool": { "aws:ViaAWSService": "false" } }

验证您的客户端是否支持 IPv6

建议使用 cloudhsmv2.{region}.api.aws 端点的客户验证他们是否能够连接到该端点。下面的步骤介绍了如何执行验证。

此示例使用 Linux 和 curl 版本 8.6.0,并使用位于 api.aws endpoint 端点、已启用 IPv6 的端点的 AWS CloudHSM 服务端点

注意

将 AWS 区域 切换到客户端所在的区域。在此示例中,我们使用的是美国东部(弗吉尼亚州北部)- us-east-1 端点。

  1. 使用以下 dig 命令确定端点是否使用 IPv6 地址进行解析。

    dig +short AAAA cloudhsmv2.us-east-1.api.aws 2600:1f18:e2f:4e05:1a8a:948e:7c08:c1c3
  2. 使用以下 curl 命令确定客户端网络是否可以建立 IPv6 连接。404 响应代码表示连接成功,而 0 响应代码表示连接失败。

    curl --ipv6 -o /dev/null --silent -w "\nremote ip: %{remote_ip}\nresponse code: %{response_code}\n" https://cloudhsmv2.us-east-1.api.aws remote ip: 2600:1f18:e2f:4e05:1a8a:948e:7c08:c1c3 response code: 404

如果已识别远程 IP 并且响应代码不是 0,则表示已使用 IPv6 成功与端点建立网络连接。远程 IP 应该是 IPv6 地址,因为操作系统应该选择对客户端有效的协议。如果远程 IP 不是 IPv6 地址,请使用以下命令强制 curl 使用 IPv4。

curl --ipv4 -o /dev/null --silent -w "\nremote ip: %{remote_ip}\nresponse code: %{response_code}\n" https://cloudhsmv2.us-east-1.api.aws remote ip: 3.123.154.250 response code: 404

如果远程 IP 为空或响应代码为 0,则表示客户端网络或端点的网络路径仅支持 IPv4。您可以使用以下 curl 命令验证此配置。

curl -o /dev/null --silent -w "\nremote ip: %{remote_ip}\nresponse code: %{response_code}\n" https://cloudhsmv2.us-east-1.api.aws remote ip: 3.123.154.250 response code: 404