Unterstützte Attribute

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 forwardAttributes Ihrer 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.