

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 將 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 是新一代 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，Internet Monitor 可助力提升效能和可擴展性。請依循本節中的步驟來更新您的組態，並利用雙堆疊支援。

## 識別程式碼使用的 Internet Monitor 端點
<a name="security_iam_cwim_security-ipv6-upgrade.identify-endpoint"></a>

如果您使用 Internet Monitor SDK，請先驗證程式碼使用的是哪個端點：IPv4 端點，還是雙堆疊 (IPv4 和 IPv6) 端點。如果您並非搭配 SDK 使用 Internet Monitor，可以略過本節。

您可以執行下列程式碼範例來判斷正在使用的 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 端點。如果看到下列回應，表示您使用的 Internet Monitor 網域僅支援 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
```



## 更新 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>

更新 IAM 政策以納入對 IPv6 位址的支援後，建議您測試網路能否存取 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-enabled的其他 AWS 服務 端點。下列步驟說明如何使用現有的 IPv6 端點來驗證這一點。

此範例使用 Linux 和 curl 版本 8.6.0，並使用 [Amazon Athena 服務](https://docs.aws.amazon.com/general/latest/gr/athena.html) (具有位於 *api.aws* 網域且已啟用 IPv6 的端點)。

**注意**  
將 切換 AWS 區域 到用戶端所在的相同區域。在此範例中，我們使用美國東部 (維吉尼亞北部) – `us-east-1` 端點。

使用下列範例來驗證您的用戶端是否可以存取IPv6-enabled 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 與端點建立網路連線。