Service Extensions を使用すると、Secure Web Proxy 拡張機能は認可サービスにコールアウトを送信して、トラフィック処理パスにカスタム処理を挿入できます。このページでは、 認可ポリシーを使用して Secure Web Proxy 拡張機能を構成する方法について説明します。
Secure Web Proxy 拡張機能は、リクエストとコンテンツ の認可ポリシーを使用して 認可拡張機能として構成されます。 リクエスト認可ポリシーに基づく拡張機能は、コンテンツ認可ポリシーに基づく拡張機能よりも前に実行されるように構成されます。
Secure Web Proxy 拡張機能の仕組みについては、 Secure Web Proxy 拡張機能の概要をご覧ください。
認可拡張機能に関連する上限については、 割り当てと上限のページをご覧ください。
始める前に
拡張機能に使用するロケーション(
us-west1など)に、swp-instance1という名前の Secure Web Proxy インスタンス を作成、設定、デプロイします。プロキシは、 Transport Layer Security(TLS)インスペクションが有効になっているゲートウェイ セキュリティ ポリシーを使用してデプロイする必要があります。
次のサンプル サービスを構成します。
リクエスト認可ポリシーの拡張機能を 構成するために使用する認可サービス。 この例では、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
認可拡張機能を構成します。
拡張機能を
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 EOFSecure Web Proxy 拡張機能はリージョン リソースであり、Secure Web Proxy インスタンスと同じリージョンに存在する必要があります。
リクエスト認可ポリシーの場合、
ext_procプロトコルもサポートされていますが、コールアウトでext_authzプロトコルを使用するように、wireFormatの値をEXT_AUTHZ_GRPCに設定できます。デフォルトでは、
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" EOFPROJECT_IDは実際の プロジェクト ID に置き換えます。リクエスト認可ポリシーの場合、
policyProfileの値はREQUEST_AUTHZにする必要があります。CUSTOMアクションは、拡張機能がプロキシに関連付けられていることを示します。認可ポリシー リソースの詳細については、
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
認可拡張機能を構成します。
拡張機能を
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プロトコルを使用します。認可拡張機能をインポートします。次のサンプル値を使用して、
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
拡張機能を使用して認可ポリシーを構成します。
拡張機能
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に設定されます。この値は、カスタム ポリシー プロバイダが本文処理を含むリクエストとレスポンスのトラフィックを処理することを示します。認可ポリシーをプロジェクトにインポートします。次のサンプル値を使用して、
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 サンプルを確認する。 - 拡張機能を管理する