このページでは、アプリケーション ロードバランサの認可ポリシーを設定する方法について説明します。
始める前に
- 認可ポリシーの概要をよく理解してください。
-
- Network Security API
- Network Services API
ロードバランサを設定する
ロードバランサを作成していない場合は、次のページを参照して、目的のアプリケーション ロードバランサを設定してください。
- グローバル外部アプリケーション ロードバランサを作成するには、VM インスタンス グループのバックエンドを使用してグローバル外部アプリケーション ロードバランサを設定するをご覧ください。
リージョン外部アプリケーション ロードバランサを作成するには、VM インスタンス グループのバックエンドを使用してリージョン外部アプリケーション ロードバランサを設定するをご覧ください。
リージョン内部アプリケーション ロードバランサを作成するには、VM インスタンス グループのバックエンドを使用してリージョン内部アプリケーション ロードバランサを設定するをご覧ください。
- クロスリージョンの内部アプリケーション ロードバランサを作成するには、VM インスタンス グループのバックエンドを使用したクロスリージョンの内部アプリケーション ロードバランサの設定をご覧ください。
サービス アカウントまたはタグを作成して VM に接続する Google Cloud
内部アプリケーション ロードバランサの場合、さまざまな Google Cloudリソースに関連付けられているサービス アカウントまたはタグに基づいて認可ポリシーを適用できます。
このドキュメントの例では、 Google Cloud 仮想マシン(VM)インスタンスに接続されているサービス アカウントまたはタグに基づいて認可ポリシーを作成する手順について説明します。特定のサービス アカウントまたはタグにリンクされているクライアント VM から送信されたリクエストは、許可、拒否、または外部サービスに委任できます。サービス アカウントとタグを使用してアクセス制御を適用するこのような承認ポリシーの例については、このドキュメントのサービス アカウントまたはタグに基づく承認ポリシーをご覧ください。
外部アプリケーション ロードバランサでは、サービス アカウントまたはタグに基づく認可ポリシーの適用はサポートされていません。
サービス アカウントをクライアント VM に接続する
サービス アカウントを VM インスタンスに接続する方法については、次のドキュメントをご覧ください。
- VM の作成時にサービス アカウントを設定するには、ユーザー管理のサービス アカウントを使用する VM を作成するをご覧ください。
- 既存の VM にサービス アカウントを設定するには、接続されたサービス アカウントを変更するをご覧ください。
インスタンス グループ テンプレートにタグを適用する
タグをインスタンス グループ テンプレートにバインドする前に、タグのキーと値を作成する必要があります。タグを作成するときに、GCE_FIREWALL
目的で指定します。 Google Cloud Secure Web Proxy や認可ポリシーなどのネットワーキング機能では、タグを適用する GCE_FIREWALL
目的が必要です。
タグキーと値を作成する
タグを作成するには、タグ管理者のロール(roles/resourcemanager.tagAdmin
)が必要です。
コンソール
Google Cloud コンソールで [タグ] ページに移動します。
[
作成] をクリックします。[タグキーの説明] フィールドに説明を入力します。
[ネットワーク ファイアウォールで使用する] チェックボックスをオンにします。
[プロジェクト] リストで、タグを作成する Google Cloud プロジェクトを選択します。
[ネットワーク] フィールドで、
LB_NETWORK
を選択します。[
値を追加] をクリックします。[タグ値] フィールドに「
TAG_VALUE
」と入力します。値は数値で指定してください。[タグの値の説明] フィールドに説明を入力します。
タグ値の追加が完了したら、[タグキーを作成] をクリックします。
gcloud
タグキーを作成します。
gcloud resource-manager tags keys create TAG_KEY \ --parent=organizations/ORG_ID \ --purpose=GCE_FIREWALL \ --purpose-data=network=LB_NETWORK
次のように置き換えます。
TAG_KEY
: タグキーの名前。ORG_ID
: 組織の ID。LB_NETWORK
: VPC ネットワークの名前。
タグ値を数値タグキーに追加します。
gcloud resource-manager tags values create TAG_VALUE \ --parent=ORG_ID/TAG_KEY
TAG_VALUE
は数値のタグ値に置き換えます。
タグをインスタンス グループ テンプレートにバインドする
タグ管理者は、個々の VM インスタンスまたはインスタンス グループ テンプレートにタグをバインドし、タグの値を VM またはテンプレートのバックエンドに接続できます。
タグをバインドするには、タグユーザー ロール(roles/resourcemanager.tagUser
)が必要です。
プロジェクトとゾーンの完全な名前の接頭辞を定義します。
FULL_NAME_PREFIX=//compute.googleapis.com/projects/PROJECT_ID/zones/ZONE/instances/
次のように置き換えます。
PROJECT_ID
: オブジェクトの ID。ZONE
: マネージド インスタンス グループが配置されているゾーン。
インスタンス グループ テンプレートの ID を取得します。
TEMPLATE_ID=$(gcloud compute instance-templates describe TEMPLATE_NAME --region=LOCATION --format='value(id)')
次のように置き換えます。
TEMPLATE_NAME
: インスタンス グループ テンプレートの名前。LOCATION
: リージョン。 Google Cloud
FULL_NAME_PREFIX
とTEMPLATE_ID
の値を連結します。PARENT="$FULL_NAME_PREFIX$TEMPLATE_ID" echo $PARENT
バインディングを作成します。
gcloud resource-manager tags bindings create \ --location LOCATION \ --tag-value ORG_ID/TAG_KEY/TAG_VALUE \ --parent PARENT
次のように置き換えます。
ORG_ID
: 組織の ID。LOCATION
: リージョン。 Google CloudTAG_KEY
: セキュアタグのキーの名前。TAG_VALUE
: 数値タグ値。
認可ポリシーを作成する
認可ポリシーを作成するには、ターゲットとルールを定義する YAML ファイルを作成し、gcloud beta network-security
authz-policies
コマンドを使用してインポートします。
このセクションでは、ロードバランサの転送ルールに適用するさまざまなタイプの認可ポリシーを作成する手順について説明します。
リクエストを拒否する認可ポリシー
グローバルとクロスリージョン
グローバル外部アプリケーション ロードバランサまたはクロスリージョン内部アプリケーション ロードバランサを使用している場合は、次の手順で認可ポリシーを作成してインポートします。
特定のリクエストを拒否する認可ポリシー ファイルを作成します。
次の例では、
global
ロケーションに転送ルールLB_FORWARDING_RULE
のauthz-policy-deny.yaml
ファイルを作成します。このポリシーにより、*.hello.com
のクライアントが/api/payments
URL パスにアクセスできなくなります。$ cat >authz-policy-deny.yaml <<EOF name: my-authz-policy-deny target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/forwardingRules/LB_FORWARDING_RULE" httpRules: - from: sources: - principals: - suffix: ".hello.com" to: operations: - paths: - prefix: "/api/payments" action: DENY EOF
次のように置き換えます。
LB_SCHEME
: ロード バランシング スキーム。グローバル外部アプリケーション ロードバランサの場合は、スキームをEXTERNAL_MANAGED
に設定します。クロスリージョン内部アプリケーション ロードバランサの場合は、スキームをINTERNAL_MANAGED
に設定します。PROJECT_ID
: Google Cloud プロジェクトの ID。LB_FORWARDING_RULE
: ロードバランサの転送ルールの名前。
認可ポリシーを作成し、YAML ファイルをインポートします。
次のコマンド例は、前に作成したポリシー ファイルをインポートし、認可ポリシーを作成します。
gcloud beta network-security authz-policies import my-authz-policy-deny \ --source=authz-policy-deny.yaml \ --location=global
リージョン
リージョン外部アプリケーション ロードバランサまたはリージョン内部アプリケーション ロードバランサを使用している場合は、次の手順で認可ポリシーを作成してインポートします。
特定のリクエストを拒否する認可ポリシー ファイルを作成します。
次の例では、 Google Cloud リージョンに転送ルール
LB_FORWARDING_RULE
のauthz-policy-deny.yaml
ファイルを作成します。このポリシーは、*.hello.com
に一致する ID を持つクライアントから/api/payments
URL パスへのアクセスを拒否します。$ cat >authz-policy-deny.yaml <<EOF name: my-authz-policy-deny target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/LB_FORWARDING_RULE" httpRules: - from: sources: - principals: - suffix: ".hello.com" to: operations: - paths: - prefix: "/api/payments" action: DENY EOF
次のように置き換えます。
LB_SCHEME
: ロード バランシング スキーム。リージョン外部アプリケーション ロードバランサの場合は、スキームをEXTERNAL_MANAGED
に設定します。リージョン内部アプリケーション ロードバランサの場合は、スキームをINTERNAL_MANAGED
に設定します。PROJECT_ID
: Google Cloud プロジェクトの ID。LOCATION
: リージョン。 Google CloudLB_FORWARDING_RULE
: ロードバランサの転送ルールの名前。
認可ポリシーを作成し、YAML ファイルをインポートします。
次のコマンドの例では、前に作成したポリシー ファイルをインポートし、
LOCATION
リージョンに認可ポリシーを作成します。gcloud beta network-security authz-policies import my-authz-policy-deny \ --source=authz-policy-deny.yaml \ --location=LOCATION
リクエストを許可する認可ポリシー
グローバルとクロスリージョン
グローバル外部アプリケーション ロードバランサまたはクロスリージョン内部アプリケーション ロードバランサを使用している場合は、次の手順で認可ポリシーを作成してインポートします。
特定のリクエストを許可する認可ポリシー ファイルを作成します。
次の例では、
global
ロケーションに転送ルールLB_FORWARDING_RULE
のauthz-policy-allow.yaml
ファイルを作成します。このポリシーでは、*.example.com
のクライアントのみが/api/payments
URL パスにアクセスできます。$ cat >authz-policy-allow.yaml <<EOF name: my-authz-policy-allow target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/forwardingRules/LB_FORWARDING_RULE" httpRules: - from: sources: - principals: - suffix: ".example.com" to: operations: - paths: - exact: "/api/payments" action: ALLOW EOF
次のように置き換えます。
LB_SCHEME
: ロード バランシング スキーム。グローバル外部アプリケーション ロードバランサの場合は、スキームをEXTERNAL_MANAGED
に設定します。クロスリージョン内部アプリケーション ロードバランサの場合は、スキームをINTERNAL_MANAGED
に設定します。PROJECT_ID
: Google Cloud プロジェクトの ID。LB_FORWARDING_RULE
: ロードバランサの転送ルールの名前。
認可ポリシーを作成し、YAML ファイルをインポートします。
次のコマンド例は、前に作成したポリシー ファイルをインポートし、認可ポリシーを作成します。
gcloud beta network-security authz-policies import my-authz-policy-allow \ --source=authz-policy-allow.yaml \ --location=global
リージョン
リージョン外部アプリケーション ロードバランサまたはリージョン内部アプリケーション ロードバランサを使用している場合は、次の手順で認可ポリシーを作成してインポートします。
特定のリクエストを許可する認可ポリシー ファイルを作成します。
次の例では、特定のリージョンに転送ルール
LB_FORWARDING_RULE
のauthz-policy-allow.yaml
ファイルを作成します。 Google Cloud このポリシーでは、*.example.com
のクライアントのみが/api/payments
URL パスにアクセスできます。$ cat >authz-policy-allow.yaml <<EOF name: my-authz-policy-allow target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/LB_FORWARDING_RULE" httpRules: - from: sources: - principals: - suffix: ".example.com" to: operations: - paths: - exact: "/api/payments" action: ALLOW EOF
次のように置き換えます。
LB_SCHEME
: ロード バランシング スキーム。リージョン外部アプリケーション ロードバランサを使用している場合は、スキームをEXTERNAL_MANAGED
に設定します。リージョン内部アプリケーション ロードバランサを使用している場合は、スキームをINTERNAL_MANAGED
に設定します。PROJECT_ID
: Google Cloud プロジェクトの ID。LOCATION
: リージョン。 Google CloudLB_FORWARDING_RULE
: ロードバランサの転送ルールの名前。
認可ポリシーを作成し、YAML ファイルをインポートします。
次のコマンドの例では、前に作成したポリシー ファイルをインポートし、
LOCATION
リージョンに認可ポリシーを作成します。gcloud beta network-security authz-policies import my-authz-policy-allow \ --source=authz-policy-allow.yaml \ --location=LOCATION
サービス アカウントまたはタグに基づく認可ポリシー
サービス アカウントまたはタグに基づく認可ポリシーを適用できるのは、内部アプリケーション ロードバランサでのみです。特定のサービス アカウントまたはタグにリンクされているクライアント VM から送信されるトラフィックは、許可、拒否、または外部サービスに委任できます。
サービス アカウントまたはタグを作成して Google Cloud VM に接続する場合は、このドキュメントのサービス アカウントまたはタグを作成して Google Cloud VM に接続するをご覧ください。
サービス アカウント
特定のリクエストを拒否する認可ポリシー ファイルを作成します。
次の例では、リージョン内部アプリケーション ロードバランサの転送ルール
LB_FORWARDING_RULE
のauthz-policy-deny.yaml
ファイルを作成します。このポリシーは、サービス アカウントmy-sa-123@PROJECT_ID.iam.gserviceaccount.com
を持つクライアント VM からの/api/payments
パスへのリクエストを拒否するように構成されています。$ cat >authz-policy-deny.yaml <<EOF name: my-authz-policy-deny target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/LB_FORWARDING_RULE" httpRules: - from: sources: - resources: - iamServiceAccount: exact: "my-sa-123@PROJECT_ID.iam.gserviceaccount.com" to: operations: - paths: - prefix: "/api/payments" action: DENY EOF
次のように置き換えます。
LB_SCHEME
: ロード バランシング スキーム。リージョン内部アプリケーション ロードバランサの場合は、スキームをINTERNAL_MANAGED
に設定します。PROJECT_ID
: Google Cloud プロジェクトの ID。LOCATION
: リージョン。 Google CloudLB_FORWARDING_RULE
: ロードバランサの転送ルールの名前。
認可ポリシーを作成し、YAML ファイルをインポートします。
次のコマンド例は、前に作成したポリシー ファイルをインポートし、指定された Google Cloud リージョンに認可ポリシーを作成します。
gcloud beta network-security authz-policies import my-authz-policy-deny \ --source=authz-policy-deny.yaml \ --location=LOCATION
次のように置き換えます。
LOCATION
: リージョン。 Google Cloud
タグ
特定のリクエストを許可する認可ポリシー ファイルを作成します。
次の例では、リージョン内部アプリケーション ロードバランサの転送ルール
LB_FORWARDING_RULE
のauthz-policy-allow.yaml
ファイルを作成します。このポリシーでは、リソースタグTAG_VALUE
を持つ VM から送信されたリクエストのみが/api/payments
URL パスにアクセスできます。$ cat >authz-policy-allow.yaml <<EOF name: my-authz-policy-allow target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/LB_FORWARDING_RULE" httpRules: - from: sources: resources: - tagValueIdSet: - ids: "TAG_VALUE" to: operations: - paths: - exact: "/api/payments" action: ALLOW EOF
次のように置き換えます。
LB_SCHEME
: ロード バランシング スキーム。リージョン内部アプリケーション ロードバランサの場合は、スキームをINTERNAL_MANAGED
に設定します。PROJECT_ID
: Google Cloud プロジェクトの ID。LOCATION
: リージョン。 Google CloudLB_FORWARDING_RULE
: ロードバランサの転送ルールの名前。
認可ポリシーを作成し、YAML ファイルをインポートします。
次のコマンドの例では、前に作成したポリシー ファイルをインポートし、指定されたGoogle Cloud リージョンに認可ポリシーを作成します。
gcloud beta network-security authz-policies import my-authz-policy-allow \ --source=authz-policy-allow.yaml \ --location=LOCATION
次のように置き換えます。
LOCATION
: リージョン。 Google Cloud
サービス拡張機能に委任する認可ポリシー
始める前に、外部認可エンジンを設定します。サービス拡張機能の詳細については、Cloud Load Balancing コールアウトの概要をご覧ください。
グローバルとクロスリージョン
グローバル外部アプリケーション ロードバランサまたはクロスリージョン内部アプリケーション ロードバランサを使用している場合は、次の手順で認可ポリシーを作成してインポートします。
特定のリクエストを外部サービスに委任する認可ポリシー ファイルを作成します。
次の例では、
global
ロケーションに転送ルールLB_FORWARDING_RULE
のauthz-policy-custom.yaml
ファイルを作成します。リクエストに空でないAuthorization
ヘッダーが含まれている場合、このポリシーは/api/payments
URL パスへのすべてのトラフィックに対してAUTHZ_EXTENSION
拡張機能を呼び出します。$ cat >authz-policy-custom.yaml <<EOF name: my-authz-policy-custom target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/forwardingRules/LB_FORWARDING_RULE" httpRules: - to: operations: - paths: - exact: "/api/payments" when: 'request.headers["Authorization"] != ""' action: CUSTOM customProvider: authzExtension: resources: - "https://networkservices.googleapis.com/v1/projects/PROJECT_ID/locations/global/authzExtensions/AUTHZ_EXTENSION" EOF
次のように置き換えます。
LB_SCHEME
: ロード バランシング スキーム。グローバル外部アプリケーション ロードバランサの場合は、スキームをEXTERNAL_MANAGED
に設定します。クロスリージョン内部アプリケーション ロードバランサの場合は、スキームをINTERNAL_MANAGED
に設定します。PROJECT_ID
: Google Cloud プロジェクトの ID。LB_FORWARDING_RULE
: ロードバランサの転送ルールの名前。AUTHZ_EXTENSION
: 認可拡張機能の名前。
認可ポリシーを作成し、YAML ファイルをインポートします。
次のコマンド例は、前に作成したポリシー ファイルをインポートし、認可ポリシーを作成します。
gcloud beta network-security authz-policies import my-authz-policy-custom \ --source=authz-policy-custom.yaml \ --location=global
リージョン
リージョン外部アプリケーション ロードバランサまたはリージョン内部アプリケーション ロードバランサを使用している場合は、次の手順で認可ポリシーを作成してインポートします。
特定のリクエストを外部サービスに委任する認可ポリシー ファイルを作成します。
次の例では、リージョン内部アプリケーション ロードバランサのリージョンに転送ルール
LB_FORWARDING_RULE
のauthz-policy-custom.yaml
ファイルを作成します。 Google Cloud リクエストに空でないAuthorization
ヘッダーが含まれている場合、このポリシーは/api/payments
URL パスへのすべてのトラフィックに対してAUTHZ_EXTENSION
拡張機能を呼び出します。$ cat >authz-policy-custom.yaml <<EOF name: my-authz-policy-custom target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/LB_FORWARDING_RULE" httpRules: - to: operations: - paths: - exact: "/api/payments" when: 'request.headers["Authorization"] != ""' action: CUSTOM customProvider: authzExtension: resources: - "https://networkservices.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/authzExtensions/AUTHZ_EXTENSION" EOF
次のように置き換えます。
LB_SCHEME
: ロード バランシング スキーム。リージョン外部アプリケーション ロードバランサの場合は、スキームをEXTERNAL_MANAGED
に設定します。リージョン内部アプリケーション ロードバランサの場合は、スキームをINTERNAL_MANAGED
に設定します。PROJECT_ID
: Google Cloud プロジェクトの ID。LOCATION
: リージョン。 Google CloudLB_FORWARDING_RULE
: ロードバランサの転送ルールの名前。AUTHZ_EXTENSION
: 認可拡張機能の名前。
認可ポリシーを作成し、YAML ファイルをインポートします。
次のコマンドの例では、前に作成したポリシー ファイルをインポートし、
LOCATION
リージョンに認可ポリシーを作成します。gcloud beta network-security authz-policies import my-authz-policy-custom \ --source=authz-policy-custom.yaml \ --location=LOCATION
認可ポリシーをテストする
認可ポリシーをテストするには、ロードバランサにトラフィックを送信します。詳しくは次のページをご覧ください。
- グローバル外部アプリケーション ロードバランサを使用している場合は、インスタンスに送信されるトラフィックをテストするをご覧ください。
リージョン外部アプリケーション ロードバランサを使用している場合は、ロードバランサをテストするをご覧ください。
リージョン内部アプリケーション ロードバランサを使用している場合は、ロードバランサをテストするをご覧ください。
- クロスリージョン内部アプリケーション ロードバランサを使用している場合は、ロードバランサをテストするをご覧ください。
Cloud Logging の認可ポリシーログについて
リクエストが許可または拒否されたときに認可ポリシーがどのようにロギングされるかについては、次のセクションをご覧ください。
リクエストが ALLOW
ポリシーと DENY
ポリシーのどちらとも一致しない場合
リクエストが ALLOW
ポリシーと DENY
ポリシーのどちらとも一致しない場合、DENY
ポリシーはリクエストを許可し、allowed_as_no_deny_policies_matched_request
としてログに記録します。逆に、ALLOW
ポリシーはリクエストを拒否し、denied_as_no_allow_policies_matched_request
としてログに記録します。いずれかのポリシーがリクエストを拒否するため、リクエストは拒否されます。
グローバル外部アプリケーション ロードバランサを使用している場合、ログで
statusDetails
はdenied_by_authz_policy
に設定されます。次の例をご覧ください。{ httpRequest: {8} insertId: "example-id" jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" authzPolicyInfo: { policies: [ 0: { details: "allowed_as_no_deny_policies_matched_request" result: "ALLOWED" } 1: { details: "denied_as_no_allow_policies_matched_request" result: "DENIED" } ] result: "DENIED" } backendTargetProjectNumber: "projects/12345567" remoteIp: "00.100.11.104" statusDetails: "denied_by_authz_policy" } logName: "projects/example-project/logs/requests" receiveTimestamp: "2024-08-28T15:33:56.046651035Z" resource: {2} severity: "WARNING" spanId: "3e1a09a8e5e3e14d" timestamp: "2024-08-28T15:33:55.355042Z" trace: "projects/example-project/traces/8c8b3dbf9a19c85954d0fa2d958ca509" }
リージョン内部アプリケーション ロードバランサ、リージョン外部アプリケーション ロードバランサ、またはクロスリージョン内部アプリケーション ロードバランサを使用している場合、ログで
proxyStatus
はerror=\"http_request_error\"; details=\"denied_by_authz_policy\"
に設定されます。次の例をご覧ください。{ httpRequest: {8} insertId: "example-id" jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" authzPolicyInfo: { policies: [ 0: { details: "allowed_as_no_deny_policies_matched_request" result: "ALLOWED" } 1: { details: "denied_as_no_allow_policies_matched_request" result: "DENIED" } ] result: "DENIED" } backendTargetProjectNumber: "projects/12345567" remoteIp: "00.100.11.104" proxyStatus: "error=\"http_request_error\"; details=\"denied_by_authz_policy\"" } logName: "projects/example-project/logs/requests" receiveTimestamp: "2024-08-28T15:33:56.046651035Z" resource: {2} severity: "WARNING" spanId: "3e1a09a8e5e3e14d" timestamp: "2024-08-28T15:33:55.355042Z" trace: "projects/example-project/traces/8c8b3dbf9a19c85954d0fa2d958ca509" }
リクエストが DENY
ポリシーと一致する
リクエストが DENY
ポリシーと一致すると、リクエストは拒否され、リクエストを拒否したポリシーがログに記録されます。
グローバル外部アプリケーション ロードバランサを使用している場合、ログで
statusDetails
はdenied_by_authz_policy
に設定され、リクエストを拒否したポリシーの名前がpolicies
に記録されます。次の例をご覧ください。{ httpRequest: {8} insertId: "example-id" jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" authzPolicyInfo: { policies: [ 0: { details: "name: "projects/12345567/locations/global/authzPolicies/deny-authz-policy-test"" result: "DENIED" } ] result: "DENIED" } backendTargetProjectNumber: "projects/12345567" cacheDecision: [2] remoteIp: "00.100.11.104" statusDetails: "denied_by_authz_policy" } logName: "projects/example-project/logs/requests" receiveTimestamp: "2024-08-28T15:33:56.046651035Z" resource: {2} severity: "WARNING" spanId: "3e1a09a8e5e3e14d" timestamp: "2024-08-28T15:33:55.355042Z" trace: "projects/example-project/traces/8c8b3dbf9a19c85954d0fa2d958ca509" }
リージョン内部アプリケーション ロードバランサ、リージョン外部アプリケーション ロードバランサ、またはクロスリージョン内部アプリケーション ロードバランサを使用している場合、
proxyStatus
はerror=\"http_request_error\"; details=\"denied_by_authz_policy\"
に設定され、ポリシーの名前はpolicies
に記録されます。次の例をご覧ください。{ httpRequest: {8} insertId: "example-id" jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" authzPolicyInfo: { policies: [ 0: { details: "name: "projects/12345567/locations/$REGION/authzPolicies/deny-authz-policy-test"" result: "DENIED" } ] result: "DENIED" } backendTargetProjectNumber: "projects/12345567" remoteIp: "00.100.11.104" proxyStatus: "error=\"http_request_error\"; details=\"denied_by_authz_policy\"" } logName: "projects/example-project/logs/requests" receiveTimestamp: "2024-08-28T15:33:56.046651035Z" resource: {2} severity: "WARNING" spanId: "3e1a09a8e5e3e14d" timestamp: "2024-08-28T15:33:55.355042Z" trace: "projects/example-project/traces/8c8b3dbf9a19c85954d0fa2d958ca509" }
リクエストが DENY
ポリシーと一致しなくても、ALLOW
ポリシーと一致する場合
リクエストが DENY
ポリシーと一致しなくても、ALLOW
ポリシーと一致する場合、リクエストは許可されます。ログでは、このアクションは DENY
ポリシーの allowed_as_no_deny_policies_matched_request
として記録されます。リクエストを許可したポリシーもログに記録されます。
グローバル外部アプリケーション ロードバランサを使用している場合、ログに
statusDetails
は含まれません。リクエストを許可したポリシーもpolicies
に記録されます。次の例をご覧ください。{ httpRequest: {8} insertId: "example-id" jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" authzPolicyInfo: { policies: [ 0: { details: "allowed_as_no_deny_policies_matched_request" result: "ALLOWED" } 1: { details: "name: "projects/12345567/locations/global/authzPolicies/allow-authz-policy-test"" result: "ALLOWED" } ] result: "ALLOWED" } backendTargetProjectNumber: "projects/12345567" cacheDecision: [2] remoteIp: "00.100.11.104" } logName: "projects/example-project/logs/requests" receiveTimestamp: "2024-08-28T15:33:56.046651035Z" resource: {2} severity: "WARNING" spanId: "3e1a09a8e5e3e14d" timestamp: "2024-08-28T15:33:55.355042Z" trace: "projects/example-project/traces/8c8b3dbf9a19c85954d0fa2d958ca509" }
リージョン内部アプリケーション ロードバランサ、リージョン外部アプリケーション ロードバランサ、またはクロスリージョン内部アプリケーション ロードバランサを使用している場合、ログに
proxyStatus
フィールドはありません。リクエストを許可したポリシーもpolicies
に記録されます。次の例をご覧ください。{ httpRequest: {8} insertId: "example-id" jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" authzPolicyInfo: { policies: [ 0: { details: "allowed_as_no_deny_policies_matched_request" result: "ALLOWED" } 1: { details: "name: "projects/12345567/locations/$REGION/authzPolicies/allow-authz-policy-test"" result: "ALLOWED" } ] result: "ALLOWED" } backendTargetProjectNumber: "projects/12345567" cacheDecision: [2] remoteIp: "00.100.11.104" } logName: "projects/example-project/logs/requests" receiveTimestamp: "2024-08-28T15:33:56.046651035Z" resource: {2} severity: "WARNING" spanId: "3e1a09a8e5e3e14d" timestamp: "2024-08-28T15:33:55.355042Z" trace: "projects/example-project/traces/8c8b3dbf9a19c85954d0fa2d958ca509" }