Questo documento descrive gli attributi supportati in un'espressione di condizione.
Attributi di condizione supportati
Le sezioni seguenti riepilogano gli attributi supportati e indicano quali serviziGoogle Cloud riconoscono ciascun attributo.
Attributi risorsa
I seguenti attributi si riferiscono alla risorsa oggetto della richiesta.
Attributo | Riepilogo utilizzo | Servizi Google Cloud supportati |
---|---|---|
Attributo servizio risorse |
Gestisci l'accesso in base al servizio utilizzato. Google Cloud Puoi utilizzare questo attributo nei binding dei ruoli dei criteri di autorizzazione. |
|
Attributo Tipo di risorsa |
Gestisci l'accesso in base al tipo di risorsa. Puoi utilizzare questo attributo nei binding dei ruoli dei criteri di autorizzazione. |
|
Attributo nome risorsa |
Gestisci l'accesso in base al nome della risorsa. Puoi utilizzare questo attributo nei binding dei ruoli dei criteri di autorizzazione. |
|
Tag risorsa |
Gestisci l'accesso in base ai tag collegati alla risorsa. Puoi utilizzare questo attributo nei seguenti punti:
|
Tutti i Google Cloud servizi (vedi Supporto delle condizioni ereditate) |
Per ulteriori dettagli sugli attributi delle risorse, consulta la sezione Attributi delle risorse in questa pagina.
Attributi principali
I seguenti attributi si riferiscono al principale che effettua la richiesta.
Attributo | Riepilogo utilizzo | Tipi di entità supportati |
---|---|---|
Applica le policy in base al tipo di principal nella richiesta. Puoi utilizzare questo attributo nelle associazioni di policy per le policy di Principal Access Boundary. |
|
|
Applica criteri in base all'identità del principal nella richiesta. Puoi utilizzare questo attributo nelle associazioni di policy per le policy di Principal Access Boundary. |
|
Per maggiori dettagli sugli attributi del principal, vedi Attributi del principal in questa pagina.
Attributi della richiesta
I seguenti attributi si riferiscono ai dettagli della richiesta.
Attributo | Riepilogo utilizzo | Servizi Google Cloud supportati |
---|---|---|
Gestisci l'accesso in base a uno o più livelli di accesso specifici.
Un livello di accesso è un attributo calcolato in base agli attributi non elaborati
relativi alla richiesta e al richiedente, come l'indirizzo IP di origine, gli attributi
del dispositivo e l'ora del giorno. Ad esempio, un livello di accesso Puoi utilizzare questo attributo nei binding dei ruoli dei criteri di autorizzazione. |
Identity-Aware Proxy |
|
Gestisci l'accesso in base ai dati forniti da un'API o un servizio Google Cloudspecifico. Puoi utilizzare questo attributo nei binding dei ruoli dei criteri di autorizzazione. |
|
|
Imposta l'accesso con scadenza, pianificato o di durata limitata alle risorse Google Cloud . Puoi utilizzare questi attributi nei binding dei ruoli dei criteri di autorizzazione. |
Tutti i Google Cloud servizi (vedi Supporto delle condizioni ereditate) |
|
Gestisci l'accesso in base all'indirizzo IP e/o alla porta di destinazione di una
richiesta. Ad esempio, un'istanza di macchina virtuale (VM) Compute Engine
potrebbe esporre un IP esterno, ad esempio Utilizzato per l'inoltro TCP di Identity-Aware Proxy. Puoi utilizzare questi attributi nei binding dei ruoli dei criteri di autorizzazione. |
Identity-Aware Proxy |
|
Specifica i tipi di regole di inoltro che un principal può creare. Ad esempio, potresti consentire a un principal di creare regole di inoltro per bilanciatori del carico interni Google Cloud , che gestiscono il traffico proveniente dall'interno di una rete Google Cloud , ma non per bilanciatori del carico Google Cloud esterni, che gestiscono il traffico proveniente da internet. Puoi utilizzare questi attributi nei binding dei ruoli dei criteri di autorizzazione. |
|
|
Gestisci l'accesso in base al percorso e/o all'host di una richiesta. Ad esempio, una condizione potrebbe specificare che Puoi utilizzare questi attributi nei binding dei ruoli dei criteri di autorizzazione. |
|
Per maggiori dettagli sugli attributi della richiesta, vedi Attributi della richiesta in questa pagina.
Supporto per le condizioni ereditate
Alcuni tipi di Google Cloud risorse non consentono condizioni nei criteri di autorizzazione. Tuttavia, puoi aggiungere associazioni di ruoli condizionali a livello di organizzazione, cartella o progetto e le altre risorse erediteranno queste associazioni di ruoli tramite la gerarchia delle risorse. Per maggiori dettagli, vedi Tipi di risorse che accettano 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, questa parte
della condizione non viene mai interpretata come concessione dell'accesso. Ad esempio, la
condizione resource.name.endsWith == devResource
non concederà mai l'accesso a nessuna
risorsa IAM, perché le risorse IAM non
forniscono il nome della risorsa.
Per evitare questo problema, utilizza gli attributi tipo di risorsa e
servizio di risorse descritti in questa pagina per limitare
l'ambito della condizione. Ad esempio, la seguente condizione restituisce
true
per tutti i tipi di risorse diversi dalle istanze Compute Engine; al contrario, per le istanze Compute Engine, la condizione controlla il nome della risorsa:
resource.type != 'compute.googleapis.com/Disk' ||
resource.name.endsWith('devResource')
Non è necessario limitare l'ambito delle condizioni che controllano i tag collegati a una risorsa. Quando una condizione controlla le chiavi e i valori dei tag, non può controllare altri attributi, inclusi il tipo di risorsa e il servizio di risorse.
Attributi risorsa
Gli attributi servizio risorsa, tipo di risorsa e nome della risorsa vengono in genere utilizzati per modificare l'ambito di una concessione di accesso fornita dal binding del ruolo. Quando un ruolo contiene autorizzazioni che si applicano a diversi attributi specifici della risorsa, è possibile utilizzare le condizioni basate sulle risorse per concedere un sottoinsieme delle autorizzazioni del ruolo per tipi specifici o per servizi specifici.
attributo resource.service
L'attributo resource.service
ti consente di impostare una condizione in base al
servizioGoogle Cloud utilizzato. 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 di risorse.
Puoi utilizzare l'attributo resource.service
nei binding dei ruoli dei criteri di autorizzazione.
Variabile attributo | resource.service |
---|---|
Tipo di attributo |
Per un elenco dei valori supportati, consulta Valori del servizio di risorse. |
Operatori supportati | , |
Dettagli |
Quando utilizzi l'attributo resource.type nelle condizioni,
verifica l'uguaglianza esatta ( ) o la disuguaglianza
esatta ( ) con l'attributo.
Altri confronti, ad esempio il controllo di un prefisso o un suffisso, potrebbero
restituire risultati imprevisti.
|
Esempio |
Restituisce resource.service == "compute.googleapis.com" |
Servizi supportati |
|
Attributo resource.type
L'attributo resource.type
ti consente di impostare una condizione in base al tipo di risorsa. Ad esempio, potresti impostare una condizione che limiti l'accesso di un utente alle risorse di tipo storage.googleapis.com/Object
. Per un elenco dei valori
supportati, consulta Valori del tipo 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 i dettagli, vedi l'attributo
resource.name
in questa pagina.
Puoi utilizzare l'attributo resource.type
nei binding dei ruoli dei criteri di autorizzazione.
Variabile attributo | resource.type |
||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Tipo di attributo |
Per un elenco dei valori supportati, consulta Valori del tipo di risorsa. |
||||||||||||||||||||||||||||||||||||||||||||||||||
Operatori supportati | , |
||||||||||||||||||||||||||||||||||||||||||||||||||
Dettagli |
Quando utilizzi l'attributo resource.type nelle condizioni,
verifica l'uguaglianza esatta ( ) o la disuguaglianza
esatta ( ) con l'attributo. Altri
confronti, ad esempio il controllo di un prefisso o un suffisso, potrebbero darti
risultati imprevisti.
|
||||||||||||||||||||||||||||||||||||||||||||||||||
Esempi |
Restituisce resource.type != "compute.googleapis.com/Image"
Restituisce (resource.type == "compute.googleapis.com/Image" || resource.type == "compute.googleapis.com/Disk") |
||||||||||||||||||||||||||||||||||||||||||||||||||
Tipi di risorse supportati |
1 Cloud Key Management Service utilizza questo tipo di risorsa come risorsa principale delle risorse keyring. |
Attributo resource.name
L'attributo resource.name
consente di impostare una condizione basata su tutto o parte di un nome 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 di questa sezione. Ti consigliamo vivamente di
limitare l'applicabilità della condizione al tipo di risorsa previsto. Se un ruolo contiene autorizzazioni per un tipo di risorsa che non fornisce l'attributo resource.name
, devi assicurarti che queste autorizzazioni non siano limitate 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, ad eccezione di bucket e oggetti 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')
Tieni presente che la prima parte della condizione verifica se la risorsa non è
un bucket né un oggetto. Se la risorsa ha un tipo diverso, l'intera condizione restituisce true
, indipendentemente dal nome della risorsa.
Inoltre, tieni presente che la condizione controlla l'attributo resource.type
, non l'attributo
resource.service
. La verifica dell'attributo
resource.type
offre alcuni vantaggi:
- Limita il controllo
resource.name
al set appropriato di risorse. Ad esempio, se vuoi concedere l'accesso alle istanze Compute Engine con un nome specifico, è opportuno escludere tutti i tipi di risorse diversi dalle istanze Compute Engine. - Impedisce che l'ambito della condizione cambi se in futuro un servizio aggiunge nuovi tipi di risorse.
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 in quel bucket. Se è selezionata per
l'uguaglianza, corrisponderà solo al bucket.
Non puoi utilizzare caratteri jolly come *
per trovare corrispondenze con più nomi di risorse. Prendi in considerazione queste alternative:
Utilizza la funzione
extract()
per estrarre un valore da un nome risorsa. Ad esempio, puoi estrarre un ID progetto dal nome della risorsa di un'istanza VM di Compute Engine, quindi scrivere un'espressione di condizione che fa riferimento all'ID progetto.Per i dettagli, consulta la sezione Estrazione dei valori dagli attributi in questa pagina.
Utilizza la funzione
startsWith()
oendsWith()
per scrivere una condizione che valuti l'inizio o la fine del nome della risorsa.
Puoi utilizzare l'attributo resource.name
nei binding dei ruoli dei criteri di autorizzazione.
Variabile attributo | resource.name |
||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Tipo di attributo |
Ogni tipo di risorsa utilizza un formato specifico per il nome della risorsa. Per un elenco dei formati, consulta Formato del nome della risorsa. |
||||||||||||||||||||||||||||||||||||||||||||||
Funzioni e operatori supportati |
startsWith(), endsWith(), extract(),
, |
||||||||||||||||||||||||||||||||||||||||||||||
Dettagli |
La funzione
La funzione
La funzione
Gli operatori |
||||||||||||||||||||||||||||||||||||||||||||||
Esempi |
Restituisce resource.name != "projects/_/buckets/secret-bucket-123"
Restituisce resource.name.startsWith("projects/project-123/zones/us-east1-b/instances/prod-")
Restituisce resource.name.startsWith("projects/_/buckets/my_bucket/objects/test-object-")
Restituisce resource.name.endsWith(".jpg") Restituisce il nome o il numero del progetto, se presente: resource.name.extract("projects/{project}/") |
||||||||||||||||||||||||||||||||||||||||||||||
Tipi di risorse supportati |
|
Tag di risorse
Le funzioni dei tag delle risorse consentono di impostare una condizione in base ai tag collegati alle risorse supportate o ereditati dai discendenti di queste risorse. Ad esempio, puoi impostare una condizione che concede un ruolo solo per le risorse a cui è 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 un valore. Esistono diversi tipi di identificatori per ogni chiave e valore:
-
Un ID permanente, univoco a livello globale e mai riutilizzabile. Ad esempio, una chiave
del tag potrebbe avere l'ID permanente
tagKeys/123456789012
e un valore del tag potrebbe avere l'ID permanentetagValues/567890123456
. -
Un nome breve. Il nome breve di ogni chiave deve essere univoco all'interno del progetto o
dell'organizzazione in cui è definita la chiave 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
e un valore tag potrebbe avere il nome breveprod
. -
Un nome con spazio dei nomi, che aggiunge l'ID numerico della tua organizzazione o l'ID del progetto al
nome breve di una chiave tag. Ad esempio, una chiave tag creata per un'organizzazione potrebbe avere il
nome con spazio dei nomi
123456789012/env
. Per scoprire come ottenere l'ID della tua organizzazione, vedi Ottenere l'ID risorsa dell'organizzazione. Una chiave tag creata per un progetto potrebbe avere il nome con spazio dei nomimyproject/env
. Per scoprire come ottenere l'ID progetto, consulta la sezione Identificazione dei progetti.
Per indicazioni sulla scelta del tipo di identificatore da utilizzare nelle condizioni, consulta Definizioni e identificatori dei tag.
Puoi utilizzare le condizioni basate su tag per condizionare l'accesso a qualsiasi risorsa. Sono incluse le risorse con tag propri, nonché le risorse che ereditano i tag da altre risorse. Per scoprire di più su come i tag vengono ereditati tramite la gerarchia delle risorse, consulta Ereditarietà dei tag.
Tuttavia, alcune aree della console Google Cloud non riconoscono le associazioni di ruolo dei criteri di autorizzazione con condizioni basate su tag. Di conseguenza, se hai un ruolo con una condizione basata su tag, la console Google Cloud potrebbe impedirti erroneamente di eseguire determinate azioni. Se riscontri questo problema, utilizza un metodo alternativo, ad esempio gcloud CLI, per eseguire l'azione.
Puoi utilizzare le condizioni basate sui tag in:
- Associazioni di ruoli dei criteri di autorizzazione
- Regole di negazione del criterio di negazione
Puoi utilizzare le seguenti funzioni per impostare le condizioni in base ai tag:
Funzione | Descrizione |
---|---|
resource.hasTagKey(
bool
|
Controlla se la risorsa per la richiesta ha un tag con la chiave specificata. La chiave tag viene cercata in base al nome
con spazio dei nomi. Per verificare la presenza di una chiave tag utilizzando il relativo ID permanente, utilizza
la funzione
|
resource.hasTagKeyId(
bool
|
Controlla se la risorsa per la richiesta ha un tag con la chiave specificata. La chiave del tag viene cercata in base al relativo ID permanente.
Per verificare la presenza di una chiave tag utilizzando il relativo nome con spazio dei nomi, utilizza la funzione
|
resource.matchTag(
bool
|
Controlla se la risorsa per la richiesta ha un tag con la chiave e il valore specificati. La chiave viene cercata in base al nome con spazio dei nomi e il valore viene cercato in base al nome breve. Per
controllare una chiave e un valore del tag utilizzando i relativi ID permanenti, utilizza
la funzione
|
resource.matchTagId(
bool
|
Controlla se la risorsa per la richiesta ha un tag con la chiave e il valore specificati. La chiave e il valore vengono cercati in base ai relativi
ID permanenti. Per verificare la presenza di una chiave tag utilizzando il relativo nome con spazio dei nomi e un valore utilizzando il relativo nome breve, utilizza la funzione
|
Attributi principali
Gli attributi dell'entità ti consentono di scrivere condizioni basate sull'entità che ha emesso la richiesta. Con questi attributi, puoi perfezionare le entità per cui viene applicata una norma.
Puoi utilizzare gli attributi delle entità nelle associazioni delle policy per le policy di Principal Access Boundary.
Attributo principal.type
L'attributo principal.type
consente di impostare una condizione in base al tipo di
principal che invia la richiesta. Ad esempio, puoi aggiungere una condizione a un binding di policy per una policy di Principal Access Boundary per assicurarti che la policy venga applicata solo ai service account.
Puoi utilizzare gli attributi delle entità nelle associazioni delle policy per le policy di Principal Access Boundary.
Variabile attributo | principal.type |
---|---|
Tipo di attributo |
|
Operatori supportati | , , in |
Tipi di entità supportati |
|
Esempi |
Restituisce principal.type == "iam.googleapis.com/ServiceAccount"
Restituisce principal.type in ["iam.googleapis.com/WorkspaceIdentity", "iam.googleapis.com/WorkforcePoolIdentity"] |
Attributo principal.subject
L'attributo principal.subject
ti consente di impostare una condizione in base al
principal che invia la richiesta. Ad esempio, puoi aggiungere una condizione a un'associazione di policy per una policy di Principal Access Boundary per assicurarti che la policy venga applicata solo alle entità i cui indirizzi email terminano con @example.com
.
Se utilizzi l'attributo principal.subject
in una condizione, ti consigliamo di utilizzare anche l'attributo principal.type
per controllare a quali tipi di entità si applica la condizione. Questo perché gli identificatori entità
non sono necessariamente univoci per tutti i tipi di entità. Ad esempio, l'identificatore
example-user@example.com
potrebbe identificare un Account Google o un utente in un
pool di identità della forza lavoro.
Utilizzando l'attributo principal.type
in aggiunta all'attributo principal.subject
, puoi assicurarti che la condizione corrisponda solo ai principal con il tipo previsto. Ad esempio, la seguente espressione corrisponde agli Account Google
i cui indirizzi email terminano con @example.com
:
principal.type == 'iam.googleapis.com/WorkspaceIdentity' &&
principal.subject.endsWith('@example.com')
Puoi utilizzare gli attributi delle entità nelle associazioni delle policy per le policy di Principal Access Boundary.
Variabile attributo | principal.subject |
---|---|
Tipo di attributo |
|
Operatori supportati |
|
Oggetti dell'entità supportati |
|
Esempio |
Restituisce principal.subject.endsWith("@example.com")
Restituisce principal.subject == "example-service-account@example-project.iam.gserviceaccount.com" |
Attributi della richiesta
Gli attributi della richiesta ti consentono di creare condizioni che valutano i dettagli della richiesta, come il livello di accesso, la data e l'ora, l'indirizzo IP di destinazione e la porta (per il tunneling TCP di IAP) o il percorso/host URL previsto (per IAP e Cloud Run).
Attributo Livelli di accesso
L'attributo dei livelli di accesso consente agli utenti di impostare una condizione che richiede che una richiesta soddisfi uno o più livelli di accesso per essere autorizzata. Puoi utilizzare l'attributo dei livelli di accesso nelle associazioni di ruoli delle policy di autorizzazione.
L'attributo dei livelli di accesso deriva dagli attributi della richiesta, ad esempio
l'indirizzo IP di origine, gli attributi del dispositivo e l'ora del giorno. 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 particolare intervallo di indirizzi IP. Per ulteriori informazioni sui livelli di accesso, consulta la documentazione di Gestore contesto accesso.
L'attributo Livelli di accesso è disponibile solo quando utilizzi Identity-Aware Proxy per accedere a un'istanza tunnel o a un'applicazione web in esecuzione su servizi di backend App Engine o Compute Engine. Più nello specifico, l'attributo livelli di accesso è disponibile solo per le richieste che controllano una di queste 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 sola autorizzazione,
iap.tunnelInstances.accessViaIAP
.IAP-secured Web App User (
roles/iap.httpsResourceAccessor
)Contiene una sola autorizzazione,
iap.webServiceVersions.accessViaIAP
.
Puoi anche utilizzare l'attributo Livelli di accesso per concedere in modo condizionale un ruolo personalizzato che contenga queste autorizzazioni. Il ruolo personalizzato non deve contenere altre autorizzazioni.
Attributo request.auth.access_levels
Variabile attributo | request.auth.access_levels |
---|---|
Tipo di attributo | list <string > |
Operatori supportati | in |
Dettagli |
Per verificare se una richiesta soddisfa un livello di accesso specifico, utilizza l'operatore
ACCESS_LEVEL_FULL_NAME in request.auth.access_levels Il nome completo di un livello di accesso utilizza il seguente formato: accessPolicies/POLICY_NUMBER/accessLevels/ACCESS_LEVEL |
Esempio |
Restituisce "accessPolicies/199923665455/accessLevels/CorpNet" in request.auth.access_levels |
Tipi di risorse supportati | Disponibile per le richieste che utilizzano Identity-Aware Proxy per accedere a un'istanza tunnel, a un gruppo di destinazioni tunnel, a un'applicazione web in esecuzione sul bilanciamento del carico o a un'applicazione web in esecuzione su App Engine. Google Cloud |
Attributi API
Gli attributi API ti aiutano a gestire l'accesso in base ai dati forniti da un'API o un servizioGoogle Cloud specifico. Puoi utilizzare gli attributi API nei binding dei ruoli delle policy di autorizzazione.
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 confini di accesso alle credenziali per ridurre l'ambito delle credenziali di breve durata, puoi creare un confine di accesso alle credenziali che limiti 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 quando potrebbe essere necessario utilizzare gli attributi API in una condizione, consulta le seguenti pagine:
- Limitare le autorizzazioni durante l'elenco degli oggetti
- Impostazione di limiti per la concessione dei ruoli
Non tutti i servizi riconoscono gli attributi API. Le sezioni seguenti indicano quali servizi riconoscono ogni attributo API.
Funzioni per gli attributi API
Puoi utilizzare la seguente funzione per lavorare con gli attributi API:
Funzione | Descrizione | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
api.getAttribute(
V<T>
|
Recupera l'attributo API richiesto.
|
||||||||||||
hasOnly(
bool |
Verifica che un elenco contenga solo gli elementi consentiti o un sottoinsieme di
questi elementi. Puoi chiamare la funzione su un elenco restituito da
|
Attributi dell'API Cloud Storage
Cloud Storage fornisce il seguente attributo API.
Variabile attributo | storage.googleapis.com/objectListPrefix |
---|---|
Tipo di attributo | string |
Dettagli |
Per una richiesta di elenco
degli oggetti in un bucket, contiene il valore del parametro Per altri tipi di richieste, l'attributo non è definito. |
Servizi che riconoscono questo attributo | Cloud Storage |
Attributi dell'API IAM
IAM fornisce il seguente attributo API:
Variabile attributo | iam.googleapis.com/modifiedGrantsByRole |
---|---|
Tipo di attributo | list<string> |
Dettagli |
Per una richiesta di impostazione della policy di autorizzazione di una risorsa, questo attributo contiene i nomi dei ruoli dalle associazioni di ruoli che la richiesta modifica. Per altri tipi di richieste, l'attributo non è definito. |
Tipi di risorse che accettano questo attributo |
I seguenti tipi di risorse accettano 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 con scadenza, pianificato o di durata limitata alle risorse Google Cloud . Puoi utilizzare gli attributi data/ora nelle associazioni di ruolo dei criteri di autorizzazione.
Questo attributo è supportato per tutti i servizi e i tipi di risorse Google Cloud . Per scoprire come applicare le condizioni di data/ora alle risorse che non le supportano direttamente, consulta Supporto delle condizioni ereditate in questa pagina.
L'attributo request.time
contiene il timestamp della richiesta. Puoi
confrontare questo timestamp con un altro timestamp o con un periodo di tempo.
Le sezioni seguenti elencano le funzioni che puoi utilizzare per impostare condizioni in base a timestamp e durate.
Creare, confrontare e modificare timestamp e durate
Funzione o operatore | Descrizione |
---|---|
date(
Timestamp |
Converte una data da
|
duration(
Duration |
Converte un periodo di tempo da
|
timestamp(
Timestamp |
Converte un
|
, , , |
Confronta due valori
|
|
Aggiungi o sottrai un
|
Estrarre informazioni da un timestamp
Le funzioni in questa sezione consentono di estrarre informazioni da un timestamp, ad esempio il giorno della settimana in cui cade il timestamp.
In IAM Conditions, tutti i timestamp sono in formato UTC. Tuttavia, potresti voler estrarre informazioni in base a un fuso orario diverso. Ad esempio, potresti voler sapere se un timestamp UTC cade di lunedì nel fuso orario di Berlino, in Germania.
Per specificare un fuso orario diverso, passa il fuso orario alla funzione. Utilizza un nome o un offset UTC dal database dei fusi orari IETF. Ad esempio, puoi utilizzare Europe/Berlin
o +01:00
per il fuso orario dell'Europa centrale (CET).
Funzioni e operatori supportati | Descrizione |
---|---|
Timestamp.getDate(
int
|
Ottiene il giorno del mese da
|
Timestamp.getDayOfMonth(
int
|
Ottiene il giorno del mese da
|
Timestamp.getDayOfWeek(
int
|
Recupera il giorno della settimana da
|
Timestamp.getDayOfYear(
int
|
Ottiene il giorno dell'anno da
|
Timestamp.getFullYear(
int
|
Recupera l'anno da
|
Timestamp.getHours(
int
|
Ottiene l'ora del giorno da
Puoi combinare questa funzione con
|
Timestamp.getMilliseconds(
int
|
Restituisce il numero di millisecondi da
|
Timestamp.getMinutes(
int
|
Recupera il numero di minuti dopo l'ora da
|
Timestamp.getMonth(
int
|
Ottiene il mese dell'anno da
|
Timestamp.getSeconds(
int
|
Restituisce il numero di secondi da
|
, , , |
Confronta l'output di due funzioni in questa tabella. |
Attributi IP/porta di destinazione
L'attributo IP/porta di destinazione consente agli utenti di gestire l'accesso in base all'indirizzo IP e alla porta di destinazione interni per una richiesta. Puoi utilizzare gli attributi IP/porta di destinazione nei binding dei ruoli dei criteri di autorizzazione.
Ad esempio, un'istanza VM 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 l'utilizzo generale. Al contrario, l'indirizzo IP interno e la porta
10.0.0.1:22
potrebbero essere disponibili solo internamente per l'utilizzo amministrativo. Puoi utilizzare gli attributi IP/porta di destinazione per concedere diversi livelli di accesso in base all'indirizzo IP e alla porta interni.
Per saperne di più sull'inoltro TCP, consulta la documentazione di Identity-Aware Proxy.
attributo destination.ip
Variabile attributo | destination.ip |
---|---|
Tipo di attributo | string |
Operatori supportati | , |
Dettagli |
La variabile |
Esempi |
Restituisce destination.ip == "10.0.0.1"
Restituisce destination.ip != "10.0.0.1" |
Tipi di risorse supportati | Disponibile per le richieste che utilizzano Identity-Aware Proxy per accedere a un'istanza tunnel |
attributo destination.port
Variabile attributo | destination.port |
---|---|
Tipo di attributo | int |
Operatori supportati | , , , , , |
Dettagli |
La variabile |
Esempi |
Restituisce destination.port == 21
Restituisce destination.port < 3001 |
Tipi di risorse supportati | Disponibile per le richieste che utilizzano Identity-Aware Proxy per accedere a un'istanza tunnel |
Attributi delle regole di forwarding
Gli attributi della regola di forwarding consentono di specificare i tipi di regole di forwarding che un principal può creare. Ad esempio, puoi consentire a un principal di creare regole di inoltro per i bilanciatori del carico interni Google Cloud, che gestiscono il traffico proveniente dall'interno di una rete Google Cloud , ma non per i bilanciatori del carico esterni Google Cloud, che gestiscono il traffico proveniente da internet. Puoi utilizzare gli attributiregola di forwardingo nei binding dei ruoli dei criteri di autorizzazione.
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 URL.
Funzioni supportate
Funzione | Descrizione |
---|---|
compute.isForwardingRule
bool
|
Verifica se la richiesta sta creando una regola di inoltro.
|
compute.matchLoad
bool
|
Controlla se la richiesta interessa uno dei tipi specificati di schema di bilanciamento del carico. Per trovare l'identificatore di ogni schema di bilanciamento del carico, nonché ulteriori dettagli, consulta Utilizzo delle condizioni IAM sui bilanciatori del carico. Google Cloud
|
Tipi di risorse supportati
Questo attributo è disponibile per le richieste di creazione dei seguenti tipi di risorse:
Servizio | Tipi di risorse |
---|---|
Cloud Load Balancing | Regole di forwarding |
Cloud VPN | Regole di forwarding (globali e regionali) |
Compute Engine | Regole di forwarding (per forwarding del protocollo) |
Cloud Service Mesh1 | Regole di forwarding |
1 Utilizza gli attributi delle risorse per Compute Engine.
Attributo percorso/host dell'URL
L'attributo percorso/host URL consente agli utenti di gestire l'accesso in base al percorso
e all'host di una richiesta. Ad esempio, una condizione potrebbe specificare che
https://example.com
è l'applicazione principale accessibile da un dominio generale di
utenti, mentre https://hr.example.com/admin
viene utilizzato per accedere a una pagina dell'applicazione
in cui solo gli amministratori delle risorse umane possono accedere a questa parte.
Puoi utilizzare l'attributo percorso/host URL nei binding dei ruoli dei criteri di autorizzazione.
Attributo request.path
Variabile attributo | request.path |
---|---|
Tipo di attributo | string |
Funzioni e operatori supportati | , startsWith(), endsWith() |
Dettagli |
Non è consigliabile utilizzare l'operatore con questo
attributo. Anziché verificare la disuguaglianza, come in
request.path != "/admin" , controlla il prefisso dell'attributo, come
in !request.path.startsWith("/admin") . Se selezioni il
prefisso, proteggi anche i percorsi URL all'interno della gerarchia /admin , ad esempio /admin/payroll/ .
|
Esempi |
Restituisce request.path == "/admin" request.path == "/admin/payroll"
Restituisce request.path.startsWith("/admin")
Restituisce request.path.endsWith("/payroll.js") |
Tipi di risorse supportati |
|
attributo request.host
Variabile attributo | request.host |
---|---|
Tipo di attributo | string |
Funzioni e operatori supportati | , endsWith() |
Dettagli |
Non consigliamo di utilizzare la funzione .startsWith() o l'operatore
con questo attributo. Queste funzioni e
operatori potrebbero darti risultati inaspettati.
|
Esempi |
Restituisce request.host == "www.example.com" request.host == "hr.example.com"
Restituisce request.host.endsWith("example.com") |
Tipi di risorse supportati |
|
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, quindi scrivere un'espressione di condizione che fa riferimento al testo estratto.
Per utilizzare la funzione extract()
, fornisci un modello di estrazione, che
specifica la parte dell'attributo da estrarre. Ad esempio, se vuoi
estrarre un ID progetto dal nome risorsa di un'istanza VM di Compute Engine, puoi utilizzare il modello projects/{project}/
.
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 indichi chiaramente il valore che vuoi estrarre. Puoi utilizzare lettere maiuscole e minuscole da
A
aZ
, cifre numeriche e trattini bassi (_
).Nel modello
projects/{project}/
, l'identificatore èproject
.(Facoltativo) Un prefisso, che deve essere visualizzato prima della sottostringa da estrarre.
Nel modello
projects/{project}/
, il prefisso èprojects/
.(Facoltativo) Un suffisso, che deve essere visualizzato dopo la sottostringa da estrarre.
Nel modello
projects/{project}/
, il suffisso è/
.
La funzione extract()
estrae diverse parti dell'attributo in base al fatto che il modello di estrazione abbia un prefisso, un suffisso o entrambi:
Con prefisso | Con 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 prima della prima occorrenza del suffisso o una stringa vuota se non sono presenti caratteri prima del suffisso | |
I caratteri compresi tra la prima occorrenza del prefisso e la prima occorrenza successiva del suffisso o una stringa vuota se non sono presenti caratteri tra il prefisso e il suffisso |
Se specifichi un prefisso o un suffisso che non compare nell'attributo oppure se il suffisso compare solo prima del prefisso, la funzione extract()
restituisce una stringa vuota.
Gli esempi seguenti mostrano l'output di diversi modelli di estrazione. Questi esempi si riferiscono a un nome di 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 |
string vuoto |
{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= |
string vuoto |
/orders/order_date=2019-11-03/ |
string vuoto |
Se estrai una stringa che rappresenta una data, puoi utilizzare le
funzioni e gli operatori di data/ora in questa pagina per convertire il
valore estratto in un Timestamp
. Per visualizzare alcuni esempi, consulta la pagina
Configurazione dell'accesso basato sulle risorse.