Questo argomento descrive gli attributi supportati in un'espressione della condizione.
Attributi delle condizioni supportati
Le seguenti sezioni riepilogano gli attributi supportati e indicano quali servizi Google Cloud riconoscono ogni attributo.
Attributi della risorsa
I seguenti attributi sono relativi alla risorsa oggetto della richiesta.
Attributo | Riepilogo sull'utilizzo | Servizi Google Cloud supportati |
---|---|---|
Attributo di servizio della risorsa | Gestisci l'accesso in base al servizio Google Cloud in uso. |
|
Attributo del tipo di risorsa | Gestione dell'accesso in base al tipo di risorsa. | |
Attributo del nome della risorsa | Gestisci l'accesso in base al nome della risorsa. |
|
Tag delle risorse | Gestire l'accesso in base ai tag associati alla risorsa. | Tutti i servizi Google Cloud |
Per ulteriori dettagli sugli attributi delle risorse, consulta la sezione Attributi delle risorse in questa pagina.
Attributi della richiesta
I seguenti attributi sono correlati ai dettagli della richiesta.
Attributo | Riepilogo sull'utilizzo | Servizi Google Cloud supportati |
---|---|---|
Gestire l'accesso in base a livelli specifici. Un livello di accesso è un attributo calcolato basato su attributi non elaborati relativi alla richiesta e al richiedente, come l'indirizzo IP di origine, gli attributi del dispositivo, l'ora del giorno e altro ancora. Ad esempio, un livello di accesso
|
Identity-Aware Proxy |
|
Gestisci l'accesso in base ai dati forniti da un'API o da un servizio Google Cloud specifico. |
|
|
Imposta un accesso esauribile, pianificato o a durata limitata alle risorse Google Cloud. |
Tutti i servizi Google Cloud |
|
Gestisci l'accesso in base all'indirizzo IP di destinazione e/o alla porta di una richiesta. Ad esempio, un'istanza di macchina virtuale (VM) Compute Engine potrebbe
esporre un IP esterno, come L'utilizzo corrente è principalmente per l'inoltro TCP con Identity-Aware Proxy. |
Identity-Aware Proxy |
|
Specifica i tipi di regole di forwarding che un'entità può creare. Ad esempio, potresti consentire a un'entità di creare regole di forwarding per i bilanciatori del carico interni di Google Cloud, che gestiscono il traffico che proviene da una rete Google Cloud, ma non per i bilanciatori del carico esterni di Google Cloud, che gestiscono il traffico proveniente da Internet. |
|
|
Gestisci l'accesso in base al percorso dell'URL e/o all'host di una richiesta. Ad
esempio, una condizione potrebbe specificare che |
Identity-Aware Proxy |
Per ulteriori informazioni sugli attributi della richiesta, consulta la sezione Attributi della richiesta in questa pagina.
Supporto per le condizioni ereditate
Alcuni tipi di risorse Google Cloud non consentono condizioni nei relativi criteri consentiti. Tuttavia, puoi aggiungere associazioni di ruoli condizionali a livello di organizzazione, cartella o progetto e queste ultime erediteranno le associazioni di ruoli tramite la gerarchia delle risorse. Per ulteriori dettagli, consulta la sezione Risorse che accettano le associazioni di ruoli condizionali.
Quando utilizzi gli attributi a livello di organizzazione, cartella o progetto, tieni presente che la maggior parte degli attributi è disponibile solo per tipi di risorse specifici.
Se una parte di una condizione utilizza un attributo non disponibile, la parte in questione non viene mai interpretata come concessione dell'accesso. Ad esempio, la condizione destination.port == 21
non concederà mai l'accesso a nessuna risorsa BigQuery, poiché le risorse BigQuery non forniscono gli attributi IP/porta di destinazione.
Per evitare questo problema, utilizza gli attributi tipo di risorsa e
servizio risorsa descritti in questa pagina per limitare l'ambito della condizione. Ad esempio, la seguente condizione restituisce
true
per tutti i tipi di risorse diverse dalle istanze del tunnel Identity-Aware Proxy; al contrario, per le istanze del tunnel Identity-Aware Proxy, la condizione controlla la porta di destinazione:
resource.type != 'iap.googleapis.com/TunnelInstance' ||
destination.port == 21
Non è necessario limitare l'ambito delle condizioni che controllano i tag associati a una risorsa. Quando una condizione controlla chiavi e valori dei tag, non può verificare nessun altro attributo, inclusi il tipo di risorsa e il servizio risorsa.
Attributi della risorsa
Gli attributi del servizio, del tipo e del nome della risorsa vengono generalmente utilizzati per modificare l'ambito di una concessione di accesso fornita dall'associazione dei ruoli. Quando un ruolo contiene autorizzazioni applicabili ad attributi specifici delle risorse, le condizioni basate sulle risorse possono essere utilizzate per concedere un sottoinsieme delle autorizzazioni del ruolo per tipi specifici o servizi specifici.
Attributo resource.service
L'attributo resource.service
ti consente di impostare una condizione in base al servizio
Google Cloud in uso. Ad esempio, puoi impostare una condizione che limiti l'accesso di un utente alle risorse che utilizzano il servizio cloudresourcemanager.googleapis.com
. Per un elenco dei valori supportati, consulta Valori del servizio delle risorse.
Variabile attributo | resource.service |
---|---|
Tipo di attributo | Stringa |
Operatori supportati | ==, != |
Operando supportato | Stringa
|
Discussione | La variabile resource.service , se utilizzata, ha lo scopo di confrontare l'uguaglianza o le disuguaglianze.
Nota: le funzioni |
Esempi |
Esempio 1: resource.service == "compute.googleapis.com" |
Servizi supportati |
|
Attributo resource.type
L'attributo resource.type
consente di impostare una condizione in base al tipo di risorsa. Ad esempio, puoi impostare una condizione che limiti l'accesso di un utente alle risorse del tipo storage.googleapis.com/Object
. Per un elenco dei valori supportati, consulta la sezione Valori dei tipi di risorsa.
Se la tua condizione utilizza l'attributo resource.name
, ti consigliamo vivamente di utilizzare l'attributo resource.type
per controllare a quali tipi di risorse si applica la condizione. Per maggiori dettagli, consulta la sezione Attributo resource.name
in questa pagina.
Variabile attributo | resource.type |
||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Tipo di attributo | Stringa | ||||||||||||||||||||||||||||
Operatori supportati | ==, != |
||||||||||||||||||||||||||||
Operando supportato | Stringa
|
||||||||||||||||||||||||||||
Discussione |
La variabile resource.type , se utilizzata, ha lo scopo di confrontare l'uguaglianza o le disuguaglianze.
Nota: le funzioni |
||||||||||||||||||||||||||||
Esempi |
Esempio 1: resource.type != "compute.googleapis.com/Image" Esempio 2: (resource.type == "compute.googleapis.com/Image" || |
||||||||||||||||||||||||||||
Tipi di risorse supportati |
1 Cloud Key Management Service utilizza questo tipo di risorsa come risorsa padre di risorse keyring. |
Attributo resource.name
L'attributo resource.name
consente di impostare una condizione basata su tutto o parte di un nome di risorsa. Per un elenco dei formati dei nomi delle risorse, consulta
Formato del nome della risorsa.
L'attributo resource.name
è disponibile solo per tipi di risorse specifici,
elencati nella tabella seguente. Ti consigliamo vivamente di limitare l'applicabilità della condizione al tipo di risorsa prevista. Se un ruolo contiene autorizzazioni per un tipo di risorsa che non fornisce l'attributo resource.name
, devi assicurarti che tale autorizzazione non sia limitata dalla parte della condizione che controlla resource.name
.
L'esempio seguente mostra come garantire questo comportamento. In questo esempio, la condizione
consente l'accesso a tutti i tipi di risorse tranne oggetti e bucket Cloud Storage. Al contrario, per i bucket e gli oggetti, la condizione consente l'accesso solo al bucket example-bucket
e agli oggetti che contiene:
(resource.type != 'storage.googleapis.com/Bucket' &&
resource.type != 'storage.googleapis.com/Object') ||
resource.name.startsWith('projects/_/buckets/example-bucket')
La prima parte della condizione controlla se la risorsa non è né un bucket né un oggetto. Se la risorsa ha un tipo diverso, l'intera condizione verrà valutata a true
, indipendentemente dal nome della risorsa.
Inoltre, tieni presente che la condizione controlla l'attributo resource.type
e non l'attributo resource.service
. Verificare l'attributo resource.type
offre alcuni vantaggi:
- Limita il controllo
resource.name
all'insieme di risorse appropriato. Ad esempio, se vuoi concedere l'accesso a istanze di Compute Engine con un nome specifico, ha senso escludere tutti i tipi di risorse diversi dalle istanze di Compute Engine. - Impedisce che l'ambito della condizione cambi se un servizio aggiunge nuovi tipi di risorse in futuro.
Infine, tieni presente che la condizione utilizza la funzione startsWith()
per valutare
il nome della risorsa, anziché verificare l'uguaglianza con l'operatore ==
.
Poiché la condizione esamina l'inizio del nome della risorsa, corrisponde a un bucket e agli oggetti nel bucket. Se fosse selezionata, l'uguaglianza corrisponderà solo al bucket.
Non puoi utilizzare caratteri jolly come *
per la corrispondenza di più nomi delle risorse. Considera queste alternative:
Utilizza la funzione
extract()
per estrarre un valore dal nome di una risorsa. Ad esempio, puoi estrarre un ID progetto dal nome della risorsa di un'istanza VM di Compute Engine e poi scrivere un'espressione di condizione che faccia riferimento all'ID progetto.Per maggiori dettagli, vedi Estrarre valori dagli attributi in questa pagina.
Utilizza la funzione
startsWith()
oendsWith()
per scrivere una condizione che valuta l'inizio o la fine del nome della risorsa.
Variabile attributo | resource.name |
||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Tipo di attributo | Stringa | ||||||||||||||||||||||
Funzioni e operatori supportati |
startsWith() , endsWith() ,
extract() , == e !=
|
||||||||||||||||||||||
Operando supportato |
Stringa Ogni tipo di risorsa utilizza un formato specifico per il nome della risorsa. Per un elenco dei formati, consulta Formato del nome della risorsa. |
||||||||||||||||||||||
Discussione |
La funzione
La funzione
La funzione
Gli operatori |
||||||||||||||||||||||
Esempi |
Esempio 1 (per un'istanza VM di Compute Engine):
Esempio 2 (per un bucket Cloud Storage):
Esempio 3 (per un oggetto Cloud Storage):
Esempio 4 (per più tipi di risorse):
Esempio 5 (per un bucket Cloud Storage):
|
||||||||||||||||||||||
Tipi di risorse supportati |
|
Tag risorsa
Le funzioni per i tag delle risorse consentono di impostare una condizione basata sui tag associati o ereditati da una risorsa. Ad esempio, puoi impostare una condizione che conceda un ruolo solo alle risorse alle quali è associato il tag env: prod
. Per saperne di più sul controllo dell'accesso con i tag, consulta Tag e controllo dell'accesso.
Ogni tag è costituito da una chiave e da un valore. Esistono diversi tipi di identificatori per ogni chiave e valore:
-
Un ID permanente, univoco a livello globale che non può mai essere riutilizzato. Ad esempio, una chiave tag potrebbe avere l'ID permanente
tagKeys/123456789012
e un valore tag potrebbe avere l'ID permanentetagValues/567890123456
. -
Un nome breve. Il nome breve di ogni chiave deve essere univoco all'interno della tua organizzazione e
il nome breve di ogni valore deve essere univoco per la chiave associata. Ad esempio, una chiave tag potrebbe avere il nome breve
env
, mentre un valore tag potrebbe avere il nome breveprod
. -
Un nome spazio dei nomi, che aggiunge l'ID numerico della tua organizzazione al nome breve di una chiave tag. Ad esempio, una chiave tag potrebbe avere il nome con spazio dei nomi
123456789012/env
. Scopri come ottenere l'ID organizzazione.
Per indicazioni su come scegliere il tipo di identificatore da utilizzare nelle condizioni, vedi Definizioni e identificatori dei tag.
Per lavorare con i tag, puoi utilizzare le seguenti funzioni:
Funzione | Tipo | Descrizione |
---|---|---|
resource.hasTagKey |
String --> bool |
Funzione:
Controlla se la risorsa per la richiesta ha un tag con la chiave specificata. La chiave tag viene cercata dal suo nome
spazio dei nomi. Per verificare la chiave del tag tramite il suo ID permanente, utilizza la funzione
Parametro: String: il nome con spazio dei nomi della chiave tag, con l'ID numerico dell'organizzazione e una barra come prefisso. Ad esempio, Esempio:
|
resource.hasTagKeyId |
String --> bool |
Funzione:
Controlla se la risorsa per la richiesta ha un tag con la chiave specificata. La chiave tag è cercata dall'ID permanente.
Per verificare la chiave del tag utilizzando il nome dello spazio dei nomi, utilizza la funzione
Parametro: Stringa: l'ID permanente per la chiave del tag.
Ad esempio, Esempio:
|
resource.matchTag |
(Stringa, stringa) --> bool |
Funzione:
Controlla se la risorsa per la richiesta ha un tag con la chiave e il valore specificati. La chiave viene cercato in base al nome dello spazio dei nomi, mentre il valore viene cercato in base al nome breve. Per verificare una chiave e un valore di tag utilizzando i relativi ID permanenti, utilizza la funzione Parametri:
Il primo parametro String è il nome con spazio dei nomi per la chiave tag, con l'ID numerico dell'organizzazione e una barra come prefisso.
Ad esempio,
Il secondo parametro String è il nome breve per il valore tag. Ad
esempio, Esempio:
|
resource.matchTagId |
(Stringa, stringa) --> bool |
Funzione:
Controlla se la risorsa per la richiesta ha un tag con la chiave e il valore specificati. La chiave e il valore sono inclusi negli ID permanenti. Per verificare la chiave del tag tramite il suo nome spazio dei nomi e un valore tramite il nome breve, utilizza la funzione Parametri:
Il primo parametro String è l'ID permanente della chiave del tag. Ad
esempio,
Il secondo parametro String è l'ID permanente del valore tag. Ad
esempio, Esempio:
|
Attributi della richiesta
Gli attributi della richiesta consentono di creare condizioni per la valutazione dei dettagli sulla richiesta, ad esempio il livello di accesso, la data e l'ora, l'indirizzo IP e la porta di destinazione (per il tunneling IAP TCP) o l'host/percorso dell'URL previsto (per IAP).
Attributo Livelli di accesso
L'attributo livelli di accesso consente agli utenti di impostare una condizione che richiede l'autorizzazione di una richiesta a livelli specifici.
L'attributo livelli di accesso deriva da attributi della richiesta, come l'indirizzo IP di origine, gli attributi del dispositivo, l'ora del giorno e altro ancora. Ad esempio, un livello di accesso denominato fullyTrusted
potrebbe richiedere che il dispositivo che effettua la richiesta sia di proprietà dell'azienda e abbia un blocco schermo. Un livello di accesso onNetwork
potrebbe richiedere che il dispositivo che effettua la richiesta provenga da un
intervallo di indirizzi IP specifico. Consulta la documentazione di Gestore contesto accesso per ulteriori informazioni sui livelli di accesso.
L'attributo livelli di accesso è disponibile solo quando utilizzi Identity-Aware Proxy per accedere a un'istanza di tunnel o per accedere a un'applicazione web in esecuzione sui servizi di backend App Engine o Compute Engine. Più precisamente, l'attributo livelli di accesso è disponibile solo per le richieste che verificano una delle seguenti autorizzazioni:
iap.tunnelInstances.accessViaIAP
iap.webServiceVersions.accessViaIAP
Puoi utilizzare l'attributo livelli di accesso quando concedi in modo condizionale i seguenti ruoli predefiniti:
Utente del tunnel con protezione IAP (
roles/iap.tunnelResourceAccessor
)Contiene una singola autorizzazione,
iap.tunnelInstances.accessViaIAP
.Utente app web con protezione IAP (
roles/iap.httpsResourceAccessor
)Contiene una singola autorizzazione,
iap.webServiceVersions.accessViaIAP
.
Puoi anche utilizzare l'attributo livelli di accesso per concedere in modo condizionale un ruolo personalizzato contenente queste autorizzazioni. Il ruolo personalizzato non deve contenere altre autorizzazioni.
Attributo request.auth.access_levels
Variabile attributo | request.auth.access_levels |
---|---|
Tipo di attributo | Elenco di stringhe |
Operatori supportati | in |
Operando supportato | Stringa |
Discussione |
Sul lato destro viene visualizzata la variabile Il nome completo di un livello di accesso ha un nome formattato nel seguente pattern: Nota: per applicare l'effetto previsto, la stringa del livello di accesso è sensibile alle maiuscole e deve corrispondere esattamente a ciò che è stato configurato in Gestore contesto accesso. Ad esempio, "accessPolicies/199923665455/accessLevels/CorpNet" è un valore letterale di stringa valido da utilizzare nell'espressione, tuttavia, "accessPolicies/199923665455/accesslevels/CorpNet" non raggiungerà l'effetto previsto. |
Esempio |
"accessPolicies/199923665455/accessLevels/CorpNet" |
Tipi di risorse supportati | Disponibile per le richieste che utilizzano Identity-Aware Proxy per accedere a un'istanza di tunnel o a un'applicazione web in esecuzione su App Engine |
Attributi API
Gli attributi dell'API consentono di gestire l'accesso in base ai dati forniti da un'API o da un servizio Google Cloud specifico.
Ad esempio, quando utilizzi Cloud Storage per
elencare gli oggetti in un bucket, puoi utilizzare il parametro prefix
nella richiesta per includere solo gli oggetti i cui nomi iniziano con un prefisso specifico.
Se utilizzi i limiti di accesso alle credenziali per eseguire il downscope delle credenziali di breve durata, puoi creare un confine di accesso alle credenziali che limita le autorizzazioni
per elencare gli oggetti selezionando l'attributo API
storage.googleapis.com/objectListPrefix
. Questo attributo API contiene il valore
del parametro prefix
della richiesta.
Per esempi di casi in cui potrebbe essere necessario utilizzare attributi API in una condizione, consulta le seguenti pagine:
- Limita le autorizzazioni quando si elencano gli oggetti
- Impostazione di limiti per la concessione dei ruoli
Fai riferimento alle sezioni seguenti per sapere quali servizi riconoscono gli attributi dell'API.
Funzioni per gli attributi dell'API
Puoi utilizzare la seguente funzione per lavorare con gli attributi API:
Funzione | Tipo | Descrizione | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
api.getAttribute |
(Stringa, T) --> T |
Funzione: ottiene l'attributo API richiesto. Parametri: Stringa: l'attributo API da ottenere. Per i valori supportati, consulta questa pagina agli attributi dell'API Cloud Storage e agli attributi dell'API IAM.
T: il valore predefinito da utilizzare se l'attributo API non è disponibile. Utilizza lo stesso tipo del valore dell'attributo API. Ad esempio, se il valore dell'attributo API è una stringa, puoi utilizzare una stringa vuota o una stringa segnaposto come Esempio:
|
||||||||||||
hasOnly |
List<T>.(List<T>) --> bol |
Funzione: verifica che un elenco contenga solo gli articoli consentiti o un sottoinsieme di tali articoli. Parametri:
List<T>: elenco di elementi di tipo T. Chiama la funzione su un elenco restituito da Esempio:
Controlla se la richiesta concede o revoca ruoli diversi da
Pub/Sub Editor (
|
Attributi dell'API Cloud Storage
Cloud Storage fornisce il seguente attributo API.
Attributo | Tipo | Descrizione |
---|---|---|
storage.googleapis.com/objectListPrefix |
Stringa |
Per una richiesta lista oggetti in un bucket, contiene il valore del parametro Per gli altri tipi di richieste, l'attributo non è definito. Servizi che riconoscono questo attributo: Solo Cloud Storage riconosce questo attributo. |
Attributi API IAM
IAM fornisce il seguente attributo API:
Attributo | Tipo | Descrizione |
---|---|---|
iam.googleapis.com/modifiedGrantsByRole |
Array |
Per una richiesta di impostare il criterio di autorizzazione di una risorsa, questo attributo contiene i nomi dei ruoli delle associazioni di ruoli modificate dalla richiesta. Per gli altri tipi di richieste, l'attributo non è definito. Risorse che accettano questo attributo:
Le seguenti risorse accettano le condizioni con l'attributo
Servizi che riconoscono questo attributo:
I seguenti servizi riconoscono l'attributo
|
Attributo data/ora
L'attributo data/ora viene utilizzato per impostare l'accesso in scadenza, pianificato o per una durata limitata alle risorse Google Cloud.
Questo attributo è disponibile per tutti i servizi e i tipi di risorse Google Cloud.
Funzioni e operatori per la conversione dei valori
La variabile dell'attributo utilizzata per l'attributo data/ora è request.time
, di tipo Timestamp. Puoi anche convertire le stringhe in tipi di timestamp e durata.
Funzioni e operatori supportati | Tipo | Descrizione |
---|---|---|
date |
String --> Timestamp |
Funzione: converti una stringa in un timestamp. Esempio:
|
duration |
Stringa --> Durata |
Funzione: converti una stringa in una durata. Esempi:
|
|
String --> Timestamp |
Funzione: converti una stringa in un timestamp. Esempi:
Nota importante: |
|
(Timestamp, Timestamp) --> bool |
Funzione: confronto generale con il tipo di timestamp. Esempi: |
+ , - |
(Timestamp, Durata) --> Timestamp |
Funzione: aggiungi o sottrai una durata da un timestamp. Esempi:
|
Funzioni e operatori per il recupero dei valori
La variabile dell'attributo utilizzata per l'attributo data/ora è request.time
, di tipo Timestamp.
Funzioni e operatori supportati | Tipo | Descrizione |
---|---|---|
|
Timestamp.() --> int |
Funzioni: Parametri: Esempio: Esempio: Esempio: |
|
Timestamp.() --> int |
Funzione: recupera l'anno dalla data. Parametri: Esempio: Esempio: |
|
Timestamp.() --> int |
Funzione: ottiene le ore dalla data; i valori sono compresi tra 0 e 23. Parametri: Esempio: Nota: |
|
Timestamp.() --> int |
Funzione: ottiene i millisecondi entro un secondo dal timestamp; i valori sono compresi tra 0 e 999. Parametri: Nota: |
|
Timestamp.() --> int |
Funzione: ottiene i minuti entro un'ora dal timestamp; i valori sono compresi tra 0 e 59. Parametri: Nota: |
|
Timestamp.() --> int |
Funzione: ottiene i mesi entro un anno dal timestamp; i valori sono compresi tra 0 e 11. Parametri: Esempio: |
|
Timestamp.() --> int |
Funzione: recupera i secondi entro un minuto dal timestamp; i valori sono compresi tra 0 e 59. Parametri: Nota: |
|
(int, int) --> bool |
Funzione: confronto generale con il tipo int. Discussione: |
Attributi IP/porta di destinazione
L'attributo IP/port di destinazione consente agli utenti di gestire l'accesso in base all'indirizzo IP e/o alla porta interno di destinazione per una richiesta.
Ad esempio, un'istanza VM di Compute Engine potrebbe mappare l'indirizzo IP esterno e la porta 132.168.42.21:3001
all'indirizzo IP interno e alla porta 10.0.0.1:2300
per un utilizzo generale. Al contrario, l'indirizzo IP interno e la porta
10.0.0.1:22
potrebbero essere disponibili solo internamente per uso amministrativo. Puoi utilizzare gli attributi IP/porta di destinazione per concedere livelli di accesso diversi in base all'indirizzo IP interno e alla porta.
Per ulteriori informazioni sull'inoltro TCP, consulta la documentazione relativa a Identity-Aware Proxy.
Attributo destination.ip
Variabile attributo | destination.ip |
---|---|
Tipo di attributo | Stringa |
Operatori supportati | ==, != |
Operando supportato | Stringa |
Discussione |
La variabile Nota: la funzione |
Esempi |
destination.ip == "10.0.0.1" destination.ip != "10.0.0.1" |
Tipi di risorse supportati | Disponibile per le richieste che utilizzano Identity-Aware Proxy per accedere a un'istanza di tunnel |
Attributo destination.port
Variabile attributo | destination.port |
---|---|
Tipo di attributo | Numero intero |
Operatori supportati | ==, !=, <, <=, >, >= |
Operando supportato | Numero intero |
Discussione |
La variabile |
Esempi |
destination.port == 21 destination.port < 3001 |
Tipi di risorse supportati | Disponibile per le richieste che utilizzano Identity-Aware Proxy per accedere a un'istanza di tunnel |
Attributi delle regole di forwarding
Gli attributi delle regole di forwarding consentono di specificare i tipi di regole di forwarding che possono essere create da un'entità. Ad esempio, potresti consentire a un'entità di creare regole di forwarding per i bilanciatori del carico interni di Google Cloud, che gestiscono il traffico che ha origine all'interno di una rete Google Cloud, ma non per i bilanciatori del carico Google Cloud esterni, che gestiscono il traffico proveniente da Internet.
Per Cloud Load Balancing, gli attributi della regola di forwarding non influiscono sulla possibilità di creare altri componenti di un bilanciatore del carico Google Cloud, come servizi di backend, proxy di destinazione, controlli di integrità e mappe degli URL.
Funzioni supportate
Funzioni supportate | Tipo | Descrizione |
---|---|---|
compute.isForwardingRule |
() --> bool |
Funzione: controlla se la richiesta sta creando una regola di forwarding.
Esempi: consulta gli esempi per |
compute.matchLoad |
Array.(stringa) --> bool |
Funzione: controlla se la richiesta interessa uno dei tipi di schema di bilanciamento del carico specificati. Per trovare l'identificatore per ogni schema di bilanciamento del carico, nonché i dettagli su ciascuno schema, vedi Utilizzo delle condizioni IAM sui bilanciatori del carico Google Cloud. Parametri: array di stringhe Esempio:
|
Tipi di risorse supportati
Questo attributo è disponibile per le richieste di creazione di uno di questi tipi di risorse:
Servizio | Tipi di risorse |
---|---|
Cloud Load Balancing | Regole di forwarding |
Cloud VPN | Regole di forwarding (a livello globale e di area geografica) |
Compute Engine | Regole di forwarding (per inoltro protocollo) |
Traffic Director1 | Regole di forwarding |
1 Utilizza gli attributi della risorsa per Compute Engine.
Percorso URL/attributo host
L'attributo percorso URL/host consente agli utenti di gestire l'accesso in base al percorso dell'URL e/o all'host di una richiesta. Ad esempio, una condizione può specificare che
https://example.com
è l'applicazione principale accessibile da un dominio generale
degli utenti, mentre https://hr.example.com/admin
viene utilizzato per accedere a una pagina
nell'applicazione in cui solo gli amministratori delle Risorse umane possono accedere a questa parte.
Attributo request.path
Variabile attributo | request.path |
---|---|
Tipo di attributo | Stringa |
Funzioni e operatori supportati | ==, startsWith(), endsWith() |
Operandi/parametri supportati |
|
Discussioni | Nota: l'utilizzo dell'operatore != non è consigliato.
Invece di confronti negativi, ad esempio: request.path != "/admin", l'utilizzo consigliato è, ad esempio, la corrispondenza di prefisso ! request.path.startsWith("/admin"). In questo modo, i percorsi degli URL padre di "/admin", ad esempio "/admin/payroll/", sono tutti protetti da accessi indesiderati. |
Esempi |
Esempio 1: request.path == "/admin" request.path == "/admin/payroll"
La stringa utilizzata nel confronto dell'uguaglianza ( Esempio 2: request.path.startsWith("/admin") Una stringa che rappresenta il prefisso di un percorso URL viene utilizzata nella funzione. Esempio 3: request.path.endsWith("/payroll.js") Una stringa che rappresenta il suffisso di un percorso URL viene utilizzata nella funzione. |
Tipi di risorse supportati |
Versioni del servizio app Identity-Aware Proxy (App Engine) Disponibile per le richieste che utilizzano Identity-Aware Proxy per accedere a un'applicazione web in esecuzione su App Engine o Compute Engine |
Attributo request.host
Variabile attributo | request.host |
---|---|
Tipo di attributo | Stringa |
Funzioni e operatori supportati | ==, endsWith() |
Operandi/parametri supportati |
|
Discussione |
La funzione .startsWith(<prefix string>) non deve essere utilizzata con l'attributo request.host . Sebbene l'impostazione di una condizione come request.host.startsWith(<prefix string>) non determinerà errori di sintassi durante l'esecuzione di un'operazione setIamPolicy , non è consigliata a causa di risultati imprevisti.
È sconsigliato usare != .
|
Esempi |
Esempio 1: request.host == "www.example.com" request.host == "hr.example.com"
La stringa utilizzata nel confronto dell'uguaglianza ( Esempio 2: request.host.endsWith("example.com") Stringa che rappresenta il suffisso di un nome host di un sito web. |
Tipi di risorse supportati |
Versioni del servizio app Identity-Aware Proxy (App Engine) Disponibile per le richieste che utilizzano Identity-Aware Proxy per accedere a una versione del servizio dell'app. |
Estrai valori dagli attributi
Puoi utilizzare la funzione extract()
per estrarre un valore da un attributo. Ad esempio, puoi estrarre una parte arbitraria del nome di una risorsa e quindi scrivere un'espressione della condizione che si riferisce al testo estratto.
Per utilizzare la funzione extract()
, fornisci un modello di estrazione che specifica la parte dell'attributo da estrarre. Ad esempio, per estrarre un ID progetto dal nome della risorsa di un'istanza VM di Compute Engine, puoi utilizzare il modello projects/{project-id}/
.
Un modello di estrazione contiene le seguenti parti:
Un identificatore, racchiuso tra parentesi graffe, che identifica la sottostringa da estrarre.
Scegli un identificatore breve e significativo che chiarisca il valore che vuoi estrarre. Puoi utilizzare lettere maiuscole e minuscole da
A
aZ
; cifre numeriche; trattini (-
) e trattini bassi (_
).Nel modello
projects/{project-id}/
, l'identificatore èproject-id
.(Facoltativo) Un prefisso, che deve essere visualizzato prima della sottostringa.
Nel modello
projects/{project-id}/
, il prefisso èprojects/
.(Facoltativo) Un suffisso, che deve essere visualizzato dopo la sottostringa per l'estrazione.
Nel modello
projects/{project-id}/
, il suffisso è/
.
La funzione extract()
estrae diverse parti dell'attributo a seconda che il modello di estrazione abbia un prefisso, un suffisso o entrambi:
Con prefisso | Ha un suffisso | Valore estratto |
---|---|---|
- | - | L'intero attributo |
- | I caratteri dopo la prima occorrenza del prefisso o una stringa vuota se non ci sono caratteri dopo il prefisso | |
- | I caratteri che precedono la prima occorrenza del suffisso o una stringa vuota se non ci sono caratteri prima del suffisso | |
I caratteri tra la prima occorrenza del prefisso e la prima occorrenza successiva del suffisso oppure una stringa vuota se non ci sono caratteri tra il prefisso e il suffisso |
Se specifichi un prefisso o un suffisso che non viene visualizzato nell'attributo o se il suffisso viene visualizzato solo prima del prefisso, la funzione extract()
restituisce null
.
I seguenti esempi mostrano l'output da diversi modelli di estrazione. Questi esempi si riferiscono al nome di una risorsa per un oggetto Cloud Storage,
projects/_/buckets/acme-orders-aaa/objects/data_lake/orders/
:
Modello di estrazione | Output |
---|---|
/order_date={date}/ |
2019-11-03 |
buckets/{name}/ |
acme-orders-aaa |
/orders/{empty}order_date |
Stringa vuota |
{start}/objects/data_lake |
projects/_/buckets/acme-orders-aaa |
orders/{end} |
order_date=2019-11-03/aef87g87ae0876 |
{all} |
projects/_/buckets/acme-orders-aaa/objects/data_lake/orders/ |
/orders/{none}/order_date= |
null |
/orders/order_date=2019-11-03/ |
null |
Se estrai una stringa che rappresenta una data, puoi utilizzare le funzioni e gli operatori per data/ora in questa pagina per convertire il valore estratto in un timestamp. Ad esempio, consulta Configurare l'accesso basato sulle risorse.