Service Extensions 可讓 Secure Web Proxy 擴充功能向授權服務傳送呼叫,在流量處理路徑中插入自訂處理程序。本頁說明如何使用授權政策設定 Secure Web Proxy 擴充功能。
Secure Web Proxy 擴充功能會透過要求和內容授權政策,設定為授權擴充功能。以要求授權政策為依據的擴充功能,會設定為在以內容授權政策為依據的擴充功能之前執行。
如要瞭解 Secure Web Proxy 擴充功能的運作方式,請參閱「Secure Web Proxy 擴充功能總覽」。
如要瞭解授權擴充功能相關限制,請參閱「配額與限制」頁面。
事前準備
建立、設定及部署 Secure Web Proxy 執行個體,並在您要用於擴充功能的所在位置 (例如
us-west1) 中,將該執行個體命名為swp-instance1。部署 Proxy 時,必須啟用傳輸層安全標準 (TLS) 檢查的閘道安全政策。
設定下列範例服務:
授權服務,用於設定要求授權政策的擴充功能。在本例中,假設 FQDN 為
request-authz.com。用於設定內容授權政策的擴充功能的清除服務。在本例中,假設 FQDN 為
content-sdp.com。
Secure Web Proxy 擴充功能只能以完整網域名稱 (FQDN) 為目標。使用 FQDN 目標做為擴充功能時,資料平面會使用 HTTP2 通訊協定搭配 TLS 加密,透過通訊埠 443 與端點通訊。不過,資料平面不會驗證伺服器憑證。 基於安全考量,請確保解析的端點位於 VPC 內。
設定要求授權政策的擴充功能
以下範例說明如何設定授權擴充功能,將要求授權政策套用至 us-west1 中的 Secure Web Proxy 執行個體。這項政策規定流量必須通過特定主體的相互 TLS 驗證,才能抵達目的地 example.com/mcp。
gcloud
設定授權擴充功能。
在 YAML 檔案中定義擴充功能,將擴充功能與
request-authz.com建立關聯。使用提供的樣本值。cat >swp-request-authz-extension.yaml <<EOF name: my-swp-request-authz-ext authority: ext11.com loadBalancingScheme: INTERNAL_MANAGED service: "request-authz.com" forwardHeaders: - Authorization failOpen: false timeout: "0.1s" wireFormat: EXT_AUTHZ_GRPC EOFSecure Web Proxy 擴充功能是區域資源,必須與 Secure Web Proxy 執行個體位於相同區域。
對於要求授權政策,
wireFormat值可以是EXT_AUTHZ_GRPC,這樣一來,即使系統也支援ext_proc通訊協定,但宣傳活動仍會使用ext_authz通訊協定。根據預設,
failOpen會設為false。如果擴充功能逾時或失敗,要求處理程序就會停止。如果安全或完整性比可用性更重要,建議使用這個預設選項。匯入授權擴充功能。使用
gcloud beta service-extensions authz-extensions import指令和下列範例值。gcloud beta service-extensions authz-extensions import my-swp-request-authz-ext \ --source=swp-request-authz-extension.yaml \ --location=us-west1
在同一個專案中,設定具有擴充功能的授權政策。
對於
example.com/mcp的任何要求,這項政策都要求特定主體進行相互 TLS 驗證,並將授權決策進一步委派給授權擴充功能my-swp-authz-request-ext。定義授權政策,將
my-swp-authz-request-ext擴充功能與 Secure Web Proxy 代理伺服器swp-instance1建立關聯。使用提供的樣本值。cat >swp-request-authz-policy.yaml <<EOF name: my-swp-request-authz-policy target: resources: - "projects/PROJECT_ID/locations/us-west1/gateways/swp-instance1" policyProfile: REQUEST_AUTHZ httpRules: - to: operations: - hosts: - exact: "example.com" - paths: - prefix: "/mcp" from: sources: - principals: - principal_selector: CLIENT_CERT_DNS_NAME_SANS principal: exact: "spiffe://p.global.123.workload.id.goog/ns/ns1/sa/hellomcp" action: CUSTOM customProvider: authzExtension: resources: - "projects/PROJECT_ID/locations/us-west1/authzExtensions/my-swp-request-authz-ext" EOF將
PROJECT_ID替換為專案 ID。如果是要求授權政策,
policyProfile的值必須為REQUEST_AUTHZ。CUSTOM動作表示擴充功能與 Proxy 相關聯。如要進一步瞭解授權政策資源,請參閱
authzPolicy參考文件。將授權政策匯入專案。使用
gcloud beta network-security authz-policies import指令和下列範例值。gcloud beta network-security authz-policies import my-swp-request-authz-policy \ --source=swp-request-authz-policy.yaml \ --location=us-west1
設定內容授權政策的擴充功能
以下範例說明如何設定授權擴充功能,將內容授權政策套用至 us-west1 中的 Secure Web Proxy 執行個體。這項政策規定內容清除服務必須對應用程式酬載執行深入檢查,視需要允許或拒絕要求,或是變更要求和回應。
gcloud
設定授權擴充功能。
在 YAML 檔案中定義擴充功能,將擴充功能與
content-sdp.com建立關聯。使用提供的樣本值。cat >swp-authz-content-extension.yaml <<EOF name: my-swp-content-authz-ext authority: ext11.com loadBalancingScheme: INTERNAL_MANAGED service: "content-sdp.com" failOpen: false timeout: "0.1s" EOF如果是內容授權政策,
policyProfile的值必須為CONTENT_AUTHZ。如果是
CONTENT_AUTHZ政策,則不需要將wireFormat值明確設為EXT_PROC_GRPC。根據預設,叫用會使用ext_proc通訊協定。匯入授權擴充功能。使用
gcloud beta service-extensions authz-extensions import指令和下列範例值。gcloud beta service-extensions authz-extensions import my-swp-content-authz-ext \ --source=swp-content-authz-extension.yaml \ --location=us-west1
使用擴充功能設定授權政策。
定義授權政策,將擴充功能與 Secure Web Proxy 代理伺服器建立關聯。
my-swp-content-authz-extswp-instance1使用提供的樣本值。cat >swp-content-authz-policy.yaml <<EOF name: my-swp-content-authz-policy target: resources: - "projects/PROJECT_ID/locations/us-west1/gateways/swp-instance1" policyProfile: CONTENT_AUTHZ httpRules: - to: operations: - hosts: - exact: "example.com" - paths: - prefix: "/sensitive-stuff" action: CUSTOM customProvider: authzExtension: resources: - "projects/PROJECT_ID/locations/us-west1/authzExtensions/my-swp-content-authz-ext" EOF如果是內容授權政策,
policyProfile的值會設為CONTENT_AUTHZ。這個值表示自訂政策供應商會處理要求和回應流量,包括處理內文。將授權政策匯入專案。使用
gcloud beta network-security authz-policies import指令和下列範例值。gcloud beta network-security authz-policies import my-swp-content-authz-policy \ --source=swp-content-authz-policy.yaml \ --location=us-west1
Secure Web Proxy 擴充功能的限制
如要瞭解 Secure Web Proxy 擴充功能的限制,請參閱下列各節:
後續步驟
- 前往 Service Extensions GitHub 存放區,查看
ext_proc伺服器的 Python 和 Go 範例。 - 管理擴充功能