Wenn Sie Erweiterungen mithilfe von 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 es wird 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 Callout-Erweiterungen angeben. Ein Beispiel für Traffic-Erweiterungen finden Sie unter Traffic-Erweiterung konfigurieren.
Die Angabe von Attributen mit forwardAttributes wird für Autorisierungs-, Routen- und Traffic-Erweiterungen unterstützt, die mit dem ext_proc-Protokoll für regionale Application Load Balancer implementiert werden.
In der folgenden Tabelle sind die Attribute und die Erweiterungen aufgeführt, die sie unterstützen:
| 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 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. Die Werte für dieses Attribut sind kleingeschrieben. |
autorisierung, edge, route, traffic |
request.backend_service_name |
Der Back-End-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 |
source.ip |
IP-Adresse des Clients | Kante, Route, Verkehr |
source.port |
Der Quellport des Clients | Kante, Route, Verkehr |
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 den ISO-3166-2-Codes. |
Rahmen, Traffic |
source.client_region_subdivision |
Die 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 |
source.client_city |
Der Name der Stadt, aus der die Anfrage stammt, z. B. 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 |
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 |
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.protocol |
Das HTTP-Protokoll, das für die Kommunikation zwischen dem Client und dem Load Balancer verwendet wird. Sie kann HTTP/1.0,
HTTP/1.1, HTTP/2,
oder HTTP/3 sein. |
Verkehr |
destination.ip |
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. |
Verkehr |
destination.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 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. |
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. |
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 durch Kommas getrennte, 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 durch Kommas getrennte, 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 (RFC 3339-Datumsstring-Format), 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-Datumsstringformat), 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 Felds Issuer 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 Felds Subject 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 RFC 9440-konform. Das binäre DER-Zertifikat ist also Base64-codiert und durch Doppelpunkte auf beiden Seiten getrennt. 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 |