Unterstützte Attribute

Wenn Sie Erweiterungen mithilfe von Plug-ins oder Callouts für ext-proc-basierte Back-End-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.

Wenn Sie Erweiterungen so konfigurieren, dass bestimmte Attribute weitergeleitet werden, haben Sie folgende Möglichkeiten:

  • Dynamische Routingentscheidungen treffen.
  • Anfrageheader mit Clientinformationen anreichern
  • Implementieren Sie benutzerdefinierte Sicherheitsrichtlinien basierend auf dem Clientstandort oder TLS-Parametern.
  • Detaillierte benutzerdefinierte Logs generieren

Sie können Attribute mit dem Feld forwardAttributes in der YAML-Konfiguration für Plug-in- und Zusatzinformationen-Erweiterungen angeben. Ein Beispiel für Traffic-Erweiterungen finden Sie unter Traffic-Erweiterung konfigurieren.

Die Angabe von Attributen mit forwardAttributes wird für Autorisierungs-, Edge-, Routen- und Traffic-Erweiterungen unterstützt. Sie können forwardAttributes in den folgenden Produkten mit Wasm-Plug-ins oder Callouts (mit dem ext_proc-Protokoll) 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). Traffic
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 Convenience-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. Werte für dieses Attribut werden in Kleinbuchstaben angegeben. 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-Headerwerten. Diese Werte beziehen sich auf den Roh-Textstring, den eingehende HTTP-Clients (z. B. Webbrowser, mobile Apps oder automatisierte Tools) im standardmäßigen HTTP-Anfrageheader User-Agent senden. 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. Die möglichen 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)
request.header_order Die Reihenfolge der HTTP-Header in der Clientanfrage als kommagetrennter String von Headernamen, z. B. host,accept,cookie. Dieses Attribut unterstützt die folgenden Headernamen: accept, accept-charset, accept-encoding, accept-language, connection, content-length, content-type, cookie, host, if-modified-since, ping-from, ping-to, pragma, referer, user-agent, via und x-forwarded-for. Traffic (nur für globale 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 Feld jsonPayload.cacheId 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. Die möglichen 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, z. B. US oder FR. Für die meisten Länder entsprechen diese Codes 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 Die Unterteilung (z. B. eine Provinz oder ein Bundesland) des Landes, das 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. Zum Beispiel Mountain View für Mountain View, Kalifornien. Für diese Variable gibt es keine offizielle Liste gültiger Werte. Die Namen der Orte 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 des Orts, aus dem 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. Traffic
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 gemessen 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. Kann HTTP/1.0, HTTP/1.1, HTTP/2 oder HTTP/3 sein. Traffic
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 entspricht der letzten IP-Adresse im Header X-Forwarded-For. Traffic
connection.server_port Die Zielportnummer, zu der der Client eine Verbindung herstellt. Traffic
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 dem Client und dem 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. Rahmen, 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. Traffic
connection.tls_ja3_fingerprint Der JA3-TLS/SSL-Fingerabdruck, wenn der Client eine Verbindung über HTTPS, HTTP/2 oder HTTP/3 herstellt. Traffic
connection.tls_ja4_fingerprint Der JA4-TLS/SSL-Fingerabdruck, wenn der Client eine Verbindung über HTTPS, HTTP/2 oder HTTP/3 herstellt. Rahmen, Traffic
connection.client_cert_present Der Wert ist true, wenn der Client während des TLS-Handshakes ein Zertifikat bereitgestellt hat; andernfalls 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 und die Seriennummer auf einen leeren String gesetzt. 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 2.048 Byte ist, wird client_cert_error auf client_cert_spiffe_id_exceeded_size_limit gesetzt. Autorisierung, Traffic
connection.client_cert_uri_sans Eine kommagetrennte, Base64-codierte Liste der SAN-Erweiterungen vom Typ URI. Die SAN-Erweiterungen werden aus dem Clientzertifikat extrahiert. Die SPIFFE-ID ist nicht im Feld client_cert_uri_sans 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 gesetzt. Autorisierung, Traffic
connection.client_cert_dnsname_sans Eine kommagetrennte, Base64-codierte Liste der 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 gesetzt. 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 RFC 3339-Datumsstring-Format), 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 Bytes 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 Bytes 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 RFC 9440-konform. Das binäre DER-Zertifikat ist Base64-codiert und wird durch Doppelpunkte auf beiden Seiten begrenzt. Wenn client_cert_leaf uncodiert 16 KB ü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 RFC 9440-konform. 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 angeben, 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: Clientzertifikatattribute (connection.client_cert_*) werden nur in den Daten, die an Ihre Erweiterung übergeben werden, ausgefüllt, wenn Sie mTLS aktiviert haben und der Client ein Zertifikat präsentiert.