プラグインまたはコールアウトを使用して拡張機能を構成する場合は、拡張機能サービスに転送するリクエスト属性と接続属性を指定できます。このページでは、サポートされている属性について説明し、各拡張機能タイプで使用できる属性を特定します。
特定の属性を転送するように拡張機能を構成すると、次のことが可能になります。
- 動的ルーティングを決定する。
- クライアント情報を使用してリクエスト ヘッダーを拡充する。
- クライアントの場所または TLS パラメータに基づいてカスタム セキュリティ ポリシーを実装する。
- 詳細なカスタムログを生成する。
プラグイン拡張機能とコールアウト拡張機能の YAML 構成の forwardAttributes フィールドで属性を指定できます。たとえば、トラフィック拡張機能については、トラフィック拡張機能を構成するをご覧ください。
次のタイプの拡張機能に forwardAttributes を使用して属性を指定します。
- グローバル外部アプリケーション ロードバランサの Cloud Load Balancing エッジ拡張機能(
LbEdgeExtension) - アプリケーション ロードバランサの Cloud Load Balancing ルートとトラフィック拡張機能(
LbRouteExtension、LbTrafficExtension) - アプリケーション ロードバランサで
ext_procを使用する認可拡張機能(AuthzExtension) - Media CDN Edge Cache サービスの Media CDN エッジ拡張機能(
CdnEdgeExtension)
リクエストの属性
リクエストから次の属性を抽出して転送できます。
| 属性 | 種類 | LbEdge |
LbRoute |
LbTraffic |
Authz |
CdnEdge |
説明と動作の違い |
|---|---|---|---|---|---|---|---|
request.method |
文字列 | ✓ | ✓ | ✓ | ✓ | ✓ | GET や POST などの HTTP リクエスト メソッド。 |
request.host |
文字列 | ✓ | ✓ | ✓ | ✓ | ✓ | request.headers['host'] と同等の利便性。 |
request.path |
文字列 | ✓ | ✓ | ✓ | ✓ | ✓ | リクエストした HTTP URL パス。 |
request.query |
文字列 | ✓ | ✓ | ✓ | ✓ | ✓ | name1=value&name2=value2 形式の HTTP URL クエリ。 |
request.scheme |
文字列 | ✓ | ✓ | ✓ | ✓ | ✓ | HTTP URL スキーム(http または https)。値は小文字です。 |
request.origin |
文字列 | — | — | ✓ | ✓ | — | クロスオリジン リソース シェアリング(CORS)のユースケースの Origin リクエスト ヘッダーの値。 |
request.user_agent_family |
文字列 | ✓ | — | ✓ | — | — | 解析されたユーザー エージェント ファミリー文字列。グローバル外部アプリケーション ロードバランサでのみサポートされます。 |
request.device_request_type |
文字列 | ✓ | — | ✓ | — | — | デバイスの分類カテゴリ。グローバル外部アプリケーション ロードバランサでのみサポートされます。 |
request.backend_service_name |
文字列 | — | — | ✓ | ✓ | — | ターゲット バックエンド サービス。エッジ拡張機能(LbEdgeExtension または CdnEdgeExtension)には適用されません。 |
request.backend_service_project_number |
int | — | — | ✓ | ✓ | — | 共有 VPC のバックエンド サービスのプロジェクト番号。エッジ拡張機能には適用されません。 |
request.mcp_method |
文字列 | — | — | — | ✓ | — | Model Context Protocol(MCP)メソッド名。 |
接続属性
接続から次の属性を抽出して転送できます。
| 属性 | 種類 | LbEdge |
LbRoute |
LbTraffic |
Authz |
CdnEdge |
説明と動作の違い |
|---|---|---|---|---|---|---|---|
source.ip |
文字列 | ✓ | ✓ | ✓ | ✓ | — | クライアントの IP アドレス。 |
source.port |
int | ✓ | ✓ | ✓ | ✓ | ✓ | クライアントの送信元ポート番号。 |
source.client_region |
文字列 | ✓ | — | ✓ | — | ✓ | クライアント IP アドレスに関連付けられた 2 文字の ISO-3166-1 または CLDR リージョン コード(US や DE など)。 |
source.client_region_subdivision |
文字列 | ✓ | — | ✓ | — | — | 地域サブディビジョン コード(州や都道府県など)。 グローバル外部アプリケーション ロードバランサでのみサポートされます。 |
source.client_city |
文字列 | ✓ | — | ✓ | — | — | クライアントの IP アドレスに関連付けられている都市。グローバル外部アプリケーション ロードバランサでのみサポートされます。 |
source.client_city_lat_long |
文字列 | ✓ | — | ✓ | — | — | クライアントの都市に関連付けられた緯度と経度。グローバル外部アプリケーション ロードバランサでのみサポートされます。 |
destination.ip |
文字列 | — | — | ✓ | ✓ | — | クライアントが接続するロードバランサの IP アドレス。 |
destination.port |
int | — | — | ✓ | ✓ | — | クライアントが接続する宛先ポート番号。 |
connection.client_encrypted |
bool | — | — | ✓ | ✓ | — | クライアントとロードバランサ間の接続が暗号化されている場合(HTTPS、HTTP/2、または HTTP/3 を使用)は true、それ以外の場合は false です。 |
connection.protocol |
文字列 | — | — | ✓ | ✓ | — | 通信に使用される HTTP プロトコル(HTTP/1.0、HTTP/1.1、HTTP/2、HTTP/3)。 |
connection.sni |
文字列 | ✓ | — | ✓ | ✓ | ✓ | ダウンストリーム TLS 接続のリクエストされた Server Name Indication(SNI)。 |
connection.tls_version |
文字列 | ✓ | — | ✓ | ✓ | ✓ | クライアントとネゴシエートされた TLS バージョン(TLSv1、TLSv1.1、TLSv1.2、TLSv1.3、QUIC)。 |
connection.tls_cipher_suite |
文字列 | — | — | ✓ | ✓ | — | TLS handshake 中にネゴシエートされた 4 桁の 16 進数の暗号スイート(例: 009C)。 |
connection.tls_ja3_fingerprint |
文字列 | — | — | ✓ | — | — | JA3 TLS/SSL フィンガープリント(クライアントが HTTPS、HTTP/2、HTTP/3 を使用して接続している場合)。 |
connection.tls_ja4_fingerprint |
文字列 | ✓ | — | ✓ | — | — | JA4 TLS/SSL フィンガープリント(クライアントが HTTPS、HTTP/2、HTTP/3 を使用して接続している場合)。 |
connection.client_rtt_msec |
int | — | — | ✓ | ✓ | — | クライアントのラウンドトリップ時間(RTT)(ミリ秒単位)。 |
connection.sha256_peer_certificate_digest |
文字列 | ✓ | — | ✓ | ✓ | — | 16 進数でエンコードされた SHA-256 ピア証明書ハッシュ。 |
connection.client_cert_present |
bool | — | — | ✓ | ✓ | — | TLS handshake 中にクライアントが証明書を提供した場合は true、それ以外は false。 |
connection.client_cert_chain_verified |
bool | — | — | ✓ | ✓ | — | 構成された TrustStore に対してクライアント証明書チェーンが検証された場合は true、それ以外の場合は false。 |
connection.client_cert_error |
文字列 | — | — | ✓ | ✓ | — | mTLS エラー条件を表す事前定義の文字列。詳細については、mTLS クライアント検証モードをご覧ください。 |
connection.client_cert_serial_number |
文字列 | — | — | ✓ | ✓ | — | クライアント証明書のシリアル番号。 |
connection.client_cert_spiffe_id |
文字列 | — | — | ✓ | ✓ | — | サブジェクト代替名(SAN)フィールドの SPIFFE ID。 |
connection.client_cert_uri_sans |
文字列 | — | — | ✓ | ✓ | — | クライアント証明書から抽出された URI SAN 拡張機能のカンマ区切り Base64 エンコード リスト。 |
connection.client_cert_dnsname_sans |
文字列 | — | — | ✓ | ✓ | — | クライアント証明書から抽出された DNSName SAN 拡張機能のカンマ区切り Base64 エンコード リスト。 |
connection.client_cert_valid_not_before |
文字列 | — | — | ✓ | ✓ | — | クライアント証明書が無効になる前のタイムスタンプ(RFC 3339 形式)。 |
connection.client_cert_valid_not_after |
文字列 | — | — | ✓ | ✓ | — | クライアント証明書が有効でなくなった後のタイムスタンプ(RFC 3339 形式)。 |
connection.client_cert_issuer_dn |
文字列 | — | — | ✓ | ✓ | — | 証明書の Issuer フィールドの Base64 でエンコードされた DER エンコード。 |
connection.client_cert_subject_dn |
文字列 | — | — | ✓ | ✓ | — | 証明書の Subject フィールドの Base64 でエンコードされた DER エンコード。 |
connection.client_cert_leaf |
文字列 | — | — | ✓ | ✓ | — | 確立され、検証された mTLS 接続の Base64 でエンコードされたクライアント リーフ証明書(RFC 9440)。 |
connection.client_cert_chain |
文字列 | — | — | ✓ | ✓ | — | 標準の TLS 順序で Base64 でエンコードされたカンマ区切りのクライアント証明書チェーン(リーフ証明書を除く)(RFC 9440)。 |
制限事項
属性の可用性: すべての属性がすべての拡張機能タイプでサポートされているわけではありません。詳しくは、このページの表をご覧ください。
必須の構成: 拡張機能に属性を送信するには、拡張機能の構成の
forwardAttributesフィールドに属性を明示的にリストする必要があります。このフィールドに属性をリストしない場合、ロードバランサまたは Media CDN はその特定の属性を拡張機能に転送しません。サイズの上限: 1 つの拡張機能に最大 16 個の属性を構成できます。
mTLS 属性: クライアント証明書属性(
connection.client_cert_*)は、mTLS を有効にしてクライアントが証明書を提示した場合にのみ、拡張機能に渡されるデータに入力されます。