I criteri di autorizzazione ti consentono di stabilire controlli dell'controllo dell'accesso e controlli di sanificazione dei contenuti durante l'elaborazione di richieste o risposte tramite diversi serviziGoogle Cloud , come Bilanciatore del carico delle applicazioni, Agent Gateway e Secure Web Proxy.
Per Agent Gateway e Secure Web Proxy, la policy di autorizzazione è collegata direttamente alla risorsa gateway di questi servizi. Per un bilanciatore del carico, la policy di autorizzazione è collegata alla risorsa regola di forwarding del bilanciatore del carico.
Una policy di autorizzazione
(AuthzPolicy),
collegata alla regola di forwarding di un bilanciatore del carico,
ti consente di specificare le condizioni che consentono, limitano o delegano l'autorizzazione delle richieste in base alla loro origine e alle operazioni previste. Le richieste che superano questi controlli vengono indirizzate al servizio di backend del bilanciatore del carico, mentre le richieste che non superano questi controlli vengono rifiutate con una risposta non autorizzata.
Puoi configurare i criteri di autorizzazione nella regola di forwarding di tutti i bilanciatori del carico delle applicazioni con uno schema di bilanciamento del carico EXTERNAL_MANAGED o INTERNAL_MANAGED.
I seguenti bilanciatori del carico delle applicazioni supportano le policy di autorizzazione:
- Bilanciatori del carico delle applicazioni esterni regionali
- Bilanciatori del carico delle applicazioni interni regionali
Regole delle policy di autorizzazione
Una policy di autorizzazione è costituita da un elenco di regole HTTP da confrontare con la richiesta in arrivo.
Per una policy di autorizzazione con un'azione ALLOW o DENY, una regola HTTP
(AuthzRule) definisce le condizioni che determinano se il traffico può passare
attraverso il bilanciatore del carico. È richiesta almeno una regola HTTP.
Per un criterio di autorizzazione con un'azione CUSTOM, una regola HTTP (AuthzRule)
definisce le condizioni che determinano se il traffico viene delegato al provider
personalizzato per l'autorizzazione. È necessario un provider personalizzato, mentre le regole HTTP sono
facoltative.
Una corrispondenza con i criteri si verifica quando almeno una regola HTTP corrisponde alla richiesta o quando non sono definite regole HTTP nei criteri.
Una regola HTTP di una policy di autorizzazione è costituita dai seguenti campi:
from: specifica l'identità del client consentita dalla regola. L'identità può essere derivata da un certificato client in una connessione mutual TLS oppure può essere l'identità ambientale associata all'istanza di macchina virtuale (VM) client, ad esempio da un account di servizio o un tag sicuro.to: specifica le operazioni consentite dalla regola, ad esempio gli URL a cui è possibile accedere o i metodi HTTP consentiti.when: specifica vincoli aggiuntivi che devono essere soddisfatti. Puoi utilizzare le espressioni Common Expression Language (CEL) per definire i vincoli.
Azioni delle policy di autorizzazione
Quando valuta una richiesta, una policy di autorizzazione specifica l'azione
(AuthzAction) da applicare alla richiesta. Una policy di autorizzazione deve
avere almeno un'azione, che può essere una delle seguenti:
ALLOW: consente alla richiesta di passare al backend se corrisponde a una delle regole specificate in una policyALLOW. Se esistono policyALLOW, ma non c'è corrispondenza, la richiesta viene rifiutata. In altre parole, la richiesta viene negata se nessuna delle policy di autorizzazione configurate con un'azioneALLOWcorrisponde alla richiesta. In Cloud Logging, questa azione viene registrata comedenied_as_no_allow_policies_matched_request.Affinché venga applicata un'azione
ALLOW, è necessaria almeno una regola HTTP.DENY: nega la richiesta se corrisponde a una delle regole specificate in una policyDENY. Se esistono policyDENY, ma non c'è corrispondenza, la richiesta viene consentita. In altre parole, la richiesta è consentita se nessuna delle policy di autorizzazione configurate con un'azioneDENYcorrisponde alla richiesta. In Cloud Logging, questa azione viene registrata comeallowed_as_no_deny_policies_matched_request.Per applicare un'azione
DENY, è necessaria almeno una regola HTTP.CUSTOM: delega la decisione di autorizzazione a un fornitore di autorizzazione personalizzato, ad esempio IAP o estensioni di servizio. Per saperne di più, consulta Delegare le decisioni di autorizzazione.Se sono configurate regole HTTP per un criterio
CUSTOM, la richiesta deve corrispondere alle regole HTTP per richiamare il provider personalizzato. Tuttavia, se non sono definite regole HTTP, la policy di autorizzazione delega sempre la decisione di autorizzazione a un provider di autorizzazione personalizzato. Per saperne di più, consulta gli esempi in Policy di autorizzazione per delegare le decisioni di autorizzazione.
Ordine di valutazione delle policy di autorizzazione
Una policy di autorizzazione supporta le policy CUSTOM, DENY e ALLOW per controllo dell'accesso#39;accesso. Quando più policy di autorizzazione sono associate a una singola risorsa, viene valutata prima la policy CUSTOM, poi la policy DENY e infine la policy ALLOW. La valutazione è determinata dalle seguenti
regole:
Se esiste una policy
CUSTOMche corrisponde alla richiesta, la policyCUSTOMviene valutata utilizzando un provider di autorizzazione personalizzato. Se il fornitore personalizzato rifiuta la richiesta, questa viene negata. Le normeDENYoALLOWnon vengono valutate, anche se sono configurate.Se esistono policy
DENYche corrispondono alla richiesta, quest'ultima viene rifiutata. Le eventuali policyALLOWnon vengono valutate, anche se sono configurate.Se non esistono policy
ALLOW, la richiesta viene consentita.Se una delle policy
ALLOWcorrisponde alla richiesta, consenti la richiesta.Se esistono policy
ALLOW, ma non c'è corrispondenza, la richiesta viene rifiutata. In altre parole, la richiesta viene rifiutata per impostazione predefinita se nessuna delleAuthzPoliciesconfigurate con l'azioneALLOWcorrisponde alla richiesta.
Se esiste una policy di autorizzazione delle richieste personalizzata (
REQUEST_AUTHZ) che corrisponde alla richiesta, la policyREQUEST_AUTHZviene valutata utilizzando un provider di autorizzazione personalizzato. Se il fornitore personalizzato rifiuta la richiesta, questa viene negata. Le normeDENY,ALLOWeCONTENT_AUTHZnon vengono valutate, anche se sono configurate.Se esistono policy
DENYche corrispondono alla richiesta, quest'ultima viene rifiutata. I criteriALLOWeCONTENT_AUTHZnon vengono valutati, anche se sono configurati.Se non esistono policy
ALLOW, la richiesta procede alla valutazione dell'autorizzazione dei contenuti (CONTENT_AUTHZ).Se una delle policy
ALLOWcorrisponde alla richiesta, la richiesta procede alla valutazioneCONTENT_AUTHZ.Se esistono policy
ALLOW, ma non c'è corrispondenza, la richiesta viene rifiutata. Le policyCONTENT_AUTHZnon vengono valutate.Se esiste una policy
CONTENT_AUTHZche corrisponde alla richiesta, viene valutata per ultima. Se il fornitore personalizzato rifiuta la richiesta, questa viene negata.
Profili delle policy nelle policy di autorizzazione
I profili delle policy nelle policy di autorizzazione sono supportati per i seguenti servizi Google Cloud :
- Bilanciatori del carico delle applicazioni esterni regionali
- Bilanciatori del carico delle applicazioni interni regionali
- Agent Gateway
- Secure Web Proxy
Un profilo della policy (PolicyProfile) in una policy di autorizzazione
è di uno dei seguenti tipi:
- Profilo di autorizzazione della richiesta (
REQUEST_AUTHZ): si basa sulle informazioni contenute nelle intestazioni delle richieste HTTP per consentire o negare il traffico. - Profilo di autorizzazione dei contenuti (
CONTENT_AUTHZ): fornisce sicurezza e filtraggio basati sui contenuti per bloccare gli attacchi di prompt injection, prevenire la fuga di dati sensibili e filtrare i contenuti dannosi.
Puoi configurare una policy di autorizzazione con un profilo REQUEST_AUTHZ o un profilo CONTENT_AUTHZ, ma non entrambi. Se non viene specificato un profilo dei criteri, i criteri di autorizzazione utilizzano per impostazione predefinita il profilo REQUEST_AUTHZ.
Richiedere il profilo di autorizzazione
Le policy di autorizzazione che utilizzano il profilo delle policy REQUEST_AUTHZ possono valutare
le decisioni di accesso per il traffico in entrata direttamente o delegarle. Puoi delegare le decisioni di accesso a Identity-Aware Proxy o a un motore di autorizzazione personalizzato utilizzando un'estensione di autorizzazione.
Il profilo delle norme REQUEST_AUTHZ agisce in base alle informazioni contenute nelle intestazioni delle richieste HTTP per consentire o negare una richiesta.
Una policy di autorizzazione con il profilo della policy REQUEST_AUTHZ può avere un'azione ALLOW, DENY o CUSTOM applicata alla richiesta. Un'azione di ALLOW o DENY indica che la decisione di accesso
viene valutata direttamente, mentre un'azione CUSTOM indica
che la decisione di accesso è delegata.
Quando la decisione di accesso viene delegata, un criterio di autorizzazione configurato nella regola di forwarding del bilanciatore del carico punta a un'estensione di autorizzazione delle richieste che viene eseguita su un servizio di backend di callout. Per ogni richiesta di autorizzazione, il bilanciatore del carico inoltra le intestazioni della richiesta all'estensione di autorizzazione utilizzando il protocollo ext_proc o ext_authz di Envoy. A seconda della risposta dell'estensione, il proxy del bilanciatore del carico inoltra la richiesta al servizio di backend o la rifiuta.
Se non viene specificato un profilo di policy, la policy di autorizzazione utilizza
per impostazione predefinita il profilo di autorizzazione delle richieste (REQUEST_AUTHZ).
Profilo di autorizzazione dei contenuti
I criteri di autorizzazione che utilizzano il profilo dei criteri CONTENT_AUTHZ possono essere utilizzati per
eseguire un'ispezione approfondita dei payload delle applicazioni per consentire o negare le richieste
o modificare le richieste o le risposte, se necessario. Puoi delegare le decisioni di accesso
a Model Armor o alla tua estensione di sanificazione dei contenuti.
Una policy di autorizzazione con il profilo policy CONTENT_AUTHZ può avere solo un'azione CUSTOM applicata alla richiesta. Ciò significa che la richiesta non può essere
valutata direttamente e deve essere delegata.
Una policy di autorizzazione, configurata nella regola di forwarding del
bilanciatore del carico, punta a un'estensione di autorizzazione dei contenuti.
Per ogni
richiesta di autorizzazione, il bilanciatore del carico inoltra l'intero contenuto della richiesta e della risposta,
inclusi intestazioni, corpo e trailer, utilizzando il protocollo ext_proc
di Envoy in modalità di streaming full duplex (FULL_DUPLEX_STREAMED),
all'estensione di autorizzazione dei contenuti. A seconda della risposta dell'estensione, il proxy del bilanciatore del carico inoltra la richiesta alla destinazione o la rifiuta. La destinazione, nel caso di una richiesta, è il servizio di backend
del bilanciatore del carico e, nel caso di una risposta, è il client.
Policy di autorizzazione basata sui principal
Per identificare l'origine del traffico con un'elevata granularità, puoi configurare norme di autorizzazione basate su identità derivate dal certificato di un client. Questo metodo richiede l'attivazione di mTLS frontend sul bilanciatore del carico e utilizza i seguenti attributi del certificato come selettore principale per l'identificazione:
- SAN URI del certificato client (
CLIENT_CERT_URI_SAN) - SAN (Subject Alternative Name) del nome DNS del certificato client (
CLIENT_CERT_DNS_NAME_SAN) - Nome comune del certificato client (
CLIENT_CERT_COMMON_NAME)
Se non viene specificato alcun selettore principale per l'identificazione, CLIENT_CERT_URI_SAN
viene utilizzato come selettore principale predefinito. Ciò significa che i SAN URI del certificato client vengono valutati al momento di prendere decisioni di autorizzazione.
Affinché l'autorizzazione basata sull'entità funzioni, devono essere soddisfatte le seguenti condizioni:
mTLS frontend deve essere abilitato. Se mTLS frontend non è attivato, il client non presenta un certificato. Di conseguenza, nessuna regola basata sulle entità nella policy di autorizzazione trova informazioni sui certificati da valutare. Ad esempio, una regola che controlla
CLIENT_CERT_URI_SANrileva un valore vuoto.Deve essere presente un certificato client valido. Anche con mTLS abilitato, un certificato client non viene utilizzato per l'autorizzazione se la connessione è stata stabilita con un certificato mancante o non valido. Questo scenario si verifica quando la modalità di convalida client mTLS è impostata sulla modalità permissiva
ALLOW_INVALID_OR_MISSING_CLIENT_CERT. Anche in questo caso, le regole basate sui principal nella policy di autorizzazione non trovano informazioni sui certificati da valutare. Ad esempio, una regola che controllaCLIENT_CERT_URI_SANrileva un valore vuoto.
Impatto dei limiti di dimensione degli attributi
Le decisioni di autorizzazione sono sensibili alle dimensioni degli attributi del certificato client. Una richiesta viene rifiutata se un attributo supera il limite di dimensioni e il criterio è configurato per convalidare quell'attributo specifico.
Un rifiuto può verificarsi nelle seguenti condizioni:
- Il criterio viene convalidato in base a
CLIENT_CERT_URI_SANe i SAN URI del certificato superano il limite di dimensioni. - Il criterio viene convalidato in base a
CLIENT_CERT_DNS_NAME_SANe i SAN del nome DNS del certificato superano il limite di dimensioni. - La norma viene convalidata rispetto a
CLIENT_CERT_COMMON_NAMEe il soggetto del certificato (che contiene il nome comune) supera il limite di dimensioni.
Se l'attributo di un certificato supera il limite di dimensioni, ma non è convalidato
in modo esplicito dal selettore dei principal delle norme, la richiesta viene comunque valutata
in base alle regole dei principal configurate. Ad esempio, se un criterio è configurato
per convalidare solo CLIENT_CERT_DNS_NAME_SAN, una richiesta da un client con
SAN URI sovradimensionati non viene rifiutata per questo motivo. La policy procede
valutando la richiesta in base ai SAN del nome DNS.
Per visualizzare un esempio di policy di autorizzazione basata sulle entità, consulta Policy di autorizzazione per negare le richieste.
Policy di autorizzazione basata su service account o tag sicuri
Una policy di autorizzazione basata su service account o tag sicuri è supportata per i seguenti bilanciatori del carico:
- Bilanciatori del carico delle applicazioni interni regionali
- Bilanciatori del carico delle applicazioni interni tra regioni
Le policy di autorizzazione, basate su service account e tag sicuri, consentono di applicare regole di sicurezza in base a chi o cosa invia il traffico, anziché solo all'indirizzo IP. Ciò comporta il passaggio da regole basate su IP a controlli basati sull'identità utilizzando account di servizio e tag sicuri per definire il perimetro di sicurezza. Ad esempio, puoi creare una policy di autorizzazione per:
nega a una VM Compute Engine con un account di servizio specifico (
my-sa-123@PROJECT_ID.) di raggiungere il percorso/api/payments.consenti alle VM Compute Engine con un tag sicuro (coppia chiave-valore
environment: prod) di raggiungere il percorso/api/payments.
Puoi applicare policy di autorizzazione in base ai service account o ai tag sicuri collegati a vari servizi Google Cloud . Il traffico proveniente da questi servizi Google Cloud , collegati a unaccount di serviziont specifico o a un tag sicuro, può essere consentito, negato o delegato per un'ulteriore valutazione.
La tabella seguente elenca i vari Google Cloud servizi che supportano l'utilizzo di service account e tag sicuri.
| ServizioGoogle Cloud | Assistenza per il service account | Supporto dei tag protetti |
|---|---|---|
| Macchina virtuale (VM) Compute Engine | ||
| Nodo Google Kubernetes Engine (GKE) | ||
| Contenitore Google Kubernetes Engine (GKE) | 1 | 1 |
| Cloud VPN | 1 | 1 |
| Cloud Interconnect on-premise | 1 | 1 |
| Bilanciatore del carico delle applicazioni | 3 | 3 |
| Bilanciatore del carico di rete | 3 | 3 |
1 Non supportato da Google Cloud.
3 I service account e i tag non sono supportati quando i bilanciatori del carico delle applicazioni e i bilanciatori del carico di rete fungono da origini di traffico in un'architettura a più livelli.
La tabella seguente elenca le diverse architetture Virtual Private Cloud (VPC) che supportano l'utilizzo di account di servizio e tag.
| VPC | Architettura VPC | Assistenza |
|---|---|---|
| All'interno di VPC | Tra progetti (VPC condiviso) | |
| All'interno di VPC | Interregionale | |
| Cross VPC | Link di peering incrociato (VPC peer) | |
| Cross VPC | Private Service Connect cross-project | |
| Cross VPC | Spoke di Network Connectivity Center cross-network |
Per scoprire di più su come configurare un criterio di autorizzazione basato su service account e tag collegati a una risorsa Google Cloud , consulta Criterio di autorizzazione basato su service account o tag.
Quote
Per informazioni sulle quote per le policy di autorizzazione, consulta Quote e limiti per le policy di autorizzazione.