将 IAM 策略升级到 IPv6
网络监测仪客户使用 IAM 策略来设置允许的 IP 地址范围,以阻止配置范围之外的任何 IP 地址访问网络监测仪 API。
internetmonitor.region
.api.aws 端点正在升级为支持双栈配置(IPv4 和 IPv6)。
未更新为支持处理 IPv6 地址的 IP 地址筛选策略可能导致客户端无法访问网络监测仪 API。
受 IPv6 升级影响的客户
使用双栈配置且策略中包含 aws:sourceIp 筛选条件的客户会受到本次升级的影响。双栈配置意味着网络同时支持 IPv4 和 IPv6。
如果您使用双栈配置,则必须更新当前使用 IPv4 格式地址配置的 IAM 策略,使其包含 IPv6 格式的地址。
以下总结了建议的操作,具体取决于您的情况。要确认 SDK 使用的端点,请参阅识别代码使用的网络监测仪端点。
终端节点 | 使用带 aws:sourceIp 条件的 IAM 策略? |
推荐操作 |
---|---|---|
|
是 |
要限制为仅允许 IPv4 访问,则无需执行进一步的操作。如果预计未来将需要 IPv6 支持,则可以采取措施确保同时兼容 IPv4 和 IPv6。 为确保未来的兼容性,请在 2024 年 11 月 1 日当天或之后更新 SDK,然后通过设置 如果您选择同时使用 IPv4 和 IPv6,则还必须更新 IAM 策略中的 IP 地址筛选条件 ( |
|
否 |
要限制为仅允许 IPv4 访问,则无需执行进一步的操作。如果预计未来将需要 IPv6 支持,则可以采取措施确保同时兼容 IPv4 和 IPv6。 为确保未来的兼容性,请在 2024 年 11 月 1 日当天或之后更新 SDK,然后通过设置 |
|
是 |
目前,此端点仅支持 IPV4。从 2024 年 11 月 1 日起,此端点上将会启用 IPv6。 为确保未来同时兼容 IPv4 和 IPv6,请在 2024 年 11 月 1 日当天或之后更新 SDK,然后通过设置 更改为同时使用 IPv4 和 IPv6 时,还必须更新 IAM 策略中的 IP 地址筛选条件 ( 如果想限制为仅允许 IPv4 访问,请设置 |
|
否 |
目前,此端点仅支持 IPV4。从 2024 年 11 月 1 日起,此端点上将会启用 IPv6。 为确保未来同时兼容 IPv4 和 IPv6,请在 2024 年 11 月 1 日当天或之后更新 SDK,然后通过设置 如果想限制为仅允许 IPv4 访问,请设置 |
有关访问问题的帮助,请联系 Amazon Web Services 支持
什么是 IPv6?
IPv6 是下一代 IP 标准,旨在最终取代 IPv4。IPv4 使用 32 位寻址方案,最多支持 43 亿个设备。IPv6 使用 128 位寻址方案,最多可支持大约 340 万亿(即 2 的 128 次方)个设备。
以下是 IPv6 地址的示例:
2001:cdba:0000:0000:0000:0000:3257:9652 2001:cdba:0:0:0:0:3257:9652 2001:cdba::3257:965
IPv6 提供了更大的地址空间、更高的路由效率以及对新互联网服务的更好支持。通过更新到双栈配置并支持 IPv6,网络监测仪可以提高性能和可扩展性。按照本节中的步骤更新配置并利用双栈支持的优势。
识别代码使用的网络监测器端点
如果您使用网络监测仪 SDK,请首先验证代码正在使用的端点:IPv4 端点还是双栈(IPv4 和 IPv6)端点。如果未将 SDK 与网络监测仪结合使用,则可跳过本节。
您可以运行以下代码示例来确定正在使用的网络监测仪端点。在此例中,我们将在美国东部(弗吉尼亚州北部)区域中使用适用于 Go 的网络监测仪 SDK。
package main import ( "fmt" "log" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/internetmonitor" ) func main() { // Create a new session with the default configuration sess := session.Must(session.NewSession(&aws.Config{ Region: aws.String("us-east-1"), })) // Create a new Internet Monitor client internetMonitorClient := internetmonitor.New(sess) // Get the endpoint URL endpoint := internetMonitorClient.Endpoint fmt.Printf("Internet Monitor endpoint URL: %s\n", endpoint) }
当您运行此代码时,将会返回网络监测仪端点。如果您看到以下响应,则表示您使用的网络监测仪域仅支持 IPv4。您可以确定这一点,是因为端点 URL 格式中包含 amazonaws.com
。
Internet Monitor endpoint URL: https://internetmonitor.us-east-1.amazonaws.com
如果您看到以下响应,则表示您使用的域正在升级为支持双栈(IPv4 和 IPv6)。此处您可以确定这一点,是因为端点 URL 中包含 api.aws
。但请注意,在升级完成之前,此端点仅支持 IPv4。
Internet Monitor endpoint URL: https://internetmonitor.us-east-1.api.aws
更新 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 地址范围,如以下示例所示:
"Condition": { "NotIpAddress": { "*aws:SourceIp*": [ "*192.0.2.0/24*", <<Existing IPv4 address - DO NOT REMOVE>> "*203.0.113.0/24*", <<Existing IPv4 address - DO NOT REMOVE>> "
*2001:DB8:1234:5678::/64*
", <<New IPv6 IP address>> "*2001:cdba:3257:8593::/64*
" <<New IPv6 IP address>> ] }, "Bool": { "aws:ViaAWSService": "false" } }
重要
请勿删除策略中现有的 IPv4 地址。向后兼容性将需要这些地址。
有关使用 IAM 管理访问权限的更多信息,请参阅《Amazon Identity and Access Management 用户指南》中的托管策略与内联策略。
更新策略后测试网络
更新 IAM 策略以包括对 IPv6 地址的支持后,我们建议您测试网络是否能够访问 IPv6 端点。本节提供了多个示例,具体取决于您使用的操作系统。
使用 Linux/Unix 或 Mac OS X 测试网络
如果使用的是 Linux/Unix 或 Mac OS X,可以使用以下 curl 命令来测试您的网络是否能够访问 IPv6 端点。
curl -v -s -o /dev/null http://ipv6.ec2-reachability.amazonaws.com/
如果通过 IPv6 建立了连接,则连接的 IP 地址会显示与以下类似的信息:
* About to connect() to aws.amazon.com port 443 (#0) * Trying IPv6 address... connected * Connected to aws.amazon.com (IPv6 address) port 443 (#0) > GET / HTTP/1.1 > User-Agent: curl/7.18.1 (x86_64-unknown-linux-gnu) libcurl/7.18.1 OpenSSL/1.0.1t zlib/1.2.3 > Host: aws.amazon.com
使用 Windows 测试网络
如果使用的是 Windows,则使用如下所示的 ping
命令来测试您的网络能否通过 IPv6 或 IPv4 访问双栈端点:
ping aws.amazon.com
如果 ping
通过 IPv6 访问该端点,则该命令会返回 IPv6 地址。
验证客户端是否可以支持 IPv6
我们建议您在切换到使用 internetmonitor.{region}.api.aws 端点前,首先验证客户端是否能够访问其他已启用 IPv6 的 Amazon Web Services 服务端点。以下步骤介绍如何使用现有的 IPv6 端点进行验证。
此例使用 Linux 和 curl 版本 8.6.0,并使用 Amazon Athena 服务,后者在 api.aws 域具有启用了 IPv6 的端点。
注意
将您的 Amazon Web Services 区域切换到客户端所在的区域。在此示例中,我们使用的是美国东部(弗吉尼亚州北部)- us-east-1
端点。
使用以下示例验证客户端是否能够访问启用 IPv6 的 Amazon 端点。
-
使用以下命令验证 Athena 端点是否使用 IPv6 地址进行解析。
dig +short AAAA athena.us-east-1.api.aws 2600:1f18:e2f:4e05:1a8a:948e:7c08:d2d6 2600:1f18:e2f:4e03:4a1e:83b0:8823:4ce5 2600:1f18:e2f:4e04:34c3:6e9a:2b0d:dc79
-
现在,使用以下命令确定客户端网络是否能够使用 IPv6 建立连接:
curl --ipv6 -o /dev/null --silent -w "\nremote ip: %{remote_ip}\nresponse code: %{response_code}\n" https://athena.us-east-1.api.aws remote ip: 2600:1f18:e2f:4e05:1a8a:948e:7c08:d2d6 response code: 404
如果已识别远程 IP 地址并且响应代码不是
0
,则表示已使用 IPv6 成功与端点建立网络连接。如果远程 IP 地址为空或响应代码为
0
,则表示客户端网络或端点的网络路径仅支持 IPv4。您可使用以下 curl 命令执行此操作:curl -o /dev/null --silent -w "\nremote ip: %{remote_ip}\nresponse code: %{response_code}\n" https://athena.us-east-1.api.aws remote ip: 3.210.103.49 response code: 404
如果运行此命令,已识别远程 IP 地址并且响应代码不是
0
,则表示已使用 IPv4 成功与端点建立网络连接。