認可拡張機能を構成する

Service Extensions を使用すると、アプリケーション ロードバランサがバックエンド サービスにコールアウトを送信して、処理パスにカスタム処理を挿入できます。認可拡張機能は、ロードバランサがリクエスト ヘッダーを受信したとき、および URL マップがバックエンド サービスを選択した後に、リクエスト処理パスで実行されます。このページでは、認可ポリシーで定義されたカスタム認可エンジンを使用するように認可拡張機能を構成する方法について説明します。

アプリケーション ロードバランサの拡張機能の概要については、Cloud Load Balancing の拡張機能の概要をご覧ください。

はじめに

Cloud Load Balancing では、ロードバランサに送信されるトラフィックにアクセス制御を適用する認可ポリシーを構成できます。複雑な認可の決定は、認可ポリシーを使用して簡単に表現できないことがあります。

認可拡張機能を使用して認可ポリシーを構成し、認可の決定をカスタム認可エンジンに委任できます。データパスでは、認可拡張機能はルート拡張機能の後に実行され、トラフィック拡張機能の前に実行されます。ロードバランサは、認可リクエストごとにリクエスト ヘッダーを拡張機能に転送します。プロバイダからのレスポンスに応じて、ロードバランサ プロキシはリクエストを転送または拒否します。

アプリケーション ロードバランサ拡張機能に関連する上限については、割り当てと上限のページをご覧ください。

始める前に

コールアウト バックエンド サービスを構成するの説明に従って、必要なリソースを作成します。

認可拡張機能を構成する

次の例は、認可ポリシーを使用して認可拡張機能 my-authz-ext を構成し、us-east1 のリージョン内部アプリケーション ロードバランサの認可判定を委任する方法を示しています。

gcloud

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

    1. バックエンド サービス 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
      EOF
      

      PROJECT_ID は、プロジェクト ID に置き換えます。

      デフォルトでは、すべての Service Extensions コールアウトは Envoy 外部処理または ext_proc プロトコルを使用します。認可コールアウトの場合、より最適な外部認可または ext_authz プロトコルもプレビュー版でサポートされています。wireFormat オプションが EXT_AUTHZ_GRPC に設定されている場合、コールアウトは ext_authz プロトコルを使用します。このオプションを指定しない場合、コールアウトは ext_proc プロトコルを使用します。

    2. 認証拡張機能をインポートします。次のサンプル値を使用して、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 コマンドを使用します。

  2. 拡張機能を使用して認可ポリシーを構成します。

    1. 拡張機能 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
      
    2. 認可ポリシーをプロジェクトにインポートします。次のサンプル値を使用して、gcloud network-security authz-policies import コマンドを使用します。

      gcloud network-security authz-policies import my-authz-policy \
          --source=authz-policy.yaml \
          --location=us-east1
      

認可拡張機能の制限事項

認可拡張機能には、次のような制限があります。

  • 認可ポリシーに設定できる認可拡張機能は 1 つのみです。
  • 転送ルールは複数の認可ポリシーで使用できますが、カスタム認可ポリシーは 1 つだけです。

すべての拡張機能に適用される制限事項については、拡張機能の制限事項をご覧ください。

次のステップ