Attributi supportati

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 utilizzano ext_proc sui 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 forwardAttributes della 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.