Secure Web Proxy の拡張機能を構成する

Service Extensions を使用すると、Secure Web Proxy 拡張機能は認可サービスにコールアウトを送信して、トラフィック処理パスにカスタム処理を挿入できます。このページでは、 認可ポリシーを使用して Secure Web Proxy 拡張機能を構成する方法について説明します。

Secure Web Proxy 拡張機能は、リクエストとコンテンツ の認可ポリシーを使用して 認可拡張機能として構成されます。 リクエスト認可ポリシーに基づく拡張機能は、コンテンツ認可ポリシーに基づく拡張機能よりも前に実行されるように構成されます。

Secure Web Proxy 拡張機能の仕組みについては、 Secure Web Proxy 拡張機能の概要をご覧ください。

認可拡張機能に関連する上限については、 割り当てと上限のページをご覧ください。

始める前に

  1. 拡張機能に使用するロケーション(us-west1 など)に、swp-instance1 という名前の Secure Web Proxy インスタンス を作成、設定、デプロイします。

    プロキシは、 Transport Layer Security(TLS)インスペクションが有効になっているゲートウェイ セキュリティ ポリシーを使用してデプロイする必要があります。

  2. 次のサンプル サービスを構成します。

    • リクエスト認可ポリシーの拡張機能を 構成するために使用する認可サービス。 この例では、FQDN が request-authz.com であると想定します。

    • コンテンツ認可ポリシーの拡張機能を 構成するために使用するサニタイズ サービス。 この例では、FQDN が content-sdp.com であると想定します。

    Secure Web Proxy 拡張機能は、完全修飾ドメイン名(FQDN)のみをターゲットにできます。拡張機能に FQDN ターゲットを使用する場合、データプレーンは TLS 暗号化を使用した HTTP2 プロトコルを使用して、ポート 443 のエンドポイントと通信します。ただし、データプレーンはサーバー証明書を検証しません。 セキュリティ上の理由から、解決されたエンドポイントが VPC 内にあることを確認してください。

リクエスト認可ポリシーの拡張機能を構成する

次の例は、us-west1 の Secure Web Proxy インスタンスにリクエスト認可ポリシーを適用する認可拡張機能を構成する方法を示しています。このポリシーでは、トラフィックが宛先 example.com/mcp に到達する前に、特定のプリンシパルからの相互 TLS 認証に合格する必要があります。

gcloud

  1. 認可拡張機能を構成します。

    1. 拡張機能を request-authz.com に関連付ける YAML ファイルで拡張機能を定義します。提供されているサンプル値を使用します。

      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 インスタンスと同じリージョンに存在する必要があります。

      リクエスト認可ポリシーの場合、ext_proc プロトコルもサポートされていますが、コールアウトで ext_authz プロトコルを使用するように、wireFormat の値を EXT_AUTHZ_GRPC に設定できます。

      デフォルトでは、failOpenfalse に設定されています。拡張機能がタイムアウトまたは失敗すると、リクエスト処理が停止します。このデフォルト オプションは、可用性よりもセキュリティまたは整合性を優先する場合に適しています。

    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 アクションは、拡張機能がプロキシに関連付けられていることを示します。

      認可ポリシー リソースの詳細については、 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. 拡張機能を content-sdp.com に関連付ける YAML ファイルで拡張機能を定義します。提供されているサンプル値を使用します。

      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. 拡張機能 my-swp-content-authz-ext を Secure Web Proxy プロキシ swp-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 拡張機能の制限事項については、次のセクションをご覧ください。

次のステップ