Service Extensions を使用すると、アプリケーション ロードバランサがバックエンド サービスにコールアウトを送信して、処理パスにカスタム処理を挿入できます。認可拡張機能は、ロードバランサがリクエスト ヘッダーを受信したとき、および URL マップがバックエンド サービスを選択した後に、リクエスト処理パスで実行されます。このページでは、認可ポリシーで定義されたカスタム認可エンジンを使用するように認可拡張機能を構成する方法について説明します。
アプリケーション ロードバランサの拡張機能の概要については、Cloud Load Balancing の拡張機能の概要をご覧ください。
はじめに
Cloud Load Balancing では、ロードバランサに送信されるトラフィックにアクセス制御を適用する認可ポリシーを構成できます。複雑な認可の決定は、認可ポリシーを使用して簡単に表現できないことがあります。
認可拡張機能を使用して認可ポリシーを構成し、認可の決定をカスタム認可エンジンに委任できます。データパスでは、認可拡張機能はルート拡張機能の後に実行され、トラフィック拡張機能の前に実行されます。ロードバランサは、認可リクエストごとにリクエスト ヘッダーを拡張機能に転送します。プロバイダからのレスポンスに応じて、ロードバランサ プロキシはリクエストを転送または拒否します。
アプリケーション ロードバランサ拡張機能に関連する上限については、割り当てと上限のページをご覧ください。
始める前に
コールアウト バックエンド サービスを構成するの説明に従って、必要なリソースを作成します。
認可拡張機能を構成する
次の例は、認可ポリシーを使用して認可拡張機能 my-authz-ext を構成し、us-east1 のリージョン内部アプリケーション ロードバランサの認可判定を委任する方法を示しています。
gcloud
認可拡張機能を構成します。
バックエンド サービス
authz-serviceに関連付ける拡張機能を YAML ファイルで定義します。提供されているサンプル値を使用します。cat >authz-extension.yaml <<EOF name: my-authz-ext authority: ext11.com loadBalancingScheme: INTERNAL_MANAGED service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/authz-service forwardHeaders: - Authorization failOpen: false timeout: "0.1s" wireFormat: EXT_AUTHZ_GRPC EOFPROJECT_IDは、プロジェクト ID に置き換えます。デフォルトでは、すべての Service Extensions コールアウトは Envoy 外部処理または
ext_procプロトコルを使用します。認可コールアウトの場合、より最適な外部認可またはext_authzプロトコルもプレビュー版でサポートされています。wireFormatオプションがEXT_AUTHZ_GRPCに設定されている場合、コールアウトはext_authzプロトコルを使用します。このオプションを指定しない場合、コールアウトはext_procプロトコルを使用します。認証拡張機能をインポートします。次のサンプル値を使用して、
gcloud service-extensions authz-extensions importコマンドを使用します。gcloud service-extensions authz-extensions import my-authz-ext \ --source=authz-extension.yaml \ --location=us-east1プロトコルを
ext_authzに設定する場合は、代わりにgcloud beta service-extensions authz-extensions importコマンドを使用します。
拡張機能を使用して認可ポリシーを構成します。
拡張機能
my-authz-extを転送ルールfr1に関連付ける認可ポリシーを定義します。提供されているサンプル値を使用します。CUSTOMアクションは、拡張機能が使用されていることを示します。cat >authz-policy.yaml <<EOF name: my-authz-policy target: loadBalancingScheme: INTERNAL_MANAGED resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-east1/forwardingRules/fr1" action: CUSTOM customProvider: authzExtension: resources: - "projects/PROJECT_ID/locations/us-east1/authzExtensions/my-authz-ext" EOF認可ポリシーをプロジェクトにインポートします。次のサンプル値を使用して、
gcloud network-security authz-policies importコマンドを使用します。gcloud network-security authz-policies import my-authz-policy \ --source=authz-policy.yaml \ --location=us-east1
認可拡張機能の制限事項
認可拡張機能には、次のような制限があります。
- 認可ポリシーに設定できる認可拡張機能は 1 つのみです。
- 転送ルールは複数の認可ポリシーで使用できますが、カスタム認可ポリシーは 1 つだけです。
すべての拡張機能に適用される制限事項については、拡張機能の制限事項をご覧ください。
次のステップ
- Service Extensions の GitHub リポジトリで、
ext_authzサーバーとext_procサーバーの Python と Go のサンプルをご覧ください。 - ルート拡張機能を構成する
- トラフィック拡張機能を構成する
- 拡張機能を管理する