Extensible Service Proxy V2 (ESPv2) è un proxy basato su Envoy che consente a Cloud Endpoints di fornire funzionalità di gestione delle API. Per configurare ESPv2, puoi specificare i flag di configurazione durante il deployment del servizio ESPv2.
Impostazione dei flag di configurazione
Il metodo per impostare i flag di configurazione ESPv2 varia in base alla piattaforma di deployment, come descritto nelle sezioni seguenti.
VM di Compute Engine
I flag di configurazione ESPv2 per Compute Engine sono specificati nel comando docker run
. Ad esempio:
sudo docker run \ --detach \ DOCKER_ARGUMENTS \ gcr.io/endpoints-release/endpoints-runtime:2 \ --service=SERVICE_NAME \ --rollout_strategy=managed \ --backend=YOUR_API_CONTAINER_NAME:8080
In questo esempio, --service
, --rollout_strategy
e --backend
sono i valori ESPv2
di configurazione.
GKE e Kubernetes
Puoi specificare i flag di configurazione per GKE e Kubernetes nel args
campo del file manifest del deployment. Ad esempio:
containers: - name: esp image: gcr.io/endpoints-release/endpoints-runtime:2 args: [ "--listener_port=8081", "--backend=127.0.0.1:8080", "--service=SERVICE_NAME", "--rollout_strategy=managed" ]
In questo esempio, --listener_port
, --backend
, --service
e --rollout_strategy
sono i flag di configurazione di ESPv2.
Cloud Run per le piattaforme serverless
Per specificare l'avvio
per Cloud Run per serverless, utilizza la variabile di ambiente ESPv2_ARGS. La variabile può essere impostata nel comando gcloud run deploy
utilizzando l'opzione --set-env-vars
.
Ad esempio:
gcloud run deploy CLOUD_RUN_SERVICE_NAME \ --image="gcr.io/ESP_PROJECT_ID/endpoints-runtime-serverless:CLOUD_RUN_HOSTNAME-CONFIG_ID" \ --set-env-vars=ESPv2_ARGS=--enable_debug
In questo esempio, --enable_debug
è il flag di configurazione ESPv2.
Per ulteriori informazioni sul comando gcloud run deploy
, consulta Cloud Functions per OpenAPI,
Cloud Run per OpenAPI o
Cloud Run per gRPC.
Per impostare più argomenti nella variabile di ambiente ESPv2_ARGS, specifica un delimitatore personalizzato e utilizzalo per separare più argomenti. Non utilizzare una virgola come delimitatore. Inserisci il delimitatore personalizzato all'inizio della variabile di ambiente ESPv2_ARGS, circondato da accenti circonflessi.
L'esempio seguente utilizza ++
come delimitatore:
gcloud run deploy CLOUD_RUN_SERVICE_NAME \ --image="gcr.io/ESP_PROJECT_ID/endpoints-runtime-serverless:CLOUD_RUN_HOSTNAME-CONFIG_ID" \ --set-env-vars=ESPv2_ARGS=^++^--cors_preset=basic++--cors_allow_origin=your_host.com
Se il flag che stai impostando contiene virgole, devi impostare la variabile di ambiente ESPv2_ARGS nello script gcloud_build_image.
Ad esempio, per aggiungere il flag --cors_allow_methods=PUT,POST,GET
:
- Scarica lo script gcloud_build_image.
- Modifica
gcloud_build_image
come mostrato di seguito:cat <<EOF > Dockerfile FROM BASE_IMAGE ENV ENDPOINTS_SERVICE_PATH /etc/endpoints/service.json COPY service.json \ENDPOINTS_SERVICE_PATH ENV ESPv2_ARGS ^++^--cors_preset=basic++--cors_allow_method="GET,PUT,POST"++--cors_allow_credentials ENTRYPOINT ["/env_start_proxy.py"] EOF
- Esegui lo script
gcloud_build_image
per creare l'immagine.
Flag di configurazione di ESPv2
I flag di configurazione ESPv2 possono essere raggruppati nelle seguenti categorie:
- Configurazione non serverless
- Logging
- Tracciamento
- Controllo di integrità
- Debug
- Test locale
- Deployment non Google Cloud
- Estrazione IP client
- Supporto CORS
- Supporto TLS
- Timeout e tentativi di nuovo invio
- Transcodifica gRPC
- Modifica di richieste e risposte
- Opzioni di sicurezza
- Autenticazione JWT
Ulteriori esempi generici e testo della guida per i flag ESPv2 sono disponibili nel repository GitHub.
Configurazione non serverless
Questi flag sono necessari per eseguire ESPv2 in piattaforme non serverless, come GKE, Compute Engine e Kubernetes. Non possono essere impostati quando vengono eseguiti in Cloud Run per le piattaforme serverless.
``Bandiera | Descrizione |
---|---|
--service
|
Imposta il nome del servizio Endpoints. |
--version
|
Imposta l'ID di configurazione del servizio per il servizio Endpoints. |
--rollout_strategy
|
Specifica la strategia di implementazione della configurazione del servizio, [fixed|managed]. Il valore predefinito è fisso. |
--listener_port
|
Identifica la porta per accettare le connessioni downstream. Supporta le connessioni HTTP/1.x, HTTP/2 e gRPC. Il valore predefinito è 8080. |
--backend
|
Specifica l'indirizzo del server delle applicazioni di backend locale. Gli schemi validi sono http, https, grpc e grpcs se inclusi. Lo schema predefinito è >http. |
Logging
Utilizza questi flag per configurare ESPv2 in modo che scriva informazioni aggiuntive nel log di Stackdriver.
Bandiera | Descrizione |
---|---|
--log_request_headers
|
Registra i valori delle intestazioni delle richieste specificate, separati da virgole, senza spazi. Ad esempio, imposta questo flag come:
Se nella richiesta sono disponibili valori per le intestazioni "foo" e "bar", il log Endpoints contiene:
|
--log_response_headers
|
Registra i valori delle intestazioni di risposta specificate, separati da virgole, senza spazi. Ad esempio, imposta questo flag come:
Se i valori per "baz" e "bing" sono disponibili nella risposta, il log Endpoints contiene:
|
--log_jwt_payloads
|
Registra i valori dei campi primitivi del payload JWT specificati, separati da virgole senza spazi. Ad esempio, imposta questo flag come:
Se i valori sono disponibili nel payload JWT, il log degli endpoint contiene:
I valori nel payload JWT devono essere campi primitivi (stringa, numero intero). Gli oggetti JSON e gli array non vengono registrati. |
--access_log
|
Se specificato, il percorso del file locale in cui verranno scritte le voci del log di accesso. |
--access_log_format
|
Formato della stringa per specificare il formato del log degli accessi. Se il criterio non viene configurato, viene utilizzata la stringa di formato predefinita. Per la grammatica dettagliata del formato, consulta le informazioni di riferimento sulle stringhe di formato. |
Tracciamento
Utilizza questi flag per configurare i dati di monitoraggio ESPv2 inviati a Stackdriver. Questi flag si applicano solo quando il tracciamento è abilitato.
Bandiera | Descrizione |
---|---|
--disable_tracing
|
Disattiva il monitoraggio. Per impostazione predefinita, il monitoraggio è attivo. Se abilitato, ESPv2 campiona un numero ridotto di richieste alla tua API ogni secondo
per ottenere le tracce che invia a Stackdriver Trace. Per impostazione predefinita, 1 richiesta su 1000 è campionata.
Utilizza il flag |
--tracing_project_id
|
L'ID progetto Google per il monitoraggio di Stackdriver. Il tracciamento è un servizio a pagamento. Al progetto specificato verrà addebitato il costo del monitoraggio. Per impostazione predefinita, viene fatturato l'ID progetto del servizio ESPv2 di cui è stato eseguito il deployment.
L'ID progetto viene determinato chiamando il server di metadati delle istanze Google Cloud all'avvio.
Se ESPv2 viene disegnato al di fuori di Google Cloud (utilizzando il |
--tracing_sample_rate
|
Imposta la frequenza di campionamento della traccia su un valore compreso tra 0,0 e 1,0. Questo valore specifica la frazione di richieste campionate. Il valore predefinito è 0,001, che equivale a 1 richieste su 1000. |
--tracing_incoming_context
|
Questo flag specifica quali intestazioni HTTP controllare per il contesto della traccia, con i valori del flag separati da virgole senza spazi. Tieni presente che l'ordine è importante: il contesto della traccia verrà dedotto dalla prima intestazione che corrisponde. I valori possibili includono Se ometti, le intestazioni Per ulteriori dettagli, consulta Tracciamento dell'API. |
--tracing_outgoing_context
|
Imposta l'intestazione del contesto della traccia nella richiesta inviata al servizio di backend. Questo flag specifica quale intestazione HTTP impostare, con valori di flag separati da virgole, senza spazi. I valori possibili includono Se omesso, verranno inviate le intestazioni Per ulteriori dettagli, consulta Monitorare l'API. |
Controllo di integrità
Utilizza questi flag per configurare i controlli di integrità per ESPv2. La prima segnalazione può essere utilizzata per impostare un gestore della salute che risponda alle chiamate del controllo di integrità. Gli altri flag possono essere usati per abilitare il controllo di integrità per il backend gRPC.
/tbody>Bandiera | Descrizione |
---|---|
-z, --healthz
|
Definisci un endpoint del controllo di integrità. Ad esempio, -z healthz
rende ESPv2 restituisce il codice 200 per il percorso /healthz .
|
--health_check_grpc_backend
|
Abilita ESPv2 per controllare periodicamente il servizio gRPC Health per un backend specificato dal flag --backend .
Il backend deve utilizzare il protocollo gRPC e implementare il protocollo per il controllo di integrità gRPC.
L'endpoint del controllo di integrità abilitato dal flag --healthz rifletterà il risultato del controllo di integrità del backend.
|
--health_check_grpc_backend_service
|
Specifica il nome del servizio quando chiami il protocollo per il controllo dell'integrità gRPC del backend. Il valore di questo flag viene applicato solo se
viene utilizzato il flag --health_check_grpc_backend . È facoltativo. Se non viene impostato, il valore predefinito è vuoto.
Se il nome del servizio è vuoto, interroga il server gRPC sullo stato di integrità complessivo.
|
--health_check_grpc_backend_interval
|
Specifica l'intervallo di controllo e il timeout della richiesta quando chiami il servizio di integrità gRPC di backend.
Il valore di questo flag viene applicato solo quando viene utilizzato il flag --health_check_grpc_backend . Il valore predefinito è 1 secondo.
Il formato accettato è una sequenza di numeri decimali, ciascuno con una frazione facoltativa e un suffisso di unità, ad esempio "5s", "100ms" o "2m".
Le unità di tempo valide sono "m" per i minuti, "s" per i secondi e "ms" per i millisecondi.
|
Debug
Utilizza questi flag per configurare il debug per ESPv2. Questi flag possono essere utilizzati per impostare una porta di amministrazione di Envoy al fine di recuperare configurazione e statistiche o per eseguire Envoy in modalità di debug per scrivere informazioni sul livello di debug nel log.
Bandiera | Descrizione |
---|---|
--status_port , --admin_port
|
Attiva l'amministrazione di Envoy ESPv2 su questa porta. Per ulteriori dettagli, consulta la documentazione di riferimento dell'interfaccia di amministrazione di Envoy. La porta di amministrazione è disabilitata per impostazione predefinita. |
--enable_debug
|
Attiva i log a livello di debug e aggiungi intestazioni di debug. |
Deployment non Google Cloud
Se ESPv2 viene implementato in un ambiente non Google Cloud, potrebbero essere necessari i seguenti flag.
Bandiera | Descrizione |
---|---|
--service_account_key
|
Specifica il file JSON della chiave dell'account di servizio per accedere ai servizi Google. Se l'opzione viene omessa, il proxy contatta il server di metadati di Google Cloud per recuperare un token di accesso. |
--dns_resolver_addresses
|
Gli indirizzi dei resolver DNS. Ogni indirizzo deve essere nel formato
IP_ADDR o IP_ADDR:PORT e separato da un punto e virgola (;). Per IP_ADDR, verrà utilizzata la porta DNS predefinita 52. Ad esempio:
--dns_resolver_addresses=127.0.0.1;127.0.0.2;127.0.0.3:8000 )
Se non impostato, ESPv2 utilizzerà il resolver predefinito configurato in /etc/resolv.conf
|
--backend_dns_lookup_family
|
Definisci la famiglia di ricerca DNS per tutti i backend. Le opzioni sono auto, v4only, v6only, v4preferred e all. Il valore predefinito è v4preferred. Tieni presente che auto è un valore precedente. L'impostazione del flag su auto comporterà un comportamento equivalente a v6preferred. |
--non_gcp
|
Per impostazione predefinita, il proxy tenta di connettersi al server metadati Google Cloud. per ottenere la posizione della VM nelle prime richieste. Per saltare questo passaggio, imposta il flag su true. |
Test locale
Puoi eseguire il deployment di ESPv2 localmente sulla tua workstation per i test. Per ulteriori dettagli, consulta Eseguire ESP in locale o su un'altra piattaforma.
Utilizza questi flag insieme ai flag di deployment non Google Cloud per semplificare il deployment e i test locali nell'integrazione continua.
Bandiera | Descrizione |
---|---|
--service_json_path
|
Specifica un percorso per consentire a ESPv2 di caricare la configurazione del servizio endpoint. Con questo flag, ESPv2 utilizzerà una strategia di implementazione "fissata" e i seguenti flag verranno ignorati:
Questo flag impedisce a ESPv2 di utilizzare la quota dell'API Service Management. |
--enable_backend_address_override
|
Gli indirizzi di backend possono essere specificati utilizzando il flag
La configurazione del servizio per operazione
Attiva questo flag se vuoi che il flag
Nota: verrà sostituito solo l'indirizzo.
Tutti gli altri componenti di |
Estrazione IP client
Utilizza questi flag per configurare l'estrazione dell'IP del client per ESPv2.
Bandiera | Descrizione |
---|---|
--envoy_use_remote_address
|
Configurazione di Envoy HttpConnectionManager, fare riferimento a Envoy riferimento per informazioni dettagliate. L'impostazione predefinita è off. |
--envoy_xff_num_trusted_hops
|
Per la configurazione di HttpConnectionManager di Envoy, consulta la documentazione di riferimento di Envoy per informazioni dettagliate. Il valore predefinito è 2. |
Supporto CORS
Consulta la sezione Supportare CORS per una descrizione delle opzioni di supporto CORS disponibili. Questa sezione descrive l'utilizzo dei flag di avvio di ESPv2 per supportare CORS.
Per abilitare il supporto CORS in ESPv2, includi l'opzione --cors_preset
e impostala in uno dei seguenti flag:
--cors_preset=basic
--cors_preset=cors_with_regex
Se includi --cors_preset=basic
o --cors_preset=cors_with_regex
, ESPv2:
- Si presume che tutti i percorsi delle località abbiano lo stesso criterio CORS.
- Risponde sia alle richieste semplici che
preflight
HTTP OPTIONS
richieste. - Memorizza nella cache il risultato della richiesta
OPTIONS
preflight per un massimo di 20 giorni (1728000 secondi). Imposta le intestazioni delle risposte sui seguenti valori:
Access-Control-Allow-Origin: * Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS Access-Control-Allow-Headers: DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization Access-Control-Expose-Headers: Content-Length,Content-Range Access-Control-Max-Age: 1728000
Per sostituire il valore predefinito di
Access-Control-Allow-Origin
,
specifica una delle seguenti opzioni:
Opzione | Descrizione |
---|---|
--cors_allow_origin |
Usa con --cors_preset=basic per impostare
Access-Control-Allow-Origin a un'origine specifica.Esempio:
--cors_preset=basic
|
--cors_allow_origin_regex |
Utilizza con --cors_preset=cors_with_regex . Ti consente di utilizzare una
un'espressione regolare per impostare Access-Control-Allow-Origin .Esempio:
--cors_preset=cors_with_regex
L'espressione regolare nell'esempio precedente consente un'origine con
http o https e qualsiasi sottodominio di
Quando imposti questa opzione in un file di configurazione di Kubernetes, devi aggiungere Una barra rovesciata aggiuntiva per l'interpretazione letterale a entrambe le istanze di \. nella stringa, ad esempio:
"--cors_preset","cors_with_regex",
Quando imposti questa opzione nello script gcloud_build_image per Cloud Run,
evita di utilizzare caratteri di escape e barre rovesciate, potrebbero non essere
correttamente dallo script bash al proxy all'avvio. Utilizza le classi di caratteri anziché le meta sequenze. Ad esempio:
|
Dopo aver impostato --cors_preset=basic
o --cors_preset=cors_with_regex
per l'attivazione
CORS, puoi eseguire l'override dei valori predefiniti delle altre intestazioni delle risposte
specificando una o più delle seguenti opzioni:
Opzione | Descrizione |
---|---|
--cors_allow_methods |
Set
Access-Control-Allow-Methods
ai metodi HTTP specificati. Specifica i metodi HTTP come stringa con ogni
Metodo HTTP separato da una virgola.Esempio:
--cors_preset=basic
|
--cors_allow_headers |
Imposta
Access-Control-Allow-Headers
sulle intestazioni HTTP specificate. Specifica le intestazioni HTTP come stringa con ogni intestazione HTTP separata da una virgola.Esempio:
--cors_preset=basic
|
--cors_allow_credentials |
Include:
Access-Control-Allow-Credentials
con il valore true nelle risposte. Per impostazione predefinita, l'intestazione Access-Control-Allow-Credentials non è inclusa nelle risposte.Esempio:
--cors_preset=basic
|
--cors_expose_headers |
Set
Access-Control-Expose-Headers
alle intestazioni specificate. Specifica quali intestazioni possono essere esposte nell'ambito della risposta come stringa con ogni intestazione separata da una virgola.Esempio:
--cors_preset=basic
|
--cors_max_age |
Set
Access-Control-Max-Age
in base alla durata specificata. Il formato accettabile è una sequenza di numeri
numeri, ciascuno con un valore frazionario facoltativo e un suffisso dell'unità, come
"300 m", "1,5 h" o "2h45m". Le unità di tempo valide sono "m" per i minuti, "h" della
nell'orario lavorativo locale del TAM. Il valore predefinito è "480 h" se non è impostato.Esempio:
--cors_preset=basic
|
Supporto TLS
Utilizza questi flag per configurare ESPv2 in modo che utilizzi le connessioni TLS.
Bandiera | Descrizione |
---|---|
--ssl_server_cert_path
|
Percorso certificato server del proxy. Se configurato, ESPv2 accetta solo connessioni sicure HTTP/1.x e HTTP/2 sulla porta listener_port. Richiede i file del certificato e della chiave "server.crt" e "server.key" in questo percorso. |
--ssl_server_cipher_suites
|
Suite di crittografia da utilizzare per le connessioni a valle, specificate come elenco separato da virgole. Consulta la sezione Configurazione della suite di crittografia. |
--ssl_backend_client_cert_path
|
Percorso certificato client del proxy. Se configurato, ESPv2 abilita TLS reciproca per i backend HTTPS. Sono necessari il certificato e file della chiave "client.crt" e "client.key" in questo percorso. |
--ssl_backend_client_root_certs_file
|
Il percorso del file dei certificati radice utilizzati da ESPv2 per verificare il certificato del server di backend. Se non specificato, ESPv2 utilizza "/etc/ssl/certs/ca-certificates.crt" per impostazione predefinita. |
--ssl_backend_client_cipher_suites
|
Suite di crittografia da utilizzare per i backend HTTPS, specificate come elenco separato da virgole. Consulta Configurazione della suite di crittografia. |
--ssl_minimum_protocol
|
Versione minima del protocollo TLS per la connessione lato client. Fai riferimento a questa |
--ssl_maximum_protocol
|
Versione massima del protocollo TLS per la connessione lato client. Fai riferimento a questo |
--enable_strict_transport_security
|
Attiva HSTS (HTTP Strict Transport Security). "Rigorosa-Sicurezza per i trasporti" intestazione della risposta con il valore "max-age=31536000; includeSubdomains;" viene aggiunto a tutte le risposte. |
--generate_self_signed_cert
|
Genera un certificato autofirmato e una chiave all'inizio, quindi archiviali in "/tmp/ssl/endpoints/server.crt" e "/tmp/ssl/endpoints/server.key". Ciò è utile quando è necessario solo un certificato di autofirma casuale per la pubblicazione Richieste HTTPS. Il certificato generato avrà il nome comune "localhost" e sarà valido per 10 anni. |
Timeout e tentativi di ripetizione
Utilizza questi flag per configurare il timeout delle chiamate HTTP remote e i nuovi tentativi per ESPv2.
Bandiera | Descrizione |
---|---|
--http_request_timeout_s
|
Imposta il timeout in secondi per le richieste effettuate a servizi esterni, ad eccezione di Backend e Google Service Control. Sono inclusi Google ServiceManagement, server metadati e server IAM di Google. Deve essere > 0, mentre il valore predefinito è 30 secondi se non è impostato. |
--service_control_network_fail_open
|
In caso di errori di rete durante la connessione al controllo del servizio Google, le richieste verranno consentite se questo flag è attivo. L'impostazione predefinita è on. |
--service_control_check_timeout_ms
|
Imposta il timeout in millisecondi per la richiesta di controllo del servizio. Deve essere > 0 e il valore predefinito è 1000 se non è impostato. |
--service_control_report_timeout_ms
|
Imposta il timeout in millisecondi per la richiesta di report per il controllo del servizio. Deve essere > 0 e il valore predefinito è 1000 se non è impostato. |
--service_control_quota_timeout_ms
|
Imposta il timeout in millisecondi per la richiesta di quota per il controllo del servizio. Deve essere > 0 e il valore predefinito è 1000 se non è impostato. |
--service_control_check_retries
|
Imposta i tempi di ripetizione per la richiesta di controllo dei Controlli di servizio. Deve essere >= 0 e il valore predefinito è 3 se non è impostato |
--service_control_report_retries
|
Imposta il numero di nuovi tentativi per la richiesta di report del controllo del servizio. Deve essere >= 0 e il valore predefinito è 5 se non viene impostato |
--service_control_quota_retries
|
Imposta i tempi di ripetizione per la richiesta di quota di Service Control. Deve essere >= 0 e il valore predefinito è 1 se non è impostato |
--backend_retry_ons
|
Le condizioni in cui ESPv2 esegue nuovi tentativi sui backend. È possibile specificare una o più condizioni Per conoscere le condizioni accettate, visita i seguenti link: |
--backend_retry_num
|
Il numero consentito di nuovi tentativi. Deve essere >= 0 e il valore predefinito è 1. |
Transcodifica gRPC
Utilizza questi flag per configurare ESPv2 per la transcodifica di HTTP/JSON in gRPC.
Bandiera | Descrizione |
---|---|
--transcoding_always_print_primitive_fields
|
Specifica se stampare i campi primitivi per la transcodifica grpc-json. Per impostazione predefinita, i campi primitivi con verranno omessi nell'output JSON. Ad esempio, un set di campi int32 a 0 sarà omesso. Se imposti questo flag su true, il comportamento predefinito verrà ignorato e i campi primitivi verranno stampati indipendentemente dai relativi valori. Il valore predefinito è false. |
--transcoding_always_print_enums_as_ints
|
Specifica se stampare gli enum come interi per la transcodifica di grpc-json. Per impostazione predefinita, vengono visualizzati come stringhe. Il valore predefinito è false. |
--transcoding_stream_newline_delimited
|
Se true, utilizza un nuovo delimitatore di riga per separare il flusso di risposte messaggi. Se false, tutti i messaggi di streaming della risposta vengono transcodificati in un array JSON. |
--transcoding_case_insensitive_enum_parsing
|
Normalmente, i valori dell'enum proto devono essere in maiuscolo se utilizzati in JSON. Imposta questo flag su true se la richiesta JSON utilizza valori enum non in maiuscolo. |
--transcoding_preserve_proto_field_names
|
Specifica se mantenere i nomi dei campi del protocollo per la transcodifica grpc-json. Per impostazione predefinita, protobuf genera i nomi dei campi JSON utilizzando il parametro json_name o una custodia a cammello inferiore, in quest'ordine. L'impostazione di questo flag consente di mantenere i nomi dei campi originali. Il valore predefinito è false. |
--transcoding_ignore_query_parameters
|
Un elenco di parametri di ricerca separati da virgole da ignorare per mappatura del metodo di transcodifica nella transcodifica grpc-json. Per impostazione predefinita, il filtro del transcoder non transcodifica una richiesta con parametri di query sconosciuti/non validi. |
--transcoding_ignore_unknown_query_parameters
|
Specifica se ignorare i parametri di query che non possono essere mappati a un
campo protobuf corrispondente nella transcodifica grpc-json. Da utilizzare se
controllare i parametri di ricerca e non conoscerli in anticipo.
Altrimenti, usa |
--transcoding_query_parameters_disable_unescape_plus
|
Per impostazione predefinita, i segni più |
Modifica di richieste e risposte
Utilizza questi flag per configurare ESPv2 in modo da modificare parzialmente richieste e risposte.
Bandiera | Descrizione |
---|---|
--add_request_header
|
Aggiungi un'intestazione HTTP alla richiesta prima di inviarla al backend a monte. Se l'intestazione è già presente nella richiesta, il suo valore verrà sostituito con quello nuovo. Supporta le variabili personalizzate Envoy.
Questo argomento può essere ripetuto più volte per specificare più intestazioni.
Ad esempio: |
--append_request_header
|
Aggiungere un'intestazione HTTP alla richiesta prima di inviarla al backend a monte. Se l'intestazione è già presente nella richiesta, il nuovo valore verrà aggiunto. Supporta le variabili personalizzate Envoy.
Questo argomento può essere ripetuto più volte per specificare più intestazioni.
Ad esempio: |
--add_response_header
|
Aggiungi un'intestazione HTTP alla risposta prima di inviarla al client a valle. Se l'intestazione è già presente nella risposta, verrà sostituita con quella nuova. Supporta le variabili personalizzate Envoy.
Questo argomento può essere ripetuto più volte per specificare più intestazioni.
Ad esempio: |
--append_response_header
|
Aggiungi un'intestazione HTTP alla risposta prima di inviarla al client a valle. Se l'intestazione è già presente nella risposta, verrà aggiunta la nuova intestazione. Supporta le variabili personalizzate Envoy.
Questo argomento può essere ripetuto più volte per specificare più intestazioni.
Ad esempio: |
Opzioni di sicurezza
Utilizza questi flag per perfezionare ulteriormente le richieste consentite da ESPv2.
Bandiera | Descrizione |
---|---|
--underscores_in_headers
|
Consenti il passaggio dei nomi di intestazione che contengono trattini bassi. Il valore predefinito è false.
Il trattino basso è consentito nei nomi delle intestazioni da:
RFC-7230.
Tuttavia, questo comportamento viene implementato come misura di sicurezza perché
alcuni sistemi considerano |
--envoy_connection_buffer_limit_bytes
|
Configura la quantità massima di dati memorizzati nel buffer per ogni corpo della richiesta/risposta, in byte. Se non è impostato, il valore predefinito viene deciso da Envoy. Consulta la configurazione dell'ascoltatore di Envoy. |
--disable_normalize_path
|
Disattiva la normalizzazione dell'intestazione HTTP
La seguente tabella fornisce esempi della richiesta
----------------------------------------------------------------- | Request Path | Without Normalization | With Normalization | ----------------------------------------------------------------- | /hello/../world | Rejected | /world | | /%4A | /%4A | /J | | /%4a | /%4a | /J | ----------------------------------------------------------------- Per impostazione predefinita, ESPv2 normalizza i percorsi. Disattiva la funzionalità solo se il tuo traffico è interessato dal comportamento.
Nota: secondo lo standard RFC 3986, questa opzione non consente di eliminare la sequenza di escape con la codifica percentuale
barra, Consulta il flag Nota: la normalizzazione delle maiuscole dello standard RFC 3986 non è supportata, anche se questa opzione è attivata. Per maggiori dettagli, vedi Informazioni sui modelli di percorso. |
--disable_merge_slashes_in_path
|
Disattiva l'unione di barre adiacenti nell'intestazione HTTP
La seguente tabella fornisce esempi della richiesta
----------------------------------------------------------------- | Request Path | Without Normalization | With Normalization | ----------------------------------------------------------------- | /hello//world | Rejected | /hello/world | | /hello/// | Rejected | /hello | ----------------------------------------------------------------- Per impostazione predefinita, ESPv2 unisce le barre. Disattiva la funzionalità solo se il tuo traffico è interessato dal comportamento. Per maggiori dettagli, vedi Informazioni sui modelli di percorso. |
--disallow_escaped_slashes_in_path
|
Non sono consentite richieste con caratteri barra codificati a percentuale con interpretazione letterale:
Quando l'opzione è attivata, il comportamento dipende dal protocollo utilizzato:
Questa opzione non è conforme a RFC 3986, quindi è disattivata per impostazione predefinita. Se il tuo backend non è conforme allo standard RFC 3986 ed esegue la fuga delle barre, devi attivare questa opzione in ESPv2. In questo modo si eviteranno attacchi di confusione nei percorsi che si traducono in problemi di sicurezza la loro applicazione. Per ulteriori dettagli, consulta la sezione Informazioni sui modelli di percorso. |
Autenticazione JWT
Utilizza questi flag per configurare ESPv2 in modo da recuperare Jwk remoti con nuovi tentativi.
Bandiera | Descrizione |
---|---|
--jwks_fetch_num_retries
|
Specifica il numero di tentativi nel criterio per i nuovi tentativi di recupero JWKS remoto. Il valore predefinito è 0, non riprovare. |
--jwks_fetch_retry_back_off_base_interval_ms
|
Specifica l'intervallo esponenziale dei tentativi di recupero JWKS fuori base, in millisecondi. Se non è impostato, il valore predefinito è 200 ms. |
--jwks_fetch_retry_back_off_max_interval_ms
|
Specifica l'intervallo massimo in millisecondi per il quale l'intervallo di ripetizione esponenziale dei nuovi tentativi di recupero JWKS viene disattivato. Se non impostato, il valore predefinito è 32 secondi. |
--jwks_cache_duration_in_s
|
Specifica la durata della cache della chiave pubblica JWT in secondi. Se non viene impostato, il valore predefinito è 5 minuti. |
--jwks_async_fetch_fast_listener
|
Si applica solo quando il flag |
--jwt_cache_size
|
Specifica il numero di token JWT univoci come dimensione massima della cache JWT. La cache memorizza solo i token verificati. Se 0, la cache JWT è disattivata. Questo flag limita l'utilizzo della memoria per la cache JWT. La memoria utilizzata dalla cache è approssimativamente (dimensioni del token + 64 byte) per token. Se non specificato, il valore predefinito è 100000. |
--disable_jwt_audience_service_name_check
|
Normalmente il campo JWT |
Passaggi successivi
Scopri di più su: