

# IAM ポリシーを IPv6 にアップグレードする
<a name="security_iam_cwim_security-ipv6-upgrade"></a>

Internet Monitor のお客様は、IAM ポリシーを使用して IP アドレスの許容範囲を設定し、設定した範囲外の IP アドレスが Internet Monitor API にアクセスできないようにします。

Internet Monitor API にアクセスする internetmonitor.{{region}}.api.aws エンドポイントは、デュアルスタック (IPv4 および IPv6) をサポートするようにアップグレードされています。

IPv6 アドレスの処理用に更新されていない IP アドレスのフィルタリングポリシーでは、Internet Monitor API にクライアントがアクセスできなくなる場合があります。

## IPv6 を含むアップグレードの影響を受けるお客様
<a name="customers-impacted"></a>

aws:sourceIp フィルターを含むポリシーでデュアルスタックを使用しているお客様は、このアップグレードの影響を受けます。デュアルスタックとは、ネットワークが IPv4 と IPv6 の両方をサポートすることを意味します。

デュアルスタックを使用している場合は、現在 IPv4 形式のアドレスで構成されている IAM ポリシーを、IPv6 形式のアドレスを含むように更新する必要があります。

以下に、シナリオに応じて推奨されるアクションをまとめます。SDK が使用するエンドポイントを確認するには、「[コードで使用される Internet Monitor エンドポイントを特定する](#IMConfirmSDKEndpoint)」を参照してください。


| Endpoint | `aws:sourceIp` 条件で IAM ポリシーを使用していますか。 | 推奨されるアクション | 
| --- | --- | --- | 
| `internetmonitor.region.amazonaws.com` (デュアルスタックではない) | はい | IPv4 へのアクセスのみを制限するには、それ以上のアクションを実行しないでください。または、今後 IPv6 のサポートが必要になることが予想される場合は、IPv4 と IPv6 の両方との互換性を確保するためのアクションを実行できます。<br />将来の互換性を確保するには、2024 年 11 月 1 日以降に SDK を更新し、`useDualstackEndpoint=true` を設定してデュアルスタックのエンドポイントを使用するようにアプリケーションを更新します。詳細については、「[デュアルスタックと FIPS エンドポイント](https://docs.aws.amazon.com/sdkref/latest/guide/feature-endpoints.html)」を参照してください。<br />IPv4 と IPv6 の両方を使用する場合は、IAM ポリシーの IP アドレスフィルタリング条件 (`aws:sourceIp`) も更新して IPv6 アドレスを含める必要があります。 | 
| `internetmonitor.region.amazonaws.com` (デュアルスタックではない) | いいえ | IPv4 へのアクセスのみを制限するには、それ以上のアクションを実行しないでください。または、今後 IPv6 のサポートが必要になることが予想される場合は、IPv4 と IPv6 の両方との互換性を確保するためのアクションを実行できます。<br />将来の互換性を確保するには、2024 年 11 月 1 日以降に SDK を更新し、`useDualstackEndpoint=true` を設定してデュアルスタックのエンドポイントを使用するようにアプリケーションを更新します。詳細については、「[デュアルスタックと FIPS エンドポイント](https://docs.aws.amazon.com/sdkref/latest/guide/feature-endpoints.html)」を参照してください。 | 
| `internetmonitor.region.api.aws` | はい | IPv4 と IPv6 の両方との将来の互換性を確保するには、SDK を更新し、`useDualstackEndpoint=true` を設定してデュアルスタックのエンドポイントを使用するようにアプリケーションを更新します。詳細については、「[デュアルスタックと FIPS エンドポイント](https://docs.aws.amazon.com/sdkref/latest/guide/feature-endpoints.html)」を参照してください。<br />IPv4 と IPv6 の両方を使用するように変更する場合は、IAM ポリシーの IP アドレスフィルタリング条件 (`aws:sourceIp`) も更新して IPv6 アドレスを含める必要があります。<br />代わりに IPv4 のみへのアクセスを制限する場合は、`useDualstackEndpoint=false` を設定します。詳細については、「[デュアルスタックと FIPS エンドポイント](https://docs.aws.amazon.com/sdkref/latest/guide/feature-endpoints.html)」を参照してください。 | 
| `internetmonitor.region.api.aws` | いいえ | IPv4 と IPv6 の両方との将来の互換性を確保するには、SDK を更新し、`useDualstackEndpoint=true` を設定してデュアルスタックのエンドポイントを使用するようにアプリケーションを更新します。詳細については、「[デュアルスタックと FIPS エンドポイント](https://docs.aws.amazon.com/sdkref/latest/guide/feature-endpoints.html)」を参照してください。<br />代わりに IPv4 のみへのアクセスを制限する場合は、`useDualstackEndpoint=false` を設定します。詳細については、「[デュアルスタックと FIPS エンドポイント](https://docs.aws.amazon.com/sdkref/latest/guide/feature-endpoints.html)」を参照してください。 | 

アクセスに関する問題については、[サポート](https://support.console.aws.amazon.com/support/home/?nc1=f_dr#/case/create) にお問い合わせください。

## IPv6 とは
<a name="security_iam_cwim_security-ipv6-upgrade.what-is-ipv6"></a>

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 エンドポイントを特定する
<a name="security_iam_cwim_security-ipv6-upgrade.identify-endpoint"></a>

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 ポリシーを更新する
<a name="security_iam_cwim_security-ipv6-upgrade.updating-for-ipv6"></a>

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 ユーザーガイド」の「[マネージドポリシーとインラインポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html)」を参照してください。**

## ポリシーの更新後にネットワークをテストする
<a name="security_iam_cwim_security-ipv6-upgrade.testing-connection"></a>

IPv6 アドレスのサポートを含めるように IAM ポリシーを更新した後、ネットワークが IPv6 エンドポイントにアクセスできることをテストすることをお勧めします。このセクションでは、使用するオペレーティングシステムに応じていくつかの例を示します。

### Linux/Unix または Mac OS X を使用したネットワークをテストする
<a name="security_iam_cwim_security-ipv6-upgrade.testing-unix"></a>

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 を使用したネットワークをテストする
<a name="security_iam_cwim_security-ipv6-upgrade.testing-windows"></a>

Windows を使用している場合、次のような `ping` コマンドを使用して、ネットワークが IPv6 または IPv4 経由でデュアルスタックのエンドポイントにアクセスできることをテストできます。

`ping aws.amazon.com`

`ping` が IPv6 経由でエンドポイントにアクセスする場合、コマンドは IPv6 アドレスを返します。

## クライアントが IPv6 をサポートできることを確認する
<a name="security_iam_cwim_security-ipv6-upgrade.verify"></a>

internetmonitor.{region}.api.aws エンドポイントの使用に切り替える前に、クライアントが既に IPv6 対応の他の AWS のサービスエンドポイントにアクセスできることを最初に確認することをお勧めします。次の手順では、既存の IPv6 エンドポイントを使用してこれを検証する方法について説明します。

この例では、Linux と curl バージョン 8.6.0 を使用し、api.aws ドメインに IPv6 対応のエンドポイントがある [Amazon Athena サービス](https://docs.aws.amazon.com/general/latest/gr/athena.html)を使用します。

**注記**  
AWS リージョンをクライアントが存在するのと同じリージョンに切り替えます。この例では、米国東部 (バージニア北部) – `us-east-1` エンドポイントを使用します。

次の例を使用して、クライアントが IPv6 対応の AWS エンドポイントにアクセスできることを確認します。

1. 次のコマンドを使用して、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
   ```

1. 次に、次のコマンドを使用して、クライアントネットワークが 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 を使用してエンドポイントへのネットワーク接続が正常に行われました。