Attributi supportati

Quando configuri le estensioni utilizzando plug-in o callout per i servizi di backend basati su ext-proc, puoi specificare gli attributi di richiesta e connessione da inoltrare a questi servizi. Questa pagina descrive gli attributi supportati e specifica quali sono disponibili per ogni tipo di estensione.

Configurando le estensioni per inoltrare attributi specifici, puoi ottenere quanto segue:

  • Prendere decisioni di routing dinamico.
  • Arricchire le intestazioni delle richieste con le informazioni del client.
  • Implementare policy di sicurezza personalizzate in base alla località del client o ai parametri TLS.
  • Generare 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 del traffico, consulta Configurare un'estensione del traffico.

La specifica degli attributi con forwardAttributes è supportata per le estensioni di autorizzazione, edge, route e traffico. Puoi implementare forwardAttributes utilizzando plug-in Wasm o callout (con il ext_proc protocollo) sui seguenti prodotti:

  • Bilanciatori del carico delle applicazioni esterni regionali
  • Bilanciatori del carico delle applicazioni interni regionali
  • Bilanciatori del carico delle applicazioni esterni globali
  • Bilanciatori del carico delle applicazioni interni tra regioni

La tabella seguente elenca gli attributi e le estensioni supportati:

Attributo Descrizione Estensioni
request.origin Il valore dell'intestazione dell'origine in una richiesta per i casi d'uso di condivisione delle risorse tra origini (CORS). traffico
request.method Il metodo di richiesta HTTP, ad esempio GET o POST. autorizzazione, edge, route, traffico
request.mcp_method Il metodo di richiesta HTTP, ad esempio GET o POST. autorizzazione
request.host Un equivalente pratico di request.headers['host']. autorizzazione, edge, route, traffico
request.path Il percorso dell'URL HTTP richiesto. autorizzazione, edge, route, traffico
request.query La query URL HTTP, nel formato name1=value&name2=value2, come appare nella prima riga della richiesta HTTP. Non viene eseguita alcuna decodifica. autorizzazione, edge, route, traffico
request.scheme Lo schema URL HTTP, ad esempio HTTP o HTTPS. I valori di questo attributo sono in minuscolo. autorizzazione, edge, route, traffico
request.backend_service_name Il servizio di backend al quale viene inoltrata la richiesta. autorizzazione, traffico
request.backend_service_project_number Quando si utilizza un VPC condiviso, indica il numero di progetto del servizio backend a cui viene inoltrata la richiesta. autorizzazione, traffico
request.mcp_param Il parametro MCP. autorizzazione
request.user_agent_family Il tipo di browser del client, derivato dai valori dell'intestazione User-Agent. Questi valori si riferiscono alla stringa di testo non elaborata che i client HTTP in entrata (come browser web, app mobile o strumenti automatici) inviano nell'intestazione della richiesta HTTP standard User-Agent. edge, traffico (solo per i bilanciatori del carico delle applicazioni esterni globali e regionali)
request.device_request_type Il tipo di dispositivo del client. I valori possibili per questo attributo possono essere APPLE, APPLEWEBKIT, BLACKBERRY, DOCOMO, GECKO, GOOGLE, KHTML, KOREAN, MICROSOFT, MSIE, NETFRONT, NOKIA, OBIGO, OPERA, OPENWAVE, OTHER, POLARIS, SEMC, SMIT, TELECA o USER_DEFINED. edge, traffico (solo per i bilanciatori del carico delle applicazioni esterni globali e regionali)
response.cdn_cache_id Il codice località e l'ID dell'istanza della cache utilizzata per gestire la richiesta. Si tratta dello stesso valore inserito nel campo jsonPayload.cacheId dei log delle richieste di Cloud CDN. traffico (solo per i bilanciatori del carico delle applicazioni esterni globali)
response.cdn_cache_status Lo stato attuale dell'istanza della cache utilizzata per gestire la richiesta. I valori possibili per questo attributo possono essere hit, miss, revalidated, stale, uncacheable o disabled. traffico (solo per i bilanciatori del carico delle applicazioni esterni globali)
source.ip L'indirizzo IP del client. edge, route, traffico
source.port La porta di origine del client. edge, route, traffico
source.client_region Il paese o la regione associati all'indirizzo IP del client. Il valore è un codice regione Unicode CLDR, ad esempio US o FR. Per la maggior parte dei paesi, questi codici corrispondono direttamente ai codici ISO-3166-2. edge, traffico (solo per i bilanciatori del carico delle applicazioni esterni globali e regionali)
source.client_region_subdivision La suddivisione (ad esempio, una provincia o uno stato) del paese associato all'indirizzo IP del client. Si tratta di un ID di suddivisione Unicode CLDR, ad esempio USCA o CAON. Questi codici Unicode derivano dalle suddivisioni definite dallo standard ISO-3166-2. edge, traffico (solo per i bilanciatori del carico delle applicazioni esterni globali)
source.client_city Il nome della città da cui ha avuto origine la richiesta. Ad esempio, Mountain View per Mountain View, California. Non esiste un elenco canonico di valori validi per questa variabile. I nomi delle città possono contenere lettere, numeri, spazi US-ASCII e i seguenti caratteri: !#$%&'*+-.^_`|~. edge, traffico (solo per i bilanciatori del carico delle applicazioni esterni globali)
source.client_city_lat_long La latitudine e la longitudine della città da cui ha avuto origine la richiesta, ad esempio 37.386051,-122.083851 per una richiesta da Mountain View. edge, traffico (solo per i bilanciatori del carico delle applicazioni esterni globali)
connection.client_encrypted 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. traffico
connection.client_rtt_msec Il tempo di trasmissione di round trip stimato tra il bilanciatore del carico e il client HTTP(S), in millisecondi. Si tratta del parametro del tempo di round trip uniforme (SRTT) (come definito in RFC 2988) misurato dallo stack TCP del bilanciatore del carico. traffico (solo per i bilanciatori del carico delle applicazioni esterni globali)
connection.client_protocol Il protocollo HTTP utilizzato per la comunicazione tra il client e il bilanciatore del carico. Può essere uno tra HTTP/1.0, HTTP/1.1, HTTP/2, o HTTP/3. traffico
connection.server_ip_address L'indirizzo IP del bilanciatore del carico a cui si connette il client. Questo valore può essere utile quando più bilanciatori del carico condividono backend comuni. È lo stesso dell'ultimo indirizzo IP nell' X-Forwarded-For intestazione. traffico
connection.server_port Il numero di porta di destinazione a cui si connette il client. traffico
connection.sni L'indicazione del nome del server (come definito in RFC 6066), se fornita da il client durante l'handshake TLS o QUIC. Il nome host viene convertito in minuscolo e il punto finale viene rimosso. autorizzazione, edge, traffico
connection.tls_version La versione TLS negoziata tra il client e il bilanciatore del carico durante l'handshake SSL. I valori possibili includono: TLSv1, TLSv1.1, TLSv1.2, e TLSv1.3. Se il client si connette utilizzando QUIC anziché TLS, il valore è QUIC. edge, traffico
connection.sha256_peer_certificate_digest L'hash SHA256 con codifica esadecimale del certificato peer nella connessione TLS downstream, se presente. autorizzazione, edge, traffico
connection.tls_cipher_suite La suite di crittografia negoziata durante l'handshake TLS. Il valore è costituito da quattro cifre esadecimali definite dal registro delle suite di crittografia TLS IANA, ad esempio 009C per TLS_RSA_WITH_AES_128_GCM_SHA256. Questo valore è vuoto per le connessioni client QUIC e non criptate. traffico
connection.tls_ja3_fingerprint L'impronta JA3 TLS/SSL se il client si connette utilizzando HTTPS, HTTP/2, o HTTP/3. traffico
connection.tls_ja4_fingerprint L'impronta JA4 TLS/SSL se il client si connette utilizzando HTTPS, HTTP/2, o HTTP/3. edge, traffico
connection.client_cert_present Il valore è true se il client ha fornito un certificato durante l'handshake TLS; in caso contrario, false. autorizzazione, traffico
connection.client_cert_chain_verified Il valore è true se la catena di certificati client viene verificata rispetto a un TrustStore configurato; in caso contrario, è false. autorizzazione, traffico
connection.client_cert_error Stringhe predefinite che rappresentano le condizioni di errore. Per saperne di più sulle stringhe di errore, consulta Modalità di convalida del client mTLS. autorizzazione, traffico
connection.client_cert_serial_number Il numero di serie del certificato client. Se il numero di serie è più lungo di 50 byte, client_cert_error viene impostato su client_cert_serial_number_exceeded_size_limit, e il numero di serie viene impostato su una stringa vuota. autorizzazione, traffico
connection.client_cert_spiffe_id L'ID SPIFFE dal campo Nome alternativo del soggetto (SAN). Se il valore non è valido o supera i 2048 byte, l'ID SPIFFE viene impostato su una stringa vuota. Se l'ID SPIFFE è più lungo di 2048 byte, client_cert_error viene impostato su client_cert_spiffe_id_exceeded_size_limit. autorizzazione, traffico
connection.client_cert_uri_sans Un elenco separato da virgole e codificato in Base64 delle estensioni SAN di tipo URI. Le estensioni SAN vengono estratte dal client certificate. L'ID SPIFFE non è incluso nel client_cert_uri_sans campo. Se client_cert_uri_sans è più lungo di 512 byte, il client_cert_error viene impostato su client_cert_uri_sans_exceeded_size_limit e l' elenco separato da virgole viene impostato su una stringa vuota. autorizzazione, traffico
connection.client_cert_dnsname_sans Un elenco separato da virgole e codificato in Base64 delle estensioni SAN di tipo DNSName. Le estensioni SAN vengono estratte da il certificato client. Se client_cert_dnsname_sans è più lungo di 512 byte, client_cert_error viene impostato su client_cert_dnsname_sans_exceeded_size_limit, e l'elenco separato da virgole viene impostato su una stringa vuota. autorizzazione, traffico
connection.client_cert_valid_not_before Il timestamp (formato stringa di data RFC 3339) prima del quale il certificato client non è valido, ad esempio 2022-07-01T18:05:09+00:00. autorizzazione, traffico
connection.client_cert_valid_not_after Il timestamp (nel formato stringa di data RFC 3339) dopo il quale il certificato client non è valido, ad esempio 2022-07-01T18:05:09+00:00. autorizzazione, traffico
connection.client_cert_issuer_dn La codifica DER con codifica Base64 del campo Issuer completo del certificato. Se client_cert_issuer_dn è più lungo di 512 byte, la stringa client_cert_issuer_dn_exceeded_size_limit viene aggiunta a client_cert_error, e client_cert_issuer_dn viene impostato su una stringa vuota. autorizzazione, traffico
connection.client_cert_subject_dn La codifica DER con codifica Base64 del campo completo Subject dal certificato. Se client_cert_subject_dn è più lungo di 512 byte, la stringa client_cert_subject_dn_exceeded_size_limit viene aggiunta a client_cert_error, e client_cert_subject_dn viene impostato su una stringa vuota. autorizzazione, traffico
connection.client_cert_leaf Il certificato foglia client per una connessione mTLS stabilita dove il certificato ha superato la convalida. La codifica del certificato è conforme a RFC 9440. Ciò significa che il certificato DER binario è codificato in Base64 e delimitato da due punti su entrambi i lati. Se client_cert_leaf supera i 16 KB non codificati, la stringa client_cert_validated_leaf_exceeded_size_limit viene aggiunta a client_cert_error e client_cert_leaf viene impostato su una stringa vuota. autorizzazione, traffico
connection.client_cert_chain L'elenco di certificati separato da virgole, nell'ordine TLS standard, della catena di certificati client per una connessione mTLS stabilita in cui il certificato client ha superato la convalida, escluso il certificato foglia. La codifica del certificato è conforme con RFC 9440. Se la dimensione combinata di client_cert_leaf e client_cert_chain prima della codifica Base64 supera i 16 KB, la stringa client_cert_validated_chain_exceeded_size_limit viene aggiunta a client_cert_error, e client_cert_chain viene impostato su una stringa vuota. autorizzazione, traffico

Limitazioni

  • Disponibilità degli attributi: non tutti gli attributi sono supportati per tutti i tipi di estensione. Per saperne di più, consulta la tabella in questa pagina.

  • Configurazione obbligatoria: per inviare gli attributi all'estensione, devi elencare esplicitamente gli attributi nel campo forwardAttributes della configurazione dell'estensione. Se non elenchi un attributo in questo campo, il bilanciatore del carico non inoltra l'attributo specifico all'estensione.

  • Limiti di dimensione: 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.