使用 IAM 政策控制 API 存取 - AWS Secrets Manager

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

使用 IAM 政策控制 API 存取

如果您使用 IAM 政策 AWS 服務 根據 IP 地址控制對 的存取,您可能需要更新政策以包含 IPv6 地址範圍。本指南說明 IPv4 和 IPv6 之間的差異,並說明如何更新 IAM 政策以支援這兩個通訊協定。實作這些變更可協助您在支援 IPv6 的同時,維護對 AWS 資源的安全存取。

什麼是 IPv6?

IPv6 是新一代 IP 標準,旨在最終取代 IPv4。舊版 IPv4 使用 32 位元定址機制來支援 43 億部裝置。IPv6 會改用 128 位元定址,以支援約 340 兆兆億 (或第 128 個電源的 2) 個裝置。

如需詳細資訊,請參閱 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) 政策

您可以使用 IAM 政策來控制對 Secrets Manager APIs存取,並防止設定範圍以外的 IP 地址存取 Secrets Manager APIs。

Secrets Manager API 的 Secretsmanager.{region}.amazonaws.com 雙堆疊端點支援 IPv6 和 IPv4。 APIs

如果您需要同時支援 IPv4 和 IPv6,請更新您的 IP 地址篩選政策以處理 IPv6 地址。否則,您可能無法透過 IPv6 連線至 Secrets Manager。

誰應該進行此變更?

如果您搭配包含 的政策使用雙定址,則此變更會影響您aws:sourceIp雙定址表示網路同時支援 IPv4 和 IPv6。

如果您使用雙定址,請更新目前使用 IPv4 格式地址的 IAM 政策,以包含 IPv6 格式地址。

誰不應進行此變更?

如果您使用 IPv4 網路,此變更不會影響您。

將 IPv6 新增至 IAM 政策

IAM 政策使用 aws:SourceIp條件金鑰來控制來自特定 IP 地址的存取。如果您的網路使用雙定址 (IPv4 和 IPv6),請更新您的 IAM 政策以包含 IPv6 地址範圍。

在政策的 Condition元素中,針對 IP 地址條件使用 IpAddressNotIpAddress運算子。請勿使用字串運算子,因為它們無法處理各種有效的 IPv6 地址格式。

這些範例使用 aws:SourceIp。對於 VPCs,請aws:VpcSourceIp改用 。

以下是 IAM 使用者指南中的 AWS 根據來源 IP 參考政策拒絕對 的存取Condition 元素NotIpAddress中列出兩個 IPv4 地址範圍的 192.0.2.0/24203.0.113.0/24,這會被拒絕存取 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::/642001: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:VpcSourceIp而非 aws:SourceIp

"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

如果您使用 secretsmanager.{region}.amazonaws.com 端點,請確認您可以連線到它。下列步驟說明如何執行驗證。

此範例使用 Linux 和 curl 8.6.0 版,並使用 服務,該AWS Secrets Manager 服務具有位於 amazonaws.com 端點的已啟用 IPv6 的端點。

注意

secretsmanager.{region}.amazonaws.com 與典型的雙堆疊命名慣例https://docs.aws.amazon.com/general/latest/gr/rande.html#dual-stack-endpoints不同。如需 Secrets Manager 端點的完整清單,請參閱 AWS Secrets Manager 端點

將 AWS 區域 變更為您的服務所在的相同區域。在此範例中,我們使用美國東部 (維吉尼亞北部) – us-east-1端點。

  1. 使用以下dig命令判斷端點是否以 IPv6 地址解析。

    $ dig +short AAAA secretsmanager.us-east-1.amazonaws.com > 2600:1f18:e2f:4e05:1a8a:948e:7c08:c1c3
  2. 使用以下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-only。您可以使用下列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