IAM ポリシーを IPv6 にアップグレードする
Internet Monitor のお客様は、IAM ポリシーを使用して IP アドレスの許容範囲を設定し、設定した範囲外の IP アドレスが Internet Monitor API にアクセスできないようにします。
Internet Monitor API にアクセスする internetmonitor.region
.api.aws エンドポイントは、デュアルスタック (IPv4 および IPv6) をサポートするようにアップグレードされています。
IPv6 アドレスの処理用に更新されていない IP アドレスのフィルタリングポリシーでは、Internet Monitor API にクライアントがアクセスできなくなる場合があります。
IPv6 を含むアップグレードの影響を受けるお客様
aws:sourceIp フィルターを含むポリシーでデュアルスタックを使用しているお客様は、このアップグレードの影響を受けます。デュアルスタックとは、ネットワークが IPv4 と IPv6 の両方をサポートすることを意味します。
デュアルスタックを使用している場合は、現在 IPv4 形式のアドレスで構成されている IAM ポリシーを、IPv6 形式のアドレスを含むように更新する必要があります。
以下に、シナリオに応じて推奨されるアクションをまとめます。SDK が使用するエンドポイントを確認するには、「コードで使用される Internet Monitor エンドポイントを特定する」を参照してください。
Endpoint | 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 のみへのアクセスを制限する場合は、 |
アクセスに関する問題については、サポート
IPv6 とは
IPv6 は、最終的に IPv4 を IPv6 に置き換えることを意図した次世代の IP 規格です。IPv4 は、32 ビットのアドレス指定方式を使用して 43 億台のデバイスをサポートします。IPv6 は代わりに 128 ビットのアドレス指定を使用して、約 340 兆 x1 兆倍 x1 兆倍 (つまり 2 の 128 乗) のデバイスをサポートします。
IPv6 アドレスの例を次に示します。
2001:cdba:0000:0000:0000:0000:3257:9652 2001:cdba:0:0:0:0:3257:9652 2001:cdba::3257:965
IPv6 は、アドレススペースの拡大、ルーティング効率の向上、新しいインターネットサービスのサポート向上を実現します。Internet Monitor は、デュアルスタックに更新し、IPv6 をサポートすることで、パフォーマンスとスケーラビリティが向上します。このセクションの手順に従って設定を更新し、デュアルスタックのサポートを活用します。
コードで使用される Internet Monitor エンドポイントを特定する
Internet Monitor SDK を使用する場合は、コードが IPv4 エンドポイントまたはデュアルスタック (IPv4 および IPv6) エンドポイントのどちらを使用しているかを確認することから始めます。Internet Monitor で SDK を使用しない場合は、このセクションをスキップできます。
次のコード例を実行して、使用している Internet Monitor エンドポイントを特定できます。この例では、米国東部 (バージニア北部) リージョンで Internet Monitor SDK for Go を使用しています。
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) }
このコードを実行すると、Internet Monitor エンドポイントが返されます。次のレスポンスが表示された場合は、IPv4 のみをサポートする Internet Monitor ドメインを使用しています。エンドポイント 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
IPv6 の IAM ポリシーを更新する
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 によるアクセス許可の管理の詳細については、「AWS Identity and Access Management ユーザーガイド」の「マネージドポリシーとインラインポリシー」を参照してください。
ポリシーの更新後にネットワークをテストする
IPv6 アドレスのサポートを含めるように IAM ポリシーを更新した後、ネットワークが 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 対応の他の AWS のサービスエンドポイントにアクセスできることを最初に確認することをお勧めします。次の手順では、既存の IPv6 エンドポイントを使用してこれを検証する方法について説明します。
この例では、Linux と curl バージョン 8.6.0 を使用し、api.aws ドメインに IPv6 対応のエンドポイントがある Amazon Athena サービスを使用します。
注記
AWS リージョンをクライアントが存在するのと同じリージョンに切り替えます。この例では、米国東部 (バージニア北部) – us-east-1
エンドポイントを使用します。
次の例を使用して、クライアントが IPv6 対応の AWS エンドポイントにアクセスできることを確認します。
-
次のコマンドを使用して、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 を使用してエンドポイントへのネットワーク接続が正常に行われました。