Quando configuri le estensioni utilizzando plug-in o callout, puoi specificare gli attributi di richiesta e connessione da inoltrare ai servizi di estensione. Questa pagina descrive gli attributi supportati e identifica quelli disponibili per ogni tipo di estensione.
Configurando le estensioni per l'inoltro di attributi specifici, puoi ottenere quanto segue:
- Prendere decisioni di routing dinamico.
- Arricchisci le intestazioni delle richieste con le informazioni sul client.
- Implementa policy di sicurezza personalizzate in base alla località del client o ai parametri TLS.
- Genera log personalizzati dettagliati.
Puoi specificare gli attributi con il campo forwardAttributes nella configurazione YAML per le estensioni di plug-in e callout. Ad esempio, per le estensioni di traffico, consulta Configura un'estensione di traffico.
Specifica gli attributi con forwardAttributes per i seguenti tipi di estensioni:
- Estensioni perimetrali di Cloud Load Balancing (
LbEdgeExtension) sui bilanciatori del carico delle applicazioni esterni globali - Estensioni di route e traffico di Cloud Load Balancing (
LbRouteExtension,LbTrafficExtension) sui bilanciatori del carico delle applicazioni - Estensioni dell'autorizzazione (
AuthzExtension) che utilizzanoext_procsui bilanciatori del carico delle applicazioni - Estensioni perimetrali di Media CDN (
CdnEdgeExtension) sui servizi Edge Cache di Media CDN
Attributi della richiesta
Puoi estrarre e inoltrare i seguenti attributi dalle richieste:
| Attributo | Tipo | LbEdge |
LbRoute |
LbTraffic |
Authz |
CdnEdge |
Descrizione e differenze di comportamento |
|---|---|---|---|---|---|---|---|
request.method |
string | ✓ | ✓ | ✓ | ✓ | ✓ | Il metodo di richiesta HTTP, ad esempio GET o POST. |
request.host |
string | ✓ | ✓ | ✓ | ✓ | ✓ | Un'alternativa più comoda a request.headers['host']. |
request.path |
string | ✓ | ✓ | ✓ | ✓ | ✓ | Il percorso URL HTTP richiesto. |
request.query |
string | ✓ | ✓ | ✓ | ✓ | ✓ | La query URL HTTP nel formato name1=value&name2=value2. |
request.scheme |
string | ✓ | ✓ | ✓ | ✓ | ✓ | Lo schema URL HTTP (http o https). I valori sono in minuscolo. |
request.origin |
string | — | — | ✓ | ✓ | — | Il valore dell'intestazione della richiesta Origin per i casi d'uso di condivisione delle risorse multiorigine (CORS). |
request.user_agent_family |
string | ✓ | — | ✓ | — | — | La stringa della famiglia di user agent analizzata. Supportato solo sui bilanciatori del carico delle applicazioni esterni globali. |
request.device_request_type |
string | ✓ | — | ✓ | — | — | La categoria di classificazione del dispositivo. Supportato solo sui bilanciatori del carico delle applicazioni esterni globali. |
request.backend_service_name |
string | — | — | ✓ | ✓ | — | Il servizio di backend di destinazione. Non applicabile alle estensioni perimetrali (LbEdgeExtension o CdnEdgeExtension). |
request.backend_service_project_number |
int | — | — | ✓ | ✓ | — | Il numero di progetto del servizio di backend nel VPC condiviso. Non applicabile alle estensioni perimetrali. |
request.mcp_method |
string | — | — | — | ✓ | — | Il nome del metodo Model Context Protocol (MCP). |
Attributi connessione
Puoi estrarre e inoltrare i seguenti attributi dalle connessioni:
| Attributo | Tipo | LbEdge |
LbRoute |
LbTraffic |
Authz |
CdnEdge |
Descrizione e differenze di comportamento |
|---|---|---|---|---|---|---|---|
source.ip |
string | ✓ | ✓ | ✓ | ✓ | — | L'indirizzo IP client. |
source.port |
int | ✓ | ✓ | ✓ | ✓ | ✓ | Il numero di porta di origine del client. |
source.client_region |
string | ✓ | — | ✓ | — | ✓ | Il codice regione ISO-3166-1 o CLDR di due lettere associato all'indirizzo IP client (ad esempio, US o DE). |
source.client_region_subdivision |
string | ✓ | — | ✓ | — | — | Il codice di suddivisione della regione, ad esempio per uno stato o una provincia. Supportato solo sui bilanciatori del carico delle applicazioni esterni globali. |
source.client_city |
string | ✓ | — | ✓ | — | — | La città associata all'indirizzo IP client. Supportato solo sui bilanciatori del carico delle applicazioni esterni globali. |
source.client_city_lat_long |
string | ✓ | — | ✓ | — | — | La latitudine e la longitudine associate alla città del client. Supportato solo sui bilanciatori del carico delle applicazioni esterni globali. |
destination.ip |
string | — | — | ✓ | ✓ | — | L'indirizzo IP del bilanciatore del carico a cui si connette il client. |
destination.port |
int | — | — | ✓ | ✓ | — | Il numero di porta di destinazione a cui si connette il client. |
connection.client_encrypted |
bool | — | — | ✓ | ✓ | — | Il valore è true se la connessione tra il client e il bilanciatore del carico è criptata (utilizzando HTTPS, HTTP/2 o HTTP/3); in caso contrario, è false. |
connection.protocol |
string | — | — | ✓ | ✓ | — | Il protocollo HTTP utilizzato per la comunicazione (HTTP/1.0, HTTP/1.1, HTTP/2 o HTTP/3). |
connection.sni |
string | ✓ | — | ✓ | ✓ | ✓ | L'indicazione del nome server (SNI) richiesta della connessione TLS downstream. |
connection.tls_version |
string | ✓ | — | ✓ | ✓ | ✓ | La versione TLS negoziata con il client (TLSv1, TLSv1.1, TLSv1.2, TLSv1.3 o QUIC). |
connection.tls_cipher_suite |
string | — | — | ✓ | ✓ | — | La suite di cifrari esadecimale di quattro cifre negoziata durante il TLS handshake, ad esempio 009C. |
connection.tls_ja3_fingerprint |
string | — | — | ✓ | — | — | Il fingerprint TLS/SSL JA3 se il client si connette utilizzando HTTPS, HTTP/2 o HTTP/3. |
connection.tls_ja4_fingerprint |
string | ✓ | — | ✓ | — | — | Il fingerprint TLS/SSL JA4 se il client si connette utilizzando HTTPS, HTTP/2 o HTTP/3. |
connection.client_rtt_msec |
int | — | — | ✓ | ✓ | — | Il tempo di round trip (RTT) del client misurato in millisecondi. |
connection.sha256_peer_certificate_digest |
string | ✓ | — | ✓ | ✓ | — | L'hash del certificato peer SHA-256 con codifica esadecimale. |
connection.client_cert_present |
bool | — | — | ✓ | ✓ | — | Il valore è true se il client ha fornito un certificato durante l'handshake TLS; altrimenti, false. |
connection.client_cert_chain_verified |
bool | — | — | ✓ | ✓ | — | Il valore è true se la catena di certificati client viene verificata rispetto a un TrustStore configurato; altrimenti, false. |
connection.client_cert_error |
string | — | — | ✓ | ✓ | — | Stringhe predefinite che rappresentano le condizioni di errore mTLS. Per saperne di più, consulta Modalità di convalida del client mTLS. |
connection.client_cert_serial_number |
string | — | — | ✓ | ✓ | — | Il numero di serie del certificato client. |
connection.client_cert_spiffe_id |
string | — | — | ✓ | ✓ | — | L'ID SPIFFE del campo Nome alternativo del soggetto (SAN). |
connection.client_cert_uri_sans |
string | — | — | ✓ | ✓ | — | Un elenco separato da virgole e codificato in Base64 di estensioni SAN URI estratte dal certificato client. |
connection.client_cert_dnsname_sans |
string | — | — | ✓ | ✓ | — | Un elenco separato da virgole e codificato in Base64 di estensioni SAN DNSName estratte dal certificato client. |
connection.client_cert_valid_not_before |
string | — | — | ✓ | ✓ | — | Il timestamp (formato RFC 3339) prima del quale il certificato client non è valido. |
connection.client_cert_valid_not_after |
string | — | — | ✓ | ✓ | — | Il timestamp (formato RFC 3339) dopo il quale il certificato client non è valido. |
connection.client_cert_issuer_dn |
string | — | — | ✓ | ✓ | — | Il campo Issuer del certificato con codifica DER con codifica Base64. |
connection.client_cert_subject_dn |
string | — | — | ✓ | ✓ | — | Il campo Subject del certificato con codifica DER con codifica Base64. |
connection.client_cert_leaf |
string | — | — | ✓ | ✓ | — | Il certificato foglia client con codifica Base64 per una connessione mTLS stabilita e convalidata (RFC 9440). |
connection.client_cert_chain |
string | — | — | ✓ | ✓ | — | La catena di certificati client con codifica Base64 delimitata da virgole in ordine TLS standard, escluso il certificato foglia (RFC 9440). |
Limitazioni
Disponibilità degli attributi: non tutti gli attributi sono supportati per tutti i tipi di estensione. Per ulteriori informazioni, consulta la tabella in questa pagina.
Configurazione obbligatoria: per inviare attributi all'estensione, devi elencare esplicitamente gli attributi nel campo
forwardAttributesdella configurazione dell'estensione. Se non indichi un attributo in questo campo, il bilanciatore del carico o Media CDN non inoltra l'attributo specifico alla tua estensione.Limiti di dimensioni: puoi configurare un massimo di 16 attributi per una singola estensione.
Attributi mTLS: gli attributi del certificato client (
connection.client_cert_*) vengono inseriti nei dati passati all'estensione solo se hai abilitato mTLS e il client presenta un certificato.