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.
- Arricchisci le intestazioni delle richieste con informazioni sul client.
- Implementa policy di sicurezza personalizzate in base alla posizione del client o ai parametri TLS.
- Genera log personalizzati dettagliati.
Puoi specificare gli attributi con il campo forwardAttributes nella configurazione YAML per le estensioni plug-in e callout. Ad esempio, per le estensioni
del traffico, vedi Configurare un'estensione
del traffico.
La specifica degli attributi con forwardAttributes è supportata per le estensioni di autorizzazione,
perimetrali, di percorso e del traffico. Puoi implementare forwardAttributes utilizzando plug-in Wasm o callout (con il protocollo ext_proc) nei 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 della condivisione delle risorse tra origini (CORS). | traffico |
request.method |
Il metodo di richiesta HTTP, ad esempio GET o
POST. |
autorizzazione, perimetro, percorso, traffico |
request.mcp_method |
Il metodo di richiesta HTTP, ad esempio GET o
POST. |
autorizzazione |
request.host |
Un'alternativa comoda a request.headers['host']. |
autorizzazione, perimetro, percorso, traffico |
request.path |
Il percorso URL HTTP richiesto. | autorizzazione, perimetro, percorso, 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, perimetro, percorso, traffico |
request.scheme |
Lo schema URL HTTP, ad esempio HTTP o
HTTPS. I valori di questo attributo sono in minuscolo. |
autorizzazione, perimetro, percorso, traffico |
request.backend_service_name |
Il servizio di backend a cui viene inoltrata la richiesta. | autorizzazione, traffico |
request.backend_service_project_number |
Quando utilizzi 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 automatizzati) 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) |
request.header_order |
L'ordine delle intestazioni HTTP nella richiesta client come
stringa di nomi di intestazioni separati da virgole, ad esempio
host,accept,cookie. Questo attributo supporta le seguenti intestazioni:
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 e
x-forwarded-for. |
traffico (solo per i bilanciatori del carico delle applicazioni esterni globali) |
response.cdn_cache_id |
Il codice e l'ID della località dell'istanza della cache utilizzata per
gestire la richiesta. Si tratta dello stesso valore inserito nel campo
jsonPayload.cacheId dei log delle richieste Cloud CDN.
|
traffico (solo per i bilanciatori del carico delle applicazioni esterni globali) |
response.cdn_cache_status |
Lo stato attuale dell'istanza 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, traffic |
source.port |
La porta di origine del client. | edge, route, traffic |
source.client_region |
Il paese o la regione associati all'indirizzo IP del client.
Il valore è un codice regione CLDR Unicode, 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 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 e i seguenti caratteri US-ASCII: !#$%&'*+-.^_`|~. |
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); altrimenti, è false. |
traffico |
connection.client_rtt_msec |
Il tempo di trasmissione di andata e ritorno stimato tra il bilanciatore del carico e il client HTTP(S), in millisecondi. Si tratta del parametro tempo di round trip (SRTT) livellato (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 dei seguenti valori: 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. Corrisponde all'ultimo indirizzo IP nell'intestazione
X-Forwarded-For. |
traffico |
connection.server_port |
Il numero di porta di destinazione a cui si connette il client. | traffico |
connection.sni |
Indicazione del nome del server (come definita in RFC 6066), se fornita dal client durante l'handshake TLS o QUIC. Il nome host viene convertito in lettere minuscole e il punto finale viene rimosso. | autorizzazione, perimetro, 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 |
Hash SHA256 con codifica esadecimale del certificato peer nella connessione TLS downstream, se presente. | autorizzazione, perimetro, traffico |
connection.tls_cipher_suite |
La suite di cifrari negoziata durante l'handshake TLS. Il valore
è composto 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 TLS/SSL JA3 se il client si connette utilizzando
HTTPS, HTTP/2 o HTTP/3. |
traffico |
connection.tls_ja4_fingerprint |
L'impronta TLS/SSL JA4 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; altrimenti, false. |
autorizzazione, traffico |
connection.client_cert_chain_verified |
Il valore è true se la catena di certificati client è
verificata in base a un TrustStore configurato; altrimenti,
è 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 è impostato
su client_cert_serial_number_exceeded_size_limit
e il numero di serie è impostato su una stringa vuota. |
autorizzazione, traffico |
connection.client_cert_spiffe_id |
L'ID SPIFFE dal campo Subject Alternative Name (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 è 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
certificato client. L'ID SPIFFE non è incluso nel campo
client_cert_uri_sans. Se
client_cert_uri_sans è più lungo di 512 byte, client_cert_error è impostato su
client_cert_uri_sans_exceeded_size_limit e l'elenco separato da virgole è 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 dal
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 (nel formato di stringa per la 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 di stringa per la 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 Subject completo
del 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
in cui il certificato ha superato la convalida. La codifica dei certificati è
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 separato da virgole dei certificati, 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 dei certificati è conforme
alla RFC 9440. Se le dimensioni combinate di
client_cert_leaf e client_cert_chain
prima della codifica Base64 superano i 16 KB, la stringa
client_cert_validated_chain_exceeded_size_limit viene
aggiunta a client_cert_error e
client_cert_chain viene impostata su una stringa vuota. |
autorizzazione, traffico |
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 gli attributi all'estensione, devi elencare esplicitamente gli attributi nel campo
forwardAttributesdella configurazione dell'estensione. Se non elenchi un attributo in questo campo, il bilanciamento del carico non inoltra l'attributo specifico alla tua 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.