設定 Secure Web Proxy 的擴充功能

Service Extensions 可讓 Secure Web Proxy 擴充功能向授權服務傳送呼叫,在流量處理路徑中插入自訂處理程序。本頁說明如何使用授權政策設定 Secure Web Proxy 擴充功能。

Secure Web Proxy 擴充功能會透過要求和內容授權政策,設定為授權擴充功能。以要求授權政策為依據的擴充功能,會設定為在以內容授權政策為依據的擴充功能之前執行。

如要瞭解 Secure Web Proxy 擴充功能的運作方式,請參閱「Secure Web Proxy 擴充功能總覽」。

如要瞭解授權擴充功能相關限制,請參閱「配額與限制」頁面。

事前準備

  1. 建立、設定及部署 Secure Web Proxy 執行個體,並在您要用於擴充功能的所在位置 (例如 us-west1) 中,將該執行個體命名為 swp-instance1

    部署 Proxy 時,必須啟用傳輸層安全標準 (TLS) 檢查的閘道安全政策。

  2. 設定下列範例服務:

    Secure Web Proxy 擴充功能只能以完整網域名稱 (FQDN) 為目標。使用 FQDN 目標做為擴充功能時,資料平面會使用 HTTP2 通訊協定搭配 TLS 加密,透過通訊埠 443 與端點通訊。不過,資料平面不會驗證伺服器憑證。 基於安全考量,請確保解析的端點位於 VPC 內。

設定要求授權政策的擴充功能

以下範例說明如何設定授權擴充功能,將要求授權政策套用至 us-west1 中的 Secure Web Proxy 執行個體。這項政策規定流量必須通過特定主體的相互 TLS 驗證,才能抵達目的地 example.com/mcp

gcloud

  1. 設定授權擴充功能。

    1. 在 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
      EOF
      

      Secure Web Proxy 擴充功能是區域資源,必須與 Secure Web Proxy 執行個體位於相同區域。

      對於要求授權政策,wireFormat 值可以是 EXT_AUTHZ_GRPC,這樣一來,即使系統也支援 ext_proc 通訊協定,但宣傳活動仍會使用 ext_authz 通訊協定。

      根據預設,failOpen 會設為 false。如果擴充功能逾時或失敗,要求處理程序就會停止。如果安全或完整性比可用性更重要,建議使用這個預設選項。

    2. 匯入授權擴充功能。使用 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
      
  2. 在同一個專案中,設定具有擴充功能的授權政策。

    對於 example.com/mcp 的任何要求,這項政策都要求特定主體進行相互 TLS 驗證,並將授權決策進一步委派給授權擴充功能 my-swp-authz-request-ext

    1. 定義授權政策,將 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 參考文件

    2. 將授權政策匯入專案。使用 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

  1. 設定授權擴充功能。

    1. 在 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 通訊協定。

    2. 匯入授權擴充功能。使用 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
      
  2. 使用擴充功能設定授權政策。

    1. 定義授權政策,將擴充功能與 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。這個值表示自訂政策供應商會處理要求和回應流量,包括處理內文。

    2. 將授權政策匯入專案。使用 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 擴充功能的限制,請參閱下列各節:

後續步驟