View a markdown version of this page

設定 Amazon S3 存取點的網路存取 - FSx for OnTAP

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

設定 Amazon S3 存取點的網路存取

當您為 FSx for ONTAP 磁碟區建立 Amazon S3 存取點時,您可以設定如何透過網路連接存取點,以及誰有權使用該存取點。本節可協助您為您的環境選擇正確的網路和存取控制組態。

本節涵蓋網路和 IAM 授權層,特別是存取點的網路原始伺服器、VPC 端點、存取點政策、VPC 端點政策、IAM 身分政策和服務控制政策。如需有關檔案系統層級授權 (UNIX 和 Windows 使用者許可) 的資訊,請參閱 檔案系統使用者身分和授權

Amazon S3 如何評估存取點請求

透過連接至 FSx for ONTAP 磁碟區的 Amazon S3 存取點提出請求時,該請求必須經過下列所有層的授權:

  • 網路原始伺服器檢查 — 如果存取點具有 VPC 網路原始伺服器,則請求必須透過繫結 VPC 中的 VPC 端點來到達。如果沒有,則會在任何政策評估發生之前拒絕請求。

  • VPC 端點政策 — 如果請求周遊 VPC 端點,端點的政策必須允許對存取點資源執行 動作。

  • 存取點政策 — 評估存取點的 IAM 資源政策。對於相同帳戶存取,存取點政策或發起人的身分政策可以授予存取權。對於跨帳戶存取,兩者都必須允許。

  • IAM 身分政策 — 請求主體的身分型政策會根據存取點資源進行評估。

  • 服務控制政策 SCPs) — 如果帳戶是 AWS Organizations 組織的一部分,則任何適用的 SCPs 必須允許 動作。

網路原始伺服器檢查會在政策評估之前進行。其餘層會一起評估,做為標準 IAM 授權決策的一部分:任何層中的明確拒絕都會覆寫其他層中的允許陳述式。

選擇網路原始伺服器

建立 Amazon S3 存取點時,您可以選擇決定存取點連線方式的網路原始伺服器。您無法在建立後變更網路原始伺服器。

網際網路原始伺服器

具有網際網路網路原始伺服器的存取點與預設存取 S3 儲存貯體的方式類似。所有請求仍需要有效的 IAM 憑證和授權 - 網際網路原始伺服器並不表示公開或匿名存取。Amazon S3 會對連接至 FSx 的所有存取點強制封鎖公開存取 ONTAP 磁碟區,您無法停用此設定。

使用網際網路原始伺服器時,已驗證的請求可以來自任何地方:VPCs、內部部署網路、其他 AWS 帳戶或公有網際網路。您可以使用存取點政策和 IAM 身分政策來控制允許哪些已驗證的呼叫者。

使用網際網路原始伺服器時,您可以使用存取點政策和 IAM 身分政策來控制存取。對於相同帳戶發起人,請在存取點政策中使用明確拒絕陳述式來限制存取 — 僅允許政策是不夠的,因為發起人的 IAM 身分政策可以獨立授予存取權。對於跨帳戶發起人,存取點政策必須明確允許請求,因此省略允許足以封鎖存取。

VPC 原始伺服器

具有 VPC 網路原始伺服器的存取點會繫結至特定 VPC,並有效做為明確拒絕政策陳述式,拒絕 aws:SourceVpc不符合繫結 VPC 的任何請求。由於明確拒絕一律會覆寫任何允許,即使完全寬鬆的存取點政策或 IAM 身分政策也無法授予來自繫結 VPC 外部請求的存取權。

如果流量透過繫結 VPC 中的 VPC 端點路由,例如透過 VPC 對等互連或 Transit Gateway 路由至繫結 VPC 中部署的 Amazon S3 界面端點,則繫結 VPC 外的呼叫者仍然可以存取存取點。

主要差異

網際網路原始伺服器VPC 原始伺服器
網路強制執行 無 — 僅由政策控制的存取 對於未透過繫結 VPC 中的 VPC 端點到達的請求,有效地明確拒絕
多 VPC 存取 透過政策條件支援 如果發起人透過繫結 VPC 中的界面端點路由 (透過 VPC 對等互連或 Transit Gateway),則支援
變更存取範圍 更新政策 必須重新建立存取點才能變更繫結 VPC
需要 VPC 端點 只有在使用aws:SourceVpc條件時 是 — 請求必須周遊繫結 VPC 中的端點

VPC 原始伺服器強制執行的運作方式

當存取點具有 VPC 網路原始伺服器時,它實際上的行為就好像有明確的拒絕政策陳述式,拒絕 aws:SourceVpc不等於存取點 中指定的 VPC ID 的所有請求VpcConfiguration。此拒絕適用於所有主體、所有 Amazon S3 動作,以及存取點中的所有資源。

由於這是明確拒絕,因此會覆寫任何允許陳述式,無論是在存取點政策、發起人的 IAM 身分政策或任何其他政策中。

實際上,這表示:

  • 請求必須透過在繫結 VPC 中部署的 VPC 端點 (閘道或界面) 到達,因為只有 VPC 端點會在請求上填入 aws:SourceVpc 屬性。

  • 來自其他 VPCs請求會被拒絕,因為其 VPC 端點aws:SourceVpc會填入不同的 VPC ID。

  • 來自網際網路的請求遭到拒絕,因為 aws:SourceVpc 不存在於請求中。

這也是拒絕請求的錯誤訊息顯示「以資源為基礎的政策明確拒絕」的原因。

重要

您無法在建立後變更存取點的網路原始伺服器。如果您需要從 VPC 原始伺服器變更為網際網路原始伺服器 (反之亦然),您必須刪除存取點並建立新的存取點。

VPC 原始伺服器與明確拒絕的網際網路原始伺服器

VPC 來源存取點和具有手動寫入的網際網路來源存取點 StringNotEquals aws:SourceVpc 拒絕達到類似的結果 — 兩者都會拒絕來自指定 VPC 的請求。主要差異為:

  • VPC 原始伺服器:拒絕已內建在存取點的 VPC 組態中。您不會意外將其移除或設定錯誤。

  • 使用拒絕的網際網路原始伺服器:您自行撰寫和管理拒絕。這可為您提供更多彈性 (例如,允許多個 VPCs),但也提供更多責任 - 如果拒絕遺失或設定錯誤,則不會強制執行限制。

搭配 Amazon S3 存取點使用 VPC 端點

Amazon S3 存取點適用於 Amazon S3 的這兩種 VPC 端點類型。您需要的端點類型取決於來電者所在的位置。

閘道端點

閘道端點是免費的,且以路由表為基礎。當您建立閘道端點時,會將路由新增至透過端點引導 Amazon S3 流量的指定路由表。此路由僅適用於源自 VPC 的流量。

將閘道端點用於:

  • VPC 內的 Amazon EC2 執行個體、Lambda 函數、Amazon ECS 任務和其他運算資源

閘道端點不會路由從下列來源進入 VPC 的流量:

  • 透過 VPN 或 Direct Connect 的內部部署網路

  • 對等 VPCs

  • 傳輸閘道連線

如需詳細資訊,請參閱《Amazon VPC 使用者指南》中的 Amazon S3 的閘道端點

介面端點

界面端點會在子網路中建立具有私有 IP 地址的彈性網路界面 (ENI)。流量必須明確導向至端點的 DNS 名稱或私有 IP。

將界面端點用於:

  • 內部部署發起人透過 VPN 或 Direct Connect 存取 Amazon S3

  • 透過 VPC 對等互連存取 Amazon S3 的跨帳戶發起人

  • 流量從外部進入 VPC 的任何案例

使用界面端點時,呼叫者必須:

  • 使用指向界面端點 DNS 名稱的 --endpoint-url 參數,或

  • 設定 DNS 將 Amazon S3 端點解析為介面端點的私有 IP (使用 Route 53 Resolver 或內部部署 DNS 轉送)

介面端點有每小時和每 GB 的費用。如需詳細資訊,請參閱 AWS PrivateLink 定價

同時使用這兩種端點類型

您可以在相同的 VPC 中部署閘道端點和界面端點。當您同時有 VPC 內來電者和內部部署來電者時,此組態很有用:

  • 閘道端點:處理 VPC 內流量 (免費、透明)

  • 介面端點:處理透過 VPN 或 Direct Connect 進入的內部部署流量 (需要 DNS 組態或 --endpoint-url)

這兩種端點類型都會以 VPC ID 填入 aws:SourceVpc 屬性,因此都符合 VPC 原始伺服器拒絕條件。

VPC 端點政策

VPC 端點政策控制可透過端點存取哪些 Amazon S3 資源。根據預設,VPC 端點允許所有資源上的所有 Amazon S3 動作。您可以限制端點政策的範圍,只允許特定存取點:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:*", "Resource": [ "arn:aws:s3:us-east-1:123456789012:accesspoint/my-access-point", "arn:aws:s3:us-east-1:123456789012:accesspoint/my-access-point/object/*" ] } ] }

存取點政策

Amazon S3 存取點支援 AWS Identity and Access Management (IAM) 資源政策,可讓您依資源、使用者或其他條件控制存取點的使用。對於跨帳戶存取,存取點政策和發起人的 IAM 身分政策都必須允許請求。對於相同帳戶存取,存取點政策或發起人的 IAM 身分政策可以獨立授予存取權 — 若要限制相同帳戶發起人,請在存取點政策中使用明確拒絕陳述式。如果請求周遊 VPC 端點,VPC 端點政策也必須允許請求。

如需存取點政策的詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的設定 IAM 政策以使用存取點

網路型存取控制的條件索引鍵

IAM 提供全域條件金鑰,可用於存取點政策,以根據請求的網路屬性來控制存取。這些條件索引鍵只會在特定情況下包含在請求內容中,如下表所述。

條件鍵可用性Description
aws:SourceVpc 只有在請求者使用 VPC 端點提出請求時,才會包含在請求內容中。 檢查請求是否通過 VPC 端點連接的 VPC。使用此金鑰僅允許存取特定 VPC。
aws:SourceVpce 只有在請求者使用 VPC 端點提出請求時,才會包含在請求內容中。 發出請求的 VPC 端點 ID。
aws:VpcSourceIp 只有在使用 VPC 端點提出請求時,才會包含在請求內容中。 將提出請求的 IP 地址與您在政策中指定的 IP 地址進行比較。只有在請求來自指定的 IP 地址並通過 VPC 端點時才相符。
aws:SourceIp 只有在請求周遊 VPC 端點時,才會包含在請求內容中。 發起人的公有 IP 地址。不適用於透過 VPC 端點提出的請求。
重要

aws:SourceIpaws:VpcSourceIp 是互斥的。當請求周遊 VPC 端點時, aws:SourceIp 無法使用 – 請aws:VpcSourceIp改用 。當請求來自網際網路 (無 VPC 端點) 時,aws:VpcSourceIp無法使用 - 請aws:SourceIp改用 。

重要

條件索引鍵區分aws:VpcSourceIp大小寫。

如需 IAM 全域條件金鑰的詳細資訊,請參閱《IAM 使用者指南》中的AWS 全域條件內容金鑰

範例方案

下列範例案例顯示連接至 FSx for ONTAP 磁碟區的 Amazon S3 存取點的常見組態。每個案例都包含建議的網路原始伺服器、VPC 端點類型和存取點政策。

單一 VPC 存取

使用案例:Amazon EC2 執行個體、Lambda 函數或單一 VPC 內的 Amazon ECS 任務會存取存取點。不需要外部存取。

使用 VPC 網路原始伺服器:

使用 VPC 網路原始伺服器的單一 VPC 存取

VPC 原始伺服器組態會有效地拒絕 aws:SourceVpc與繫結 VPC 不相符的請求。來自其他 VPCs、網際網路或內部部署網路的請求會遭到拒絕。您可以使用閘道或界面 Amazon S3 VPC 端點。

存取點政策範例 (VPC 原始伺服器):使用 VPC 原始伺服器時,內建網路限制。存取點政策只需要授予所需的許可。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::123456789012:role/my-app-role"}, "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:us-east-1:123456789012:accesspoint/my-access-point", "arn:aws:s3:us-east-1:123456789012:accesspoint/my-access-point/object/*" ] } ] }

使用網際網路原始伺服器:

使用網際網路原始伺服器的單一 VPC 存取

使用網際網路原始伺服器時,您可以使用存取點政策中的aws:SourceVpc條件 (明確拒絕) 限制對 VPC 的存取。需要 VPC 端點,以便在請求上填入 aws:SourceVpc

存取點政策範例 (網際網路原始伺服器):該政策包含具有 VPC 條件的允許,以及拒絕不是來自 VPC 的請求。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::123456789012:role/my-app-role"}, "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:us-east-1:123456789012:accesspoint/my-access-point", "arn:aws:s3:us-east-1:123456789012:accesspoint/my-access-point/object/*" ], "Condition": { "StringEquals": {"aws:SourceVpc": "vpc-1a2b3c4d"} } }, { "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": [ "arn:aws:s3:us-east-1:123456789012:accesspoint/my-access-point", "arn:aws:s3:us-east-1:123456789012:accesspoint/my-access-point/object/*" ], "Condition": { "StringNotEquals": {"aws:SourceVpc": "vpc-1a2b3c4d"} } } ] }
注意

存取點政策中需要允許和拒絕陳述式。如果沒有拒絕陳述式,可能不會對所有發起人強制執行 VPC 限制。

VPC 原始伺服器網際網路原始伺服器
網路強制執行 內建拒絕 以政策為基礎的 (允許 + 拒絕)
VPC 端點 必要 (閘道或界面) 必要 (適用於 aws:SourceVpc)
存取點政策 最小 — 內建拒絕處理限制 必須包含aws:SourceVpc允許 + 拒絕

內部部署和 VPC 存取

使用案例:內部部署使用者 (透過 VPN 或 Direct Connect) 和 VPC 內運算資源都會存取存取點。所有流量都會保持私有。

重要

閘道端點不會路由從 VPN、Direct Connect 或 Transit Gateway 連線進入 VPC 的流量。內部部署發起人必須使用 Amazon S3 Interface 端點。如需詳細資訊,請參閱 搭配 Amazon S3 存取點使用 VPC 端點

使用 VPC 網路原始伺服器進行內部部署和 VPC 存取

閘道端點 (VPC 內流量) 和界面端點 (內部部署流量) 都位於相同的 VPC 中,因此都符合 VPC 原始伺服器拒絕條件。

VPC 原始伺服器網際網路原始伺服器
VPC 內端點 Gateway (免費) 閘道 (適用於 aws:SourceVpc)
內部部署端點 介面 (必要) 介面 (必要)
內部部署 DNS 解析 Amazon S3 到界面端點 IP 解析 Amazon S3 到界面端點 IP

多 VPC 存取

使用案例:多個 VPCs中的呼叫者需要存取相同的存取點。例如,相同帳戶中不同 VPCs中的應用程式,或是透過 VPCs 對等互連或 Transit Gateway 連線的不同帳戶中的 VPC。

多重 VPC 存取有兩種方法,取決於您想要使用政策型控制或 VPC 原始網路強制執行。

選項 1:每個 VPC 中具有閘道端點的網際網路原始伺服器

每個 VPC 都有自己的 Amazon S3 Gateway 端點。每個 VPC 中的呼叫者會透過其本機閘道端點存取存取點,該端點會填入請求aws:SourceVpc中。存取點政策限制存取允許的 VPC IDs。

具有網際網路原始伺服器和閘道端點的多 VPC 存取
  • 網路原始伺服器:網際網路

  • VPC 端點:每個 VPC 中的 Amazon S3 Gateway 端點 (免費,不需要額外的組態)

  • 存取點政策:允許 aws:SourceVpc列出所有 VPC IDs,以及使用 拒絕 StringNotEquals

注意

存取點政策中需要允許和拒絕陳述式。如果沒有拒絕陳述式,可能不會對所有發起人強制執行 VPC 限制。

此選項的設定更簡單,因為每個 VPC 都是獨立運作,不需要 VPC 對等互連或 Transit Gateway。若要新增或移除 VPCs,請更新存取點政策。

選項 2:具有集中式界面端點的 VPC 原始伺服器

具有 VPC 原始伺服器和集中式界面端點的多 VPC 存取

一個 VPC 託管 Amazon S3 Interface 端點,並使用繫結至該 VPC 的 VPC 原始伺服器建立存取點。其他 VPCs會透過 VPC 對等互連或 Transit Gateway 將其 Amazon S3 流量路由至介面端點。由於所有請求都透過繫結 VPC 中的端點到達,因此它們滿足 VPC 原始伺服器強制執行。

  • 網路原始伺服器:VPC (繫結至託管介面端點的 VPC)

  • VPC 端點:繫結 VPC 中的 Amazon S3 Interface 端點

  • 連線:其他 VPC 與繫結 VPC VPCs 對等互連或 Transit Gateway

  • 存取點政策:最小 — VPC 原始伺服器強制執行處理網路限制

  • 來電者組態:其他 VPCs中的來電者必須使用 --endpoint-url或 DNS 組態,透過界面端點路由請求

此選項提供更強大的強制執行,因為無法透過政策變更繞過 VPC 原始伺服器限制。不過,它需要 VPC 對等互連或 Transit Gateway 連線,而且介面端點有每小時和每 GB 的費用。如需介面端點的詳細資訊,請參閱《AWS Amazon Simple Storage Service 使用者指南》中的適用於 Amazon S3 的 PrivateLink

疑難排解網路存取問題

當 Amazon S3 存取點請求失敗時,錯誤訊息通常不會指出哪個授權層拒絕請求。使用以下指引來診斷常見問題。

AccessDenied 與「以資源為基礎的政策明確拒絕」

此錯誤可能來自多個來源。依序執行下列檢查:

1。檢查 VPC 原始伺服器拒絕 (僅限 VPC 原始存取點)

如果存取點具有 VPC 網路原始伺服器,則會有效地拒絕 aws:SourceVpc與繫結 VPC 不相符的請求。請驗證:

  • 繫結 VPC 中存在 VPC 端點 (閘道或界面)。

  • 發起人的流量會透過該端點路由。對於 VPC 內呼叫者,請確認閘道端點的路由表與呼叫者的子網路相關聯。對於內部部署呼叫者,請確認他們使用界面端點 (閘道端點不會路由 VPN 或 Direct Connect 流量)。

  • 發起人位於繫結 VPC 中,而不是對等 VPC。除非透過繫結 VPCs中的界面端點路由,否則拒絕來自對等 VPC 的請求。

2. 檢查 VPC 端點政策

如果請求周遊 VPC 端點,端點的政策必須允許存取點資源上的 動作。預設端點政策允許所有資源上的所有動作。如果您已設定政策的範圍,請確認政策包含存取點 ARN。

3. 檢查存取點政策

確認存取點政策允許請求主體。檢查是否有條件可能符合請求的拒絕陳述式。

4. 檢查發起人的 IAM 身分政策

發起人的 IAM 角色或使用者必須具有在存取點 ARN 上執行 Amazon S3 動作的許可。

5. 檢查服務控制政策 SCPs)

如果帳戶是 AWS Organizations 組織的一部分,請確認沒有 SCPs 拒絕存取點上的 Amazon S3 動作。

內部部署發起人取得 AccessDenied 但 VPC 內發起人成功

這通常表示內部部署流量不會透過 VPC 端點路由:

  • 閘道端點不會路由內部部署流量。從 VPN、Direct Connect 或 Transit Gateway 連線進入 VPC 的流量不受閘道端點路由影響。為內部部署呼叫者建立 Amazon S3 界面端點。

  • 確認介面端點的安全群組允許從內部部署 CIDR 傳入 HTTPS (連接埠 443)。

  • 驗證內部部署 DNS 將 Amazon S3 端點解析為介面端點的私有 IP,或呼叫者使用 --endpoint-url

存取點政策條件似乎沒有效果

  • 僅允許政策不會限制存取。如果您僅在沒有對應拒絕的允許陳述式中使用條件 (例如 aws:SourceVpc),發起人的 IAM 身分政策可以獨立授予存取權。新增含反向條件的明確拒絕陳述式。

  • 區分大小寫。條件索引鍵區分aws:VpcSourceIp大小寫。

  • 互斥條件索引鍵。 aws:SourceIpaws:VpcSourceIp 互斥。當請求周遊 VPC 端點時,aws:SourceIp無法使用 - 請aws:VpcSourceIp改用 。相反地, aws:VpcSourceIp 不適用於網際網路請求 – 使用 aws:SourceIp。這適用於所有使用這些條件金鑰的政策,包括存取點政策、VPC 端點政策和 IAM 身分政策。