

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# IAM ポリシーによる API アクセスコントロール
<a name="ip-access"></a>

IAM ポリシーを使用して IP アドレス AWS のサービス に基づいて へのアクセスを制御する場合は、IPv6 アドレス範囲を含めるようにポリシーを更新する必要がある場合があります。このガイドでは、IPv4 と IPv6 の違いと、両方のプロトコルをサポートするように IAM ポリシーを更新する方法について説明します。これらの変更を実装することで、IPv6 をサポートしながら AWS リソースへの安全なアクセスを維持できます。

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

IPv6 は、最終的に IPv4 を IPv6 に置き換えることを意図した次世代の IP 規格です。以前のバージョンの IPv4 は、32 ビットのアドレス指定方式を使用して 43 億台のデバイスをサポートしていました。IPv6 は代わりに 128 ビットのアドレス指定を使用して、約 340 兆 x1 兆倍 x1 兆倍 (つまり 2 の 128 乗) のデバイスをサポートします。

詳細については、[VPC IPv6 のウェブページ](https://aws.amazon.com/vpc/ipv6/)を参照してください。

IPv6 アドレスの例を次に示します。

```
2001:cdba:0000:0000:0000:0000:3257:9652 # This is a full, unabbreviated IPv6 address.
2001:cdba:0:0:0:0:3257:9652             # The same address with leading zeros in each group omitted
2001:cdba::3257:965                     # A compressed version of the same address.
```

## IAM デュアルスタック (IPv4 および IPv6) ポリシー
<a name="ipv6-access"></a>

IAM ポリシーを使用して Secrets Manager API へのアクセスを制御し、設定された範囲外の IP アドレスからの Secrets Manager API へのアクセスをブロックできます。

Secrets Manager API の *secretsmanager.\$1region\$1.amazonaws.com* デュアルスタックエンドポイントは、IPv6 と IPv4 の両方をサポートしています。

IPv4 と IPv6 の両方をサポートする必要がある場合は、IPv6 アドレスを処理するように、IP アドレスフィルタリングポリシーを更新します。それ以外の場合は、IPv6 経由で Secrets Manager に接続できなくなる場合があります。

### この変更を行うべき状況
<a name="customers-impacted"></a>

この変更は、`aws:sourceIp` を含むポリシーでデュアルアドレス指定を使用する場合に影響します。*デュアルアドレス指定*とは、ネットワークが IPv4 と IPv6 の両方をサポートすることを意味します。

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

### この変更を行うべきではない状況
<a name="customers-not-impacted"></a>

この変更は、IPv4 ネットワーク*のみ*を使用する場合には影響しません。

## IAM ポリシーに IPv6 を追加する
<a name="updating-for-ipv6"></a>

IAM ポリシーは、`aws:SourceIp` 条件キーを使用して、特定の IP アドレスからのアクセスを制御します。ネットワークでデュアルアドレス指定 (IPv4 および IPv6) を使用している場合は、IAM ポリシーを更新して IPv6 アドレス範囲を含めます。

ポリシーの `Condition` 要素で、IP アドレス条件に `IpAddress` および `NotIpAddress` 演算子を使用します。さまざまな有効な IPv6 アドレス形式を処理できないため、文字列演算子を使用しないでください。

以下の例では、`aws:SourceIp` を使用します。VPC の場合は、代わりに `aws:VpcSourceIp` を使用します。

以下は、*IAM ユーザーガイド*[のソース IP リファレンスポリシー AWS に基づいて へのアクセスを拒否](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_aws_deny-ip.html)します。2 つの IPv4 アドレス範囲、`192.0.2.0/24` および `203.0.113.0/24` を一覧表示する `Condition` 要素の `NotIpAddress` は、API へのアクセスが拒否されます。

------
#### [ JSON ]

****  

```
{
    "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::/64` と `2001: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"
                }
            }
```

VPC のこのポリシーを更新するには、`aws:SourceIp` の代わりに `aws:VpcSourceIp` を使用します。

```
"Condition": {
                "NotIpAddress": {
                    "aws:VpcSourceIp": [
                        "10.0.2.0/24", <<DO NOT REMOVE existing IPv4 address>>
                        "10.0.113.0/24", <<DO NOT REMOVE existing IPv4 address>>
                        "fc00:DB8:1234:5678::/64", <<New IPv6 IP address>>
                        "fc00:cdba:3257:8593::/64" <<New IPv6 IP address>>
                    ]
                },
                "Bool": {
                    "aws:ViaAWSService": "false"
                }
            }
```

## クライアントが IPv6 をサポートしていることを検証する
<a name="testing-connection"></a>

*secretsmanager.\$1region\$1.amazonaws.com* エンドポイントを使用する場合は、そのエンドポイントに接続できることを確認します。以下の手順では、検証を実行する方法について説明します。

この例では、Linux と curl バージョン 8.6.0 を使用し、**amazonaws.com** エンドポイントにある IPv6 対応エンドポイントを持つ [AWS Secrets Manager サービス](https://docs.aws.amazon.com/general/latest/gr/secretsmanager.html)エンドポイントを使用します。

**注記**  
**secretsmanager.\$1region\$1.amazonaws.com **は、[一般的なデュアルスタックの命名規則](https://docs.aws.amazon.com/general/latest/gr/rande.html#dual-stack-endpoints)とは異なります。Secrets Manager エンドポイントの完全なリストについては、「[AWS Secrets Manager エンドポイント](asm_access.md#endpoints)」を参照してください。  
を、サービスがあるリージョンと同じリージョン AWS リージョン に変更します。この例では、米国東部 (バージニア北部) – `us-east-1` エンドポイントを使用します。

1. 次の `dig` コマンドを使用して、エンドポイントが IPv6 アドレスで解決されることを確認します。

   ```
   $ dig +short AAAA secretsmanager.us-east-1.amazonaws.com 
   
   > 2600:1f18:e2f:4e05:1a8a:948e:7c08:c1c3
   ```

1. 次の `curl` コマンドを使用して、クライアント ネットワークが IPv6 接続を確立できるかどうかを確認します。レスポンスコードが 404 の場合は接続が成功したことを意味し、0 の場合は接続が失敗したことを意味します。

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

リモート IP アドレスが特定され、**さらに**レスポンスコードが `0` でない場合は、IPv6 を使用してエンドポイントへのネットワーク接続が正常に確立されています。リモート IP は IPv6 アドレスである必要があります。これは、オペレーティングシステムがクライアントに有効なプロトコルを選択する必要があるからです。

リモート IP が空白の場合、またはレスポンスコードが `0` の場合は、クライアントネットワークまたはエンドポイントへのネットワークパスは IPv4 専用です。これを確認するには、次の `curl` コマンドを使用します。

```
$ curl -o /dev/null --silent -w "\nremote ip: %{remote_ip}\nresponse code: %{response_code}\n" https://secretsmanager.us-east-1.amazonaws.com 

> remote ip: 3.123.154.250
> response code: 404
```