Wenn Sie Erweiterungen mit Plug-ins oder Callouts für ext-proc-basierte Backend-Dienste konfigurieren, können Sie die Anfrage- und Verbindungsattribute angeben, die an diese Dienste weitergeleitet werden sollen. Auf dieser Seite werden die unterstützten Attribute beschrieben und angegeben, welche für die einzelnen Erweiterungstypen verfügbar sind.
Durch das Konfigurieren von Erweiterungen zum Weiterleiten bestimmter Attribute können Sie Folgendes erreichen:
- Dynamische Routingentscheidungen treffen.
- Anfrageheader mit Clientinformationen anreichern.
- Benutzerdefinierte Sicherheitsrichtlinien basierend auf dem Clientstandort oder TLS-Parametern implementieren.
- Detaillierte benutzerdefinierte Logs generieren.
Sie können Attribute mit dem Feld forwardAttributes in der YAML-Konfiguration für Plug-in- und Callout-Erweiterungen angeben. Informationen zu Traffic
Erweiterungen finden Sie unter Traffic
Erweiterung konfigurieren.
Das Angeben von Attributen mit forwardAttributes wird für Autorisierungs-, Edge-, Routen- und Traffic-Erweiterungen unterstützt. Sie können forwardAttributes mit
Wasm-Plug-ins oder Callouts (mit dem
ext_proc
Protokoll) in den folgenden Produkten implementieren:
- Regionale externe Application Load Balancer
- Regionale interne Application Load Balancer
- Globale externe Application Load Balancer
- Regionsübergreifende interne Application Load Balancer
In der folgenden Tabelle sind die unterstützten Attribute und Erweiterungen aufgeführt:
| Attribut | Beschreibung | Erweiterungen |
|---|---|---|
request.origin |
Der Wert des Ursprungsheaders in einer Anfrage für Anwendungsfälle mit CORS (Cross-Origin Resource Sharing). | Verkehr |
request.method |
Die HTTP-Anfragemethode, z. B. GET oder
POST. |
Autorisierung, Edge, Route, Traffic |
request.mcp_method |
Die HTTP-Anfragemethode, z. B. GET oder
POST. |
Autorisierung |
request.host |
Eine praktische Entsprechung von request.headers['host']. |
Autorisierung, Edge, Route, Traffic |
request.path |
Der angeforderte HTTP-URL-Pfad. | Autorisierung, Edge, Route, Traffic |
request.query |
Die HTTP-URL-Abfrage im Format name1=value&name2=value2,
wie sie in der ersten Zeile der HTTP-Anfrage angezeigt wird. Es wird keine Decodierung durchgeführt. |
Autorisierung, Edge, Route, Traffic |
request.scheme |
Das HTTP-URL-Schema, z. B. HTTP oder
HTTPS. Die Werte für dieses Attribut sind kleingeschrieben. |
Autorisierung, Edge, Route, Traffic |
request.backend_service_name |
Der Backend-Dienst, an den die Anfrage weitergeleitet wird. | Autorisierung, Traffic |
request.backend_service_project_number |
Bei Verwendung einer freigegebene VPC die Projektnummer des Backend-Dienstes, an den die Anfrage weitergeleitet wird. | Autorisierung, Traffic |
request.mcp_param |
Der MCP-Parameter. | Autorisierung |
request.user_agent_family |
Der Browsertyp des Clients, abgeleitet von User-Agent
Header
Werten. Diese Werte beziehen sich auf den Rohtextstring, den eingehende HTTP
Clients (z. B. Webbrowser, mobile Apps oder automatisierte Tools) senden
im Standard-HTTP User-Agent Anfrageheader. |
Edge, Traffic (nur für globale externe Application Load Balancer und regionale externe Application Load Balancer) |
request.device_request_type |
Der Gerätetyp des Clients. Mögliche Werte für dieses
Attribut sind APPLE, APPLEWEBKIT,
BLACKBERRY, DOCOMO, GECKO,
GOOGLE, KHTML, KOREAN,
MICROSOFT, MSIE, NETFRONT,
NOKIA, OBIGO, OPERA,
OPENWAVE, OTHER, POLARIS,
SEMC, SMIT, TELECA, oder
USER_DEFINED. |
Edge, Traffic (nur für globale externe Application Load Balancer und regionale externe Application Load Balancer) |
response.cdn_cache_id |
Der Standortcode und die ID der Cache-Instanz, die zur Verarbeitung der Anfrage verwendet wird. Dies ist derselbe Wert, der im
jsonPayload.cacheId Feld der Cloud CDN-Anfragelogs steht.
|
Traffic (nur für globale externe Application Load Balancer) |
response.cdn_cache_status |
Der aktuelle Status der Cache-Instanz, die zur Verarbeitung der Anfrage verwendet wird. Mögliche Werte für dieses
Attribut sind hit, miss, revalidated, stale, uncacheable oder disabled. |
Traffic (nur für globale externe Application Load Balancer) |
source.ip |
IP-Adresse des Clients. | Edge, Route, Traffic |
source.port |
Der Quellport des Clients. | Edge, Route, Traffic |
source.client_region |
Das Land oder die Region, das bzw. die der IP-Adresse des Clients zugeordnet ist.
Der Wert ist ein Unicode-CLDR-Regionscode wie US
oder FR. Für die meisten Länder entsprechen diese Codes
direkt den ISO-3166-2-Codes. |
Edge, Traffic (nur für globale externe Application Load Balancer und regionale externe Application Load Balancer) |
source.client_region_subdivision |
Eine Unterteilung des Landes, z. B. eine Region oder ein Bundesstaat, die bzw. der der IP-Adresse des Clients zugeordnet ist. Dies ist eine Unicode-CLDR
Unterteilungs-ID, z. B. USCA oder CAON. Diese
Unicode-Codes werden von den durch den
ISO-Standard 3166-2 definierten Unterteilungen abgeleitet. |
Edge, Traffic (nur für globale externe Application Load Balancer) |
source.client_city |
Der Name der Stadt, aus der die Anfrage stammt. Beispiel: Mountain View für Mountain View, Kalifornien.
Für diese Variable gibt es keine offizielle Liste gültiger Werte.
Städtenamen können US-ASCII-Buchstaben, Zahlen, Leerzeichen und die
folgenden Zeichen enthalten: !#$%&'*+-.^_`|~. |
Edge, Traffic (nur für globale externe Application Load Balancer) |
source.client_city_lat_long |
Der Breiten- und Längengrad der Stadt, aus der die Anfrage
stammt, z. B. 37.386051,-122.083851
für eine Anfrage aus Mountain View. |
Edge, Traffic (nur für globale externe Application Load Balancer) |
connection.client_encrypted |
Der Wert ist true, wenn die Verbindung zwischen dem Client und dem Load-Balancer über HTTPS, HTTP/2 oder HTTP/3 verschlüsselt ist. Andernfalls ist er false. |
Verkehr |
connection.client_rtt_msec |
Die geschätzte Übertragungszeit zwischen dem Load Balancer und dem HTTP(S)-Client in Millisekunden. Dies ist der Parameter der ausgeglichenen Umlaufzeit (Smoothed Round-Trip Time, SRTT), der vom TCP-Stack des Load Balancers gemäß RFC 2988 ermittelt wird. | Traffic (nur für globale externe Application Load Balancer) |
connection.client_protocol |
Das HTTP-Protokoll, das für die Kommunikation zwischen dem Client und
dem Load-Balancer verwendet wird. Mögliche Werte sind HTTP/1.0,
HTTP/1.1, HTTP/2,
oder HTTP/3. |
Verkehr |
connection.server_ip_address |
Die IP-Adresse des Load-Balancers, zu dem der Client eine Verbindung herstellt.
Dieser Wert kann nützlich sein, wenn mehrere Load-Balancer
gemeinsame Back-Ends haben. Dies ist dieselbe wie die letzte IP-Adresse im
X-Forwarded-For Header. |
Verkehr |
connection.server_port |
Die Zielportnummer, zu der der Client eine Verbindung herstellt. | Verkehr |
connection.sni |
Angabe des Servernamens (wie in RFC 6066 definiert), falls vom Client während des TLS- oder QUIC-Handshake angegeben. Der Hostname wird in Kleinbuchstaben konvertiert und alle nachgestellten Punkte werden entfernt. | Autorisierung, Edge, Traffic |
connection.tls_version |
Die TLS-Version, die während des SSL-Handshakes zwischen Client und Load
Balancer ausgehandelt wird. Mögliche Werte sind:
TLSv1, TLSv1.1, TLSv1.2,
und TLSv1.3. Stellt der Client eine Verbindung mit QUIC
statt TLS her, so lautet der Wert QUIC. |
Edge, Traffic |
connection.sha256_peer_certificate_digest |
Der hexadezimal codierte SHA256-Hash des Peer-Zertifikats in der Downstream-TLS-Verbindung, falls vorhanden. | Autorisierung, Edge, Traffic |
connection.tls_cipher_suite |
Die Cipher Suite, die während des TLS-Handshakes ausgehandelt wird. Der Wert
besteht aus vier Hexadezimalziffern, die von der IANA TLS Cipher Suite
Registry definiert werden, z. B. 009C für
TLS_RSA_WITH_AES_128_GCM_SHA256. Bei QUIC und unverschlüsselten Clientverbindungen ist dieser Wert leer. |
Verkehr |
connection.tls_ja3_fingerprint |
Der JA3-TLS/SSL-Fingerabdruck, wenn der Client eine Verbindung über
HTTPS, HTTP/2, oder HTTP/3 herstellt. |
Verkehr |
connection.tls_ja4_fingerprint |
Der JA4-TLS/SSL-Fingerabdruck, wenn der Client eine Verbindung über HTTPS,
HTTP/2, oder HTTP/3 herstellt. |
Edge, Traffic |
connection.client_cert_present |
Der Wert ist true, wenn der Client während des TLS-Handshake ein
Zertifikat bereitgestellt hat. Andernfalls ist er false. |
Autorisierung, Traffic |
connection.client_cert_chain_verified |
Der Wert ist true, wenn die Clientzertifikatskette mit einem konfigurierten TrustStore verglichen wird. Andernfalls ist er false. |
Autorisierung, Traffic |
connection.client_cert_error |
Vordefinierte Strings, die Fehlerbedingungen darstellen. Weitere Informationen zu den Fehlerstrings finden Sie unter mTLS-Clientvalidierungsmodi. | Autorisierung, Traffic |
connection.client_cert_serial_number |
Die Seriennummer des Clientzertifikats. Wenn die Seriennummer
länger als 50 Byte ist, wird client_cert_error auf client_cert_serial_number_exceeded_size_limit gesetzt
und die Seriennummer auf einen leeren String. |
Autorisierung, Traffic |
connection.client_cert_spiffe_id |
Die SPIFFE-ID aus dem Feld „Alternativer Antragstellername“ (SAN). Wenn
der Wert ungültig ist oder 2.048 Byte überschreitet, wird die SPIFFE-ID auf einen leeren String gesetzt.
Wenn die SPIFFE-ID länger als 2048
Byte ist, wird client_cert_error auf
client_cert_spiffe_id_exceeded_size_limit gesetzt. |
Autorisierung, Traffic |
connection.client_cert_uri_sans |
Eine kommagetrennte Liste mit Base64-codierten SAN-Erweiterungen vom Typ URI. Die SAN-Erweiterungen werden aus dem
Clientzertifikat extrahiert. Die SPIFFE-ID ist nicht im
client_cert_uri_sans Feld enthalten. Wenn
client_cert_uri_sans länger als 512 Byte ist, wird
client_cert_error auf
client_cert_uri_sans_exceeded_size_limit gesetzt und die
durch Kommas getrennte Liste auf einen leeren String. |
Autorisierung, Traffic |
connection.client_cert_dnsname_sans |
Eine kommagetrennte Liste mit Base64-codierten SAN-Erweiterungen vom Typ DNSName. Die SAN-Erweiterungen werden aus
dem Clientzertifikat extrahiert. Wenn client_cert_dnsname_sans
länger als 512 Byte ist, wird client_cert_error auf client_cert_dnsname_sans_exceeded_size_limit gesetzt,
und die durch Kommas getrennte Liste auf einen leeren String. |
Autorisierung, Traffic |
connection.client_cert_valid_not_before |
Der Zeitstempel (Datumsstringformat gemäß RFC 3339), vor dem das
Clientzertifikat ungültig ist, z. B.
2022-07-01T18:05:09+00:00.
|
Autorisierung, Traffic |
connection.client_cert_valid_not_after |
Der Zeitstempel (im Datumsstringformat gemäß RFC 3339), nach dem
das Clientzertifikat ungültig ist, z. B.
2022-07-01T18:05:09+00:00.
|
Autorisierung, Traffic |
connection.client_cert_issuer_dn |
Die Base64-codierte DER-Codierung des vollständigen Issuer
Felds aus dem Zertifikat. Wenn client_cert_issuer_dn
länger als 512 Byte ist, wird der String
client_cert_issuer_dn_exceeded_size_limit zu client_cert_error hinzugefügt und
client_cert_issuer_dn auf einen leeren String gesetzt. |
Autorisierung, Traffic |
connection.client_cert_subject_dn |
Die Base64-codierte DER-Codierung des vollständigen Subject
Felds aus dem Zertifikat. Wenn client_cert_subject_dn
länger als 512 Byte ist, wird der String
client_cert_subject_dn_exceeded_size_limit zu client_cert_error hinzugefügt und
client_cert_subject_dn auf einen leeren String gesetzt. |
Autorisierung, Traffic |
connection.client_cert_leaf |
Das untergeordnete Clientzertifikat für eine hergestellte mTLS-Verbindung
bei der das Zertifikat die Validierung bestanden hat. Die Zertifikatscodierung ist
konform mit RFC 9440. Das bedeutet, dass das binäre DER
Zertifikat Base64-codiert und durch Doppelpunkte auf beiden Seiten getrennt ist. Wenn client_cert_leaf 16 KB uncodiert überschreitet, wird der String client_cert_validated_leaf_exceeded_size_limit zu client_cert_error hinzugefügt und client_cert_leaf auf einen leeren String gesetzt. |
Autorisierung, Traffic |
connection.client_cert_chain |
Die durch Kommas getrennte Liste der Zertifikate in Standard-TLS-Reihenfolge, der Clientzertifikatskette für eine hergestellte mTLS
Verbindung, bei der das Clientzertifikat die Validierung bestanden hat, ohne
das untergeordnete Zertifikat. Die Zertifikatscodierung ist konform
mit RFC 9440. Wenn die kombinierte Größe von
client_cert_leaf und client_cert_chain
vor der Base64-Codierung 16 KB überschreitet, wird der String
client_cert_validated_chain_exceeded_size_limit zu
client_cert_error hinzugefügt und
client_cert_chain auf einen leeren String gesetzt. |
Autorisierung, Traffic |
Beschränkungen
Verfügbarkeit von Attributen: Nicht alle Attribute werden für alle Erweiterungstypen unterstützt. Weitere Informationen finden Sie in der Tabelle auf dieser Seite.
Erforderliche Konfiguration: Wenn Sie Attribute an die Erweiterung senden möchten, müssen Sie die Attribute explizit im Feld
forwardAttributesIhrer Erweiterungskonfiguration auflisten. Wenn Sie ein Attribut in diesem Feld nicht auflisten, leitet der Load-Balancer dieses Attribut nicht an Ihre Erweiterung weiter.Größenbeschränkungen: Sie können maximal 16 Attribute für eine einzelne Erweiterung konfigurieren.
mTLS-Attribute: Clientzertifikatsattribute (
connection.client_cert_*) werden nur in den Daten ausgefüllt, die an Ihre Erweiterung übergeben werden wenn Sie mTLS aktiviert haben und der Client ein Zertifikat präsentiert.