Service Extensions consente ai bilanciatori del carico delle applicazioni di inviare callout ai servizi di backend per inserire l'elaborazione personalizzata nel percorso di elaborazione. Le estensioni di autorizzazione vengono eseguite nel percorso di elaborazione delle richieste quando il bilanciatore del carico riceve le intestazioni delle richieste e dopo che la mappa URL sceglie il servizio di backend. Questa pagina descrive come configurare le estensioni di autorizzazione per utilizzare un motore di autorizzazione personalizzato definito in un'policy di autorizzazione.
Per una panoramica delle estensioni del bilanciatore del carico delle applicazioni, consulta la panoramica delle estensioni Cloud Load Balancing.
Introduzione
Cloud Load Balancing consente di configurare policy di autorizzazione che applicano controllo dell'accessoo al traffico in entrata nei bilanciatori del carico. A volte, le decisioni di autorizzazione complesse non possono essere espresse facilmente utilizzando un criterio di autorizzazione.
Puoi configurare criteri di autorizzazione con estensioni di autorizzazione per delegare le decisioni di autorizzazione a motori di autorizzazione personalizzati. Nel percorso dei dati, le estensioni di autorizzazione vengono eseguite dopo le estensioni di percorso, ma prima delle estensioni del traffico. Per saperne di più sulle policy di autorizzazione, consulta la Panoramica delle policy di autorizzazione.
Per ogni richiesta di autorizzazione, il proxy inoltra le intestazioni della richiesta all'estensione. A seconda della risposta del fornitore, il proxy inoltra o rifiuta la richiesta.
Nella Anteprima, per i bilanciatori del carico delle applicazioni esterni regionali e i bilanciatori del carico delle applicazioni interni regionali, puoi configurare le estensioni di autorizzazione separatamente per le policy di autorizzazione delle richieste e le policy di autorizzazione dei contenuti. Le estensioni basate su policy di autorizzazione delle richieste sono configurate per essere eseguite prima di quelle basate su policy di autorizzazione dei contenuti.
Per informazioni sui limiti relativi alle estensioni del bilanciatore del carico delle applicazioni, consulta la pagina Quote e limiti.
Configurare un'estensione di autorizzazione di base
L'esempio seguente mostra come configurare un'estensione di autorizzazione, my-authz-ext, con una policy di autorizzazione per delegare le decisioni di autorizzazione per un bilanciatore del carico delle applicazioni esterno globale.
gcloud
Crea le risorse richieste come descritto in Configura un servizio di backend callout.
Per questo esercizio, crea un bilanciatore del carico delle applicazioni esterno globale. Assegna un nome al servizio
authz-servicee alla regola di forwardingfr1.Configura l'estensione di autorizzazione.
Definisci l'estensione in un file YAML che la associa al servizio di backend
authz-service. Utilizza i valori di esempio forniti.cat >authz-extension.yaml <<EOF name: my-authz-ext authority: ext11.com loadBalancingScheme: EXTERNAL_MANAGED service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/authz-service forwardHeaders: - Authorization failOpen: false timeout: "0.1s" forwardAttributes: - request.mcp_param - connection.client_cert_leaf EOFSostituisci
PROJECT_IDcon l'ID progetto.Per ulteriori informazioni sui campi nel file YAML, consulta ExtensionChain nella documentazione dell'API.
Il campo
forwardAttributesti consente di specificare gli attributi di richiesta, connessione e posizione da inoltrare al tuo servizio di autorizzazione. Puoi configurare un massimo di 16 attributi per ogni estensione. Per ulteriori informazioni sugli attributi supportati, vedi Attributi supportati.Importa l'estensione di autorizzazione. Utilizza il comando
gcloud service-extensions authz-extensions importcon i seguenti valori di esempio.gcloud service-extensions authz-extensions import my-authz-ext \ --source=authz-extension.yaml \ --location=global
Configura una policy di autorizzazione con l'estensione.
Definisci una policy di autorizzazione che associ l'estensione
my-authz-extalla regola di forwardingfr1. Utilizza i valori di esempio forniti. L'azioneCUSTOMindica che viene utilizzata un'estensione.cat >authz-policy.yaml <<EOF name: my-authz-policy target: loadBalancingScheme: EXTERNAL_MANAGED resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/forwardingRules/fr1" action: CUSTOM customProvider: authzExtension: resources: - "projects/PROJECT_ID/locations/global/authzExtensions/my-authz-ext" EOFImporta la policy di autorizzazione nel progetto. Utilizza il comando
gcloud network-security authz-policies importcon i seguenti valori di esempio.gcloud network-security authz-policies import my-authz-policy \ --source=authz-policy.yaml \ --location=global
Configurare le estensioni di autorizzazione in base ai profili
Puoi configurare le estensioni di autorizzazione separatamente per le policy di autorizzazione delle richieste e dei contenuti.
Per una policy di autorizzazione delle richieste
L'esempio seguente mostra come configurare un'estensione di autorizzazione che
applica una policy di autorizzazione delle richieste a una regola di forwarding in us-west1. Il criterio richiede che il traffico superi l'autenticazione TLS reciproca (mTLS) da un principal specifico prima di poter raggiungere la destinazione, example.com/mcp.
gcloud
Configura un servizio di backend callout denominato
lb-request-authz-serviceinus-west1con una regola di forwarding denominatafr2.Per il servizio, configura un bilanciatore del carico delle applicazioni esterno regionale con backend di gruppi di istanze VM.
Configura l'estensione di autorizzazione.
Definisci l'estensione in un file YAML che la associa al servizio di backend,
lb-request-authz-service. Utilizza i valori di esempio forniti.cat >lb-request-authz-extension.yaml <<EOF name: my-lb-request-authz-ext authority: ext11.com loadBalancingScheme: INTERNAL_MANAGED service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/lb-authz-request-service forwardHeaders: - Authorization failOpen: false timeout: "0.1s" wireFormat: EXT_AUTHZ_GRPC EOFSostituisci
PROJECT_IDcon l'ID progetto.L'estensione deve trovarsi nella stessa regione del servizio di backend.
Per impostazione predefinita, tutti i callout di Service Extensions utilizzano il protocollo Envoy External Processing o
ext_proc. Nel caso dei callout di autorizzazione, il protocollo di autorizzazione esterna oext_authzè supportato anche in Anteprima. Quando l'opzionewireFormatè impostata suEXT_AUTHZ_GRPC, il callout utilizza il protocolloext_authz. Se l'opzione non è specificata, il callout utilizza il protocolloext_proc.Per i criteri di autorizzazione delle richieste, il valore
wireFormatpuò essereEXT_AUTHZ_GRPCin modo che il callout utilizzi il protocolloext_authzanche se è supportato anche il protocolloext_proc.Per impostazione predefinita,
failOpenè impostato sufalse. Se l'estensione scade o non funziona, l'elaborazione della richiesta si interrompe. Questa opzione predefinita è preferibile quando la priorità è la sicurezza o l'integrità rispetto alla disponibilità.Importa l'estensione di autorizzazione. Utilizza il comando
gcloud beta service-extensions authz-extensions importcon i seguenti valori di esempio.gcloud beta service-extensions authz-extensions import my-lb-request-authz-ext \ --source=lb-request-authz-extension.yaml \ --location=us-west1
Nello stesso progetto, configura una policy di autorizzazione con l'estensione.
Per qualsiasi richiesta a
example.com/mcp, la policy richiede l'autenticazione TLS reciproca da un principal specifico e delega ulteriormente la decisione di autorizzazione all'estensione di autorizzazione,my-lb-authz-request-ext.Definisci una policy di autorizzazione che associ l'estensione
my-lb-request-authz-extalla regola di forwardingfr2. Utilizza i valori di esempio forniti.cat >lb-request-authz-policy.yaml <<EOF name: my-lb-request-authz-policy target: resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules/fr2" policyProfile: REQUEST_AUTHZ httpRules: - to: operations: - hosts: - exact: "example.com" - paths: - prefix: "/mcp" from: sources: - principals: - principal_selector: CLIENT_CERT_DNS_NAME_SANS principal: exact: "spiffe://p.global.123.workload.id.goog/ns/ns1/sa/hellomcp" action: CUSTOM customProvider: authzExtension: resources: - "projects/PROJECT_ID/locations/us-west1/authzExtensions/my-lb-request-authz-ext" EOFPer le policy di autorizzazione delle richieste, il valore di
policyProfiledeve essereREQUEST_AUTHZ. Questo valore indica che il provider di policy personalizzate agisce sulle richieste per consentire o negare il traffico.L'azione
CUSTOMindica che un'estensione è associata al proxy.Per ulteriori informazioni su una risorsa policy di autorizzazione, consulta la documentazione di riferimento di
authzPolicy.Importa la policy di autorizzazione nel progetto. Utilizza il comando
gcloud beta network-security authz-policies importcon i seguenti valori di esempio.gcloud beta network-security authz-policies import my-lb-request-authz-policy \ --source=lb-request-authz-policy.yaml \ --location=us-west1
Per una policy di autorizzazione dei contenuti
Il seguente esempio mostra come configurare un'estensione di autorizzazione che applica una policy di autorizzazione dei contenuti a una regola di forwarding in us-west1. Le norme richiedono a un servizio di sanificazione dei contenuti di eseguire un'ispezione approfondita dei payload dell'applicazione per consentire o negare le richieste o modificarle, nonché le risposte, in base alle esigenze.
gcloud
Configura un servizio di backend callout denominato
lb-content-authz-serviceinus-west1con una regola di forwarding denominatafr3.Per il servizio, configura un bilanciatore del carico delle applicazioni esterno regionale con backend di gruppi di istanze VM.
Configura il server delle estensioni con il protocollo
ext_procnellaFULL_DUPLEX_STREAMEDmodalità di elaborazione del corpo e supportando tutti gli eventi.Configura l'estensione di autorizzazione.
Definisci l'estensione in un file YAML che la associa al servizio di backend,
lb-content-authz-service. Utilizza i valori di esempio forniti.cat >lb-content-authz-extension.yaml <<EOF name: my-lb-content-authz-ext authority: ext11.com loadBalancingScheme: INTERNAL_MANAGED service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/lb-authz-sdp-service failOpen: false timeout: "0.1s" EOFPer le policy di autorizzazione dei contenuti, il valore di
policyProfiledeve essereCONTENT_AUTHZ.Per i criteri
CONTENT_AUTHZ, il valorewireFormatnon deve essere impostato in modo esplicito comeEXT_PROC_GRPC. Per impostazione predefinita, la callout utilizza il protocolloext_proc.Importa l'estensione di autorizzazione. Utilizza il comando
gcloud beta service-extensions authz-extensions importcon i seguenti valori di esempio.gcloud beta service-extensions authz-extensions import my-lb-content-authz-ext \ --source=lb-content-authz-extension.yaml \ --location=us-west1
Configura una policy di autorizzazione con l'estensione.
Definisci una policy di autorizzazione che associa l'estensione
my-lb-content-authz-extalla regola di forwarding,fr3. Utilizza i valori di esempio forniti.cat >lb-content-authz-policy.yaml <<EOF name: lb-content-authz-policy target: resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules/fr3" policyProfile: CONTENT_AUTHZ httpRules: - to: operations: - hosts: - exact: "example.com" - paths: - prefix: "/sensitive-stuff" action: CUSTOM customProvider: authzExtension: resources: - "projects/PROJECT_ID/locations/us-west1/authzExtensions/my-lb-authz-content-ext" EOFIl valore di
policyProfiledeve essereCONTENT_AUTHZ.Importa la policy di autorizzazione nel progetto. Utilizza il comando
gcloud beta network-security authz-policies importcon i seguenti valori di esempio.gcloud beta network-security authz-policies import my-lb-content-authz-policy \ --source=lb-content-authz-policy.yaml \ --location=us-west1
Limitazioni per le estensioni di autorizzazione
Di seguito sono riportate alcune limitazioni delle estensioni dell'autorizzazione:
- Una policy di autorizzazione può avere una sola estensione di autorizzazione.
- Una regola di forwarding può essere utilizzata con diverse norme di autorizzazione, di cui solo una può essere una norma di autorizzazione personalizzata.
Per le limitazioni applicabili a tutte le estensioni, consulta Limitazioni per le estensioni.
Passaggi successivi
- Visualizza esempi Python e Go di server
ext_authzeext_procnel repository GitHub Service Extensions. - Configurare un'estensione di percorso
- Configurare un'estensione del traffico
- Gestire le estensioni