本頁說明如何為在 Google Kubernetes Engine (GKE) 環境網路中執行的工作負載,設定輸出路由至 Secure Web Proxy (SWP) 閘道。
透過 Secure Web Proxy 閘道傳送輸出流量,即可強制執行集中式輸出安全性政策 (例如網址篩選、網域允許清單和 TLS 檢查),無須修改應用程式程式碼。第 4 層節點 Proxy 會攔截應用程式 Pod 以外的輸出流量,即使工作負載容器遭到入侵,也能提供 Pod 外的安全隔離。
架構和流量
在這個部署模式中,您會保留基礎架構的擁有權,包括 GKE 叢集、Secure Web Proxy 執行個體和任何 Private Service Connect (PSC) 端點。
輸出流量的運作方式如下:
- 工作負載或 AI 代理程式 Pod 會將傳出流量傳送至外部端點或網際網路目的地。
- 本機第 4 層環境節點 Proxy 會攔截節點上的傳出要求。
- 節點 Proxy 會建立 HTTP CONNECT 通道至輸出閘道。
- 如果 Secure Web Proxy 位於其他虛擬私有雲網路,流量會經過 PSC 服務附件。
- Secure Web Proxy 會終止通道、強制執行設定的輸出安全政策,並將授權要求轉送至目的地。
限制
設定 Secure Web Proxy 輸出路徑之前,請先詳閱下列預先發布版限制:
- 命名空間層級政策:輸出路徑政策僅適用於命名空間層級。系統不支援使用標籤選取器精細選取 Pod。
- 主機名稱篩選功能需要 TLS 檢查:除非啟用 TLS 檢查,否則 Secure Web Proxy 政策只能依 IP 位址篩選輸出流量。
- Workload Identity:GKE 周邊網路支援標準 Workload Identity。這項搶先版不支援受管理 Agent Identity 集區。
- 驗證:環境節點 Proxy 與 Secure Web Proxy 之間的連線會略過伺服器憑證驗證。CONNECT 要求包含無界權杖和用戶端憑證。
- 設定更新時重新建立資源:對現有 Secure Web Proxy 執行個體或 PSC 設定所做的變更,不會自動傳播。更新 Secure Web Proxy 或 PSC 設定後,您必須刪除並重新建立
GCPEgressPolicy資源和 Secure Web Proxy 執行個體,變更才會生效。 - 傳輸層安全標準 (TLS) 檢查信任錨點:GKE 不會自動將 Secure Web Proxy 私人 CA 憑證插入工作負載容器。如果您使用 TLS 檢查功能,必須手動將信任憑證安裝到容器映像檔中。
必要條件
設定輸出路徑之前,請確認您具備下列項目:
- 已啟用環境網路的 GKE 叢集。如需操作說明,請參閱準備 GKE 周邊網路。
- 已部署的 Secure Web Proxy 執行個體,且
serverTlsPolicy已在Cloud de Confiance by S3NS 專案或共用虛擬私有雲中設定clientValidationMode: ALLOW_INVALID_OR_MISSING_CLIENT_CERT。 - 如果 Secure Web Proxy 與 GKE 叢集位於不同的虛擬私有雲網路:
- 為 Secure Web Proxy 建立的 PSC 服務連結。
- 在 GKE 叢集虛擬私有雲網路中設定的 PSC 消費者端點。
如要完成這些步驟,您必須具備下列角色:
- Agent Gateway / 網路服務:
networkservices.agentGateways.*(或roles/networkservices.admin) 可設定 Agent Gateway 資源。 - PSC 管理:
compute.networkAttachments.list(或roles/compute.networkAdmin) 管理 Private Service Connect 連線。 - GKE 管理:
roles/container.clusterAdmin部署自訂資源 (GCPBackend、GCPEgressPolicy)。
設定 TLS 檢查的信任關係
如果 Secure Web Proxy 政策使用 TLS 檢查功能檢查加密的外送流量,Proxy 會產生由私密憑證授權單位 (CA) 簽署的憑證,以模擬外部目的地。
工作負載應用程式必須信任 Secure Web Proxy 提供的私有 CA 憑證。由於 GKE 不會自動插入這項憑證,您必須將 SWP CA 憑證 (信任錨點) 安裝到容器的信任存放區。
如要將 CA 憑證新增至容器映像檔,請在 Dockerfile 中加入下列幾行程式碼:
COPY swp-ca-cert.pem /usr/local/share/ca-certificates/swp-ca-cert.crt
RUN update-ca-certificates
定義閘道端點
設定環境輸出路由的第一步是建立閘道端點,在 GKE 叢集中定義 Secure Web Proxy 端點,並告知周邊網路 Proxy 的位置。
如要指定 Secure Web Proxy 或 Private Service Connect (PSC) 服務附件的 URI,請在 GKE 叢集中建立 GCPBackend 自訂資源:
將下列資訊清單儲存為
swp-backend.yaml:相同的虛擬私有雲
apiVersion: networking.gke.io/v1 kind: GCPBackend metadata: name: swp-backend namespace: ambient-test spec: serviceUris: - //networkservices.googleapis.com/projects/PROJECT_ID/locations/REGION/gateways/SWP_NAME更改下列內容:
ambient-test:已註冊環境網路的命名空間。PROJECT_ID:您的 Cloud de Confiance by S3NS 專案 ID。REGION:部署 Secure Web Proxy 或 PSC 服務連結的區域。SWP_NAME:Secure Web Proxy 的名稱。
跨虛擬私有雲
apiVersion: networking.gke.io/v1 kind: GCPBackend metadata: name: swp-backend namespace: ambient-test spec: serviceUris: - //compute.googleapis.com/projects/PROJECT_ID/regions/REGION/serviceAttachments/ATTACHMENT_NAME更改下列內容:
ambient-test:已註冊環境網路的命名空間。PROJECT_ID:您的 Cloud de Confiance by S3NS 專案 ID。REGION:部署 Secure Web Proxy 或 PSC 服務連結的區域。ATTACHMENT_NAME:如果 Secure Web Proxy 位於不同的虛擬私有雲網路,請輸入 PSC 服務連結的名稱。
套用
GCPBackend資源:kubectl apply -f swp-backend.yaml
設定輸出流量重新導向
建立GCPEgressPolicy自訂資源,將命名空間的外送流量轉送至 Secure Web Proxy 閘道。這項設定會提供必要的信號,讓環境節點 Proxy 建立 HTTP CONNECT 通道至 Secure Web Proxy,這是輸出路徑的必要條件。
將下列資訊清單儲存為
swp-egress-policy.yaml:apiVersion: networking.gke.io/v1 kind: GCPEgressPolicy metadata: name: swp-egress-policy namespace: ambient-test spec: to: excludeCIDRRanges: - "CLUSTER_CONTROL_PLANE_CIDR" proxyRef: group: networking.gke.io kind: GCPBackend name: swp-backend更改下列內容:
ambient-test:已註冊至環境網路的命名空間。CLUSTER_CONTROL_PLANE_CIDR:內部通訊的 CIDR 範圍,應略過 Secure Web Proxy (例如 GKE 控制層位址範圍或內部 VPC 子網路)。
套用
GCPEgressPolicy資源:kubectl apply -f swp-egress-policy.yaml套用政策後,命名空間中工作負載的輸出流量會重新導向至 Secure Web Proxy。
疑難排解
請按照下列指引診斷及解決環境出口路徑問題:
- 流量未抵達 Secure Web Proxy:
- 確認
GCPBackend資源指向正確的 PSC 服務連結 URI。 - 確認 PSC 端點已在供應商 VPC 中建立並接受。
- 確認
excludeCIDRRanges中的GCPEgressPolicy並未意外比對到目的地流量。
- 確認
- mTLS 連線失敗:
- 確認 Secure Web Proxy 已設為接受來自節點 Proxy 的連線。
- TLS 檢查憑證錯誤:
- 如果用戶端要求失敗並出現憑證驗證錯誤 (例如
x509: certificate signed by unknown authority),請確認安全網頁 Proxy CA 憑證是否已正確安裝在工作負載容器的系統憑證存放區中。
- 如果用戶端要求失敗並出現憑證驗證錯誤 (例如