Riferimento per gli attributi per le condizioni IAM

Questo argomento descrive gli attributi supportati in un'espressione della condizione.

Attributi di condizione supportati

Le seguenti sezioni riepilogano gli attributi supportati e indicano quali servizi Google Cloud riconoscono ogni attributo.

Attributi delle risorse

I seguenti attributi sono relativi alla risorsa oggetto della richiesta.

Attributo Riepilogo utilizzo Servizi Google Cloud supportati
Attributo del servizio di risorse Gestire l'accesso in base al servizio Google Cloud utilizzato.
  • Apigee
  • Autorizzazione binaria
  • Cloud Bigtable
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud Spanner
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Dataform
  • Identity-Aware Proxy
  • Pub/Sub Lite
  • Resource Manager
  • Secret Manager
Attributo del tipo di risorsa Gestisci l'accesso in base al tipo di risorsa.
Attributo del nome della risorsa Gestisci l'accesso in base al nome della risorsa.
  • Apigee
  • Autorizzazione binaria
  • Cloud Bigtable
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud Spanner
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Dataform
  • Pub/Sub Lite
  • Secret Manager
Tag delle risorse Gestisci l'accesso in base ai tag associati alla risorsa. Tutti i servizi Google Cloud (vedi Supporto per le condizioni ereditate)

Per ulteriori dettagli sugli attributi delle risorse, consulta la sezione Attributi delle risorse in questa pagina.

Attributi della richiesta

I seguenti attributi si riferiscono ai dettagli della richiesta.

Attributo Riepilogo utilizzo Servizi Google Cloud supportati

Attributo dei livelli di accesso

Gestisci l'accesso in base a livelli di accesso specifici.

Un livello di accesso è un attributo calcolato in base ad 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 onNetwork potrebbe richiedere che il dispositivo che effettua la richiesta provenga da un determinato intervallo di indirizzi IP. I livelli di accesso sono definiti dagli amministratori di un'organizzazione.

Identity-Aware Proxy

Attributi API

Gestisci l'accesso in base ai dati forniti da un servizio o un'API Google Cloud specifici.

  • Identity and Access Management
  • Gateway API
  • AutoML
  • Certificate Authority Service
  • Cloud Functions
  • API Cloud Healthcare
  • Cloud IoT
  • Cloud Key Management Service
  • Cloud Run
  • API Cloud Runtime Configuration
  • Cloud Storage
  • Compute Engine
  • Container Analysis
  • Dataproc
  • Earth Engine
  • Game Servers
  • Identity and Access Management
  • Identity-Aware Proxy
  • Managed Service for Microsoft Active Directory
  • Blocchi note gestiti dall'utente
  • Resource Manager
  • Secret Manager
  • Gestione servizio

Attributi di data/ora

Imposta un accesso espirato, pianificato o di durata limitata alle risorse Google Cloud.

Tutti i servizi Google Cloud (vedi Supporto per le condizioni ereditate)

Attributi IP/porta di destinazione

Gestisci l'accesso in base all'indirizzo IP e/o alla porta di destinazione di una richiesta Ad esempio, un'istanza di una macchina virtuale (VM) Compute Engine potrebbe esporre un IP esterno, come 10.0.0.2, ma la porta 22 potrebbe essere esposta solo per uso amministrativo.

Utilizzato per l'inoltro TCP di Identity-Aware Proxy.

Identity-Aware Proxy

Attributi della regola di forwarding

Specifica i tipi di regole di forwarding che un'entità può creare. Ad esempio, puoi consentire a un'entità di creare regole di forwarding per bilanciatori del carico Google Cloud interni, che gestiscono il traffico che proviene da una rete Google Cloud, ma non per i bilanciatori del carico Google Cloud esterni, che gestiscono il traffico che proviene da Internet.

Attributi percorso/host URL

Gestisci l'accesso in base al percorso dell'URL e/o all'host di una richiesta Ad esempio, una condizione potrebbe 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 dell'applicazione a cui possono accedere solo gli amministratori delle Risorse umane.

Identity-Aware Proxy

Per ulteriori dettagli sugli attributi di richiesta, consulta Attributi di richiesta in questa pagina.

Supporto per le condizioni ereditate

Alcuni tipi di risorse Google Cloud non consentono condizioni nei loro criteri consentiti. 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 i dettagli, consulta 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, quella parte della condizione non viene mai interpretata come concessione dell'accesso. Ad esempio, la condizione destination.port == 21 non concederà mai l'accesso a qualsiasi 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 risorse descritti in questa pagina per limitare l'ambito della condizione. Ad esempio, la condizione seguente restituisce true a tutti i tipi di risorse diversi 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 collegati a una risorsa. Quando una condizione controlla le chiavi e i valori dei tag, non può controllare altri attributi, inclusi il tipo e il servizio di risorsa.

Attributi delle risorse

In genere, gli attributi relativi a servizio, tipo di risorsa e nome della risorsa vengono utilizzati per modificare l'ambito di una concessione di accesso fornita dall'associazione dei ruoli. Quando un ruolo contiene autorizzazioni che si applicano a diversi attributi specifici delle risorse, le condizioni basate sulle risorse possono essere utilizzate per concedere un sottoinsieme di autorizzazioni del ruolo per tipi specifici o per servizi specifici.

Attributo resource.service

L'attributo resource.service consente di impostare una condizione in base al servizio Google 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 dei servizi delle risorse.

Variabile dell'attributo resource.service
Tipo di attributo

string

Per un elenco dei valori supportati, consulta la pagina Valori dei servizi delle risorse.

Operatori supportati ,
Dettagli Quando utilizzi l'attributo resource.type in condizioni, verifica la presenza di valori con uguaglianza esatta () o disuguaglianza esatta () con tale attributo. Altri confronti, come la ricerca di un prefisso o un suffisso, potrebbero fornirti risultati imprevisti.
Esempio

Restituisce true per le risorse Compute Engine:


resource.service == "compute.googleapis.com"
Servizi supportati
  • Apigee
  • Autorizzazione binaria
  • Cloud Bigtable
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud Spanner
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Dataform
  • Identity-Aware Proxy
  • Pub/Sub Lite
  • Resource Manager
  • Secret Manager

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 di tipo storage.googleapis.com/Object. Per un elenco dei valori supportati, consulta Valori dei tipi di risorse.

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, consulta la sezione Attributo resource.name in questa pagina.

Variabile dell'attributo resource.type
Tipo di attributo

string

Per un elenco dei valori supportati, consulta la pagina Valori dei tipi di risorse.

Operatori supportati ,
Dettagli Quando utilizzi l'attributo resource.type in condizioni, verifica la presenza di valori con uguaglianza esatta () o disuguaglianza esatta () con tale attributo. Altri confronti, come la ricerca di un prefisso o un suffisso, potrebbero fornirti risultati imprevisti.
Esempi

Restituisce true a meno che la risorsa non sia un'immagine di Compute Engine:


resource.type != "compute.googleapis.com/Image"

Restituisce true solo se la risorsa è un'immagine o un disco permanente di Compute Engine:


(resource.type == "compute.googleapis.com/Image" ||
 resource.type == "compute.googleapis.com/Disk")
Tipi di risorse supportati
Apigee
  • Attributi del prodotto API
  • Prodotti basati su API
  • Proxy API
  • Mappe chiave-valore proxy API
  • Revisioni del proxy API
  • Attributi dell'app dello sviluppatore
  • App per sviluppatori
  • Attributi sviluppatore
  • Sviluppatori
  • Piani tariffari
  • Revisioni del flusso condivise
  • Flussi condivisi
Autorizzazione binaria
  • Attestatori
  • Configurazioni di convalida continua
  • Criteri
Cloud Bigtable
  • Cluster
  • Istanze
  • Tables
Cloud Key Management Service
  • Versioni chiave di crittografia
  • Chiavi di crittografia
  • Keyring
Cloud Logging
  • Bucket di log
  • Visualizzazioni log
Cloud Spanner
  • Backup
  • Database
  • Istanze
Cloud SQL
  • Esecuzioni del backup
  • Istanze
Cloud Storage
  • Bucket
  • Oggetti
Compute Engine
  • Servizi di backend (globali e a livello di regione)
  • Firewall
  • Regole di forwarding (globali e a livello di regione)
  • Immagini
  • Modelli di istanza
  • Istanze
  • Dischi permanenti (a livello di regione e di zona)
  • Snapshot
  • Proxy HTTP(S) di destinazione (globali e a livello di regione)
  • Proxy SSL di destinazione
  • Proxy TCP di destinazione
Dataform
  • Risultati della compilazione
  • Località
  • Configurazioni di release
  • Repository
  • Configurazioni flusso di lavoro
  • Chiamate del flusso di lavoro
  • Aree di lavoro
Google Cloud
  • Località1
Firestore
  • Database
Identity-Aware Proxy
  • Tutti i servizi di backend e le app di App Engine
  • Tutte le risorse del tunnel
  • Tutte le zone del tunnel
  • Tutti i servizi web
  • Versioni del servizio app di App Engine
  • Servizi per app di App Engine
  • Servizi di backend di Compute Engine
  • Istanze tunnel
Pub/Sub Lite
  • Località
  • Sottoscrizioni
  • Argomenti
Resource Manager
  • Progetti
Secret Manager
  • Versioni secret
  • Secret

1 Cloud Key Management Service utilizza questo tipo di risorsa come risorsa padre delle risorse del keyring.

Attributo resource.name

L'attributo resource.name consente di impostare una condizione basata su tutto o parte del nome di una risorsa. Per un elenco dei formati dei nomi delle risorse, consulta la pagina Formato dei nomi delle risorse.

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 previsto. Se un ruolo contiene autorizzazioni per un tipo di risorsa che non fornisce l'attributo resource.name, devi assicurarti che tali 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, tranne i bucket e gli oggetti di Cloud Storage. Al contrario, per bucket e 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 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. Il controllo dell'attributo resource.type offre diversi vantaggi:

  • Limita il controllo resource.name al set di risorse appropriato. Ad esempio, se vuoi concedere l'accesso alle istanze di Compute Engine con un nome specifico, è opportuno escludere tutti i tipi di risorse diversi dalle istanze di Compute Engine.
  • Impedisce la modifica dell'ambito della condizione 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 guarda all'inizio del nome della risorsa, corrisponde a un bucket e agli oggetti in quel bucket. Se ne verificasse la uguaglianza, corrisponderà solo al bucket.

Non puoi utilizzare caratteri jolly come * per trovare corrispondenze con più nomi di risorse. Considera queste alternative:

  • Utilizza la funzione extract() per estrarre un valore dal nome della 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 informazioni dettagliate, vedi Estrazione di valori dagli attributi in questa pagina.

  • Utilizza la funzione startsWith() o endsWith() per scrivere una condizione che valuta l'inizio o la fine del nome della risorsa.

Variabile dell'attributo resource.name
Tipo di attributo

string

Ogni tipo di risorsa utilizza un formato specifico. Per un elenco dei formati, consulta Formato del nome della risorsa.

Funzioni e operatori supportati startsWith(), endsWith(), extract(), ,
Dettagli

resource.name contiene il nome risorsa relativa per la risorsa di destinazione nella richiesta. Il nome della risorsa relativa è un percorso URI senza una barra iniziale (/).

La funzione startsWith() utilizza il valore letterale della stringa prefisso per essere valutato in base a resource.name.

La funzione endsWith() utilizza il valore letterale della stringa suffisso per valutarlo rispetto a resource.name.

La funzione extract() utilizza un modello di estrazione per estrarre parte di resource.name. Per maggiori dettagli, consulta Estrazione di valori dai nomi delle risorse in questa pagina.

Gli operatori e servono per il confronto con l'intero resource.name o una parte estratta del resource.name.

Esempi

Restituisce true a meno che il nome della risorsa non identifichi un bucket Cloud Storage denominato secret-bucket-123:


resource.name != "projects/_/buckets/secret-bucket-123"

Restituisce true se il nome della risorsa inizia con il prefisso specificato, nel formato utilizzato dalle istanze VM di Compute Engine:


resource.name.startsWith("projects/project-123/zones/us-east1-b/instances/prod-")

Restituisce true se il nome della risorsa inizia con il prefisso specificato, nel formato utilizzato dai bucket Cloud Storage:


resource.name.startsWith("projects/_/buckets/my_bucket/objects/test-object-")

Restituisce true se il nome della risorsa termina con il suffisso specificato, ad esempio l'estensione del file di un oggetto Cloud Storage:


resource.name.endsWith(".jpg")

Restituisce il nome o il numero del progetto, se presente:


resource.name.extract("projects/{project}/")
Tipi di risorse supportati
Apigee
  • Attributi del prodotto API
  • Prodotti basati su API
  • Proxy API
  • Mappe chiave-valore proxy API
  • Revisioni del proxy API
  • Attributi dell'app dello sviluppatore
  • App per sviluppatori
  • Attributi sviluppatore
  • Sviluppatori
  • Piani tariffari
  • Revisioni del flusso condivise
  • Flussi condivisi
Autorizzazione binaria
  • Attestatori
  • Configurazioni di convalida continua
  • Criteri
Cloud Bigtable
  • Cluster
  • Istanze
  • Tables
Cloud Key Management Service
  • Chiavi di crittografia
  • Versioni chiave di crittografia
  • Keyring
Cloud Logging
  • Bucket di log
  • Visualizzazioni log
Cloud Spanner
  • Backup
  • Database
  • Istanze
Cloud SQL
  • Esecuzioni del backup
  • Istanze
Cloud Storage
  • Bucket
  • Oggetti
Compute Engine
  • Servizi di backend (globali e a livello di regione)
  • Firewall
  • Regole di forwarding (globali e a livello di regione)
  • Immagini
  • Modelli di istanza
  • Istanze
  • Dischi permanenti (a livello di regione e di zona)
  • Snapshot
  • Proxy HTTP(S) di destinazione (globali e a livello di regione)
  • Proxy SSL di destinazione
  • Proxy TCP di destinazione
Firestore
  • Database
Dataform
  • Risultati della compilazione
  • Località
  • Configurazioni di release
  • Repository
  • Configurazioni flusso di lavoro
  • Chiamate del flusso di lavoro
  • Aree di lavoro
Pub/Sub Lite
  • Località
  • Sottoscrizioni
  • Argomenti
Secret Manager
  • Versioni secret
  • Secret

Tag di risorse

Le funzioni per i tag delle risorse consentono di impostare una condizione in base ai tag associati o ereditati da una risorsa. Ad esempio, puoi impostare una condizione che conceda un ruolo solo per le risorse a cui è associato il tag env: prod. Per scoprire 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 e 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 permanente tagValues/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 e un valore tag potrebbe avere il nome breve prod.
  • Un nome con spazio dei nomi, che aggiunge l'ID numerico della tua organizzazione al nome breve di una chiave tag. Ad esempio, una chiave tag può avere il nome con spazio dei nomi 123456789012/env. Scopri come ottenere l'ID organizzazione.

Per indicazioni sulla scelta del tipo di identificatore da utilizzare nelle condizioni, consulta Definizioni e identificatori dei tag.

Le condizioni sui tag sono supportate per tutti i servizi e tutti i tipi di risorse Google Cloud. Per scoprire come applicare le condizioni dei tag a risorse che non li supportano direttamente, consulta Assistenza per le condizioni ereditate in questa pagina.

Puoi utilizzare le seguenti funzioni per impostare le condizioni in base ai tag:

Funzione Descrizione
resource.hasTagKey(
  keyName: string
)
  bool

Verifica se la risorsa per la richiesta ha un tag con la chiave specificata. La chiave tag viene cercata tramite il relativo nome con spazio dei nomi. Per verificare la presenza di una chiave tag utilizzando il relativo ID permanente, utilizza la funzione resource.hasTagKeyId().

Parametro
keyName: il nome con spazio dei nomi della chiave tag, con l'ID numerico dell'organizzazione e una barra come prefisso. Ad esempio, 123456789012/env.
Esempio

Restituisce true se la risorsa per la richiesta ha un tag con la chiave env:


resource.hasTagKey('123456789012/env')
resource.hasTagKeyId(
  keyId: string
)
  bool

Verifica se la risorsa per la richiesta ha un tag con la chiave specificata. La chiave tag viene cercata tramite il relativo ID permanente. Per verificare la presenza di una chiave tag utilizzando il nome con spazio dei nomi, utilizza la funzione resource.hasTagKey().

Parametro
keyId: l'ID permanente per la chiave tag. Ad esempio, tagKeys/123456789012.
Esempio

Restituisce true se la risorsa per la richiesta ha un tag con la chiave tagKeys/123456789012:


resource.hasTagKeyId('tagKeys/123456789012')
resource.matchTag(
  keyName: string,
  valueShortName: string
)
  bool

Verifica se la risorsa per la richiesta ha un tag con la chiave e il valore specificati. Il nome della chiave viene cercato dal nome con spazio dei nomi e il valore tramite il nome breve. Per verificare una chiave e un valore tag utilizzando i relativi ID permanenti, utilizza la funzione resource.matchTagId().

Parametri
  • keyName: il nome con spazio dei nomi per la chiave tag, con l'ID numerico dell'organizzazione e una barra come prefisso. Ad esempio, 123456789012/env.
  • valueShortName: il nome breve del valore del tag. Ad esempio, prod.
Esempio

Restituisce true se la risorsa per la richiesta ha un tag con la chiave 123456789012/env e il valore prod:


resource.matchTag('123456789012/env', 'prod')
resource.matchTagId(
  keyId: string,
  valueId: string
)
  bool

Verifica se la risorsa per la richiesta ha un tag con la chiave e il valore specificati. La chiave e il valore vengono cercati dai loro ID permanenti. Per verificare la presenza di una chiave tag utilizzando il suo nome con spazio dei nomi e un valore utilizzando il suo nome breve, utilizza la funzione resource.matchTag().

Parametri
  • keyId: l'ID permanente per la chiave tag. Ad esempio, tagKeys/123456789012.
  • valueId: l'ID permanente per il valore tag. Ad esempio, tagValues/567890123456.
Esempio

Restituisce true se la risorsa per la richiesta ha un tag con la chiave tagKeys/123456789012 e il valore tagValues/567890123456:


resource.matchTagId('tagKeys/123456789012', 'tagValues/567890123456')

Attributi della richiesta

Gli attributi di richiesta consentono di creare condizioni per la valutazione dei dettagli della 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 URL previsto (per IAP).

Attributo dei livelli di accesso

L'attributo livelli di accesso consente agli utenti di impostare una condizione che richiede che una richiesta soddisfi uno o più livelli di accesso per poter essere autorizzata.

L'attributo livelli di accesso deriva da attributi della richiesta, come 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 intervallo di indirizzi IP specifico. 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 di tunnel o per accedere a un'applicazione web in esecuzione su servizi di backend App Engine o Compute Engine. Più specificamente, l'attributo livelli di accesso è disponibile solo per le richieste che verificano 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 singola autorizzazione, iap.tunnelInstances.accessViaIAP.

  • Utente dell'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 che contenga queste autorizzazioni. Il ruolo personalizzato non deve contenere altre autorizzazioni.

Attributo request.auth.access_levels

Variabile dell'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 in:


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 true se la richiesta soddisfa il livello di accesso CorpNet:


"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 di tunnel o a un'applicazione web in esecuzione su App Engine

Attributi API

Gli attributi API ti aiutano a gestire l'accesso in base ai dati forniti da un servizio o un'API Google Cloud specifici.

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 dell'accesso alle credenziali per limitare le credenziali di breve durata, puoi creare un limite di accesso alle credenziali che limita le autorizzazioni per elencare gli oggetti controllando 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:

Non tutti i servizi riconoscono gli attributi API. Le seguenti sezioni 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(
  attributeName: string,
  defaultValue: V<T>
)
  V<T>

Visualizza l'attributo API richiesto.

Parametri
  • attributeName: l'attributo API da ottenere. Per i valori supportati, vedi attributi dell'API Cloud Storage e attributi dell'API IAM in questa pagina.
  • defaultValue: il valore predefinito (V) da utilizzare se l'attributo API non è disponibile. Il valore V è di tipo T, dove T è dello 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 undefined.

Esempio

Restituisce uno dei seguenti valori:

  • Per le richieste a elencare oggetti in un bucket Cloud Storage, se la richiesta include il parametro prefix, la funzione restituisce il suo valore.
  • Per le richieste a elencare gli oggetti che omettono il parametro prefix, e per tutti gli altri tipi di richieste, la funzione restituisce una stringa vuota.

api.getAttribute("storage.googleapis.com/objectListPrefix", "")
hasOnly(
  items: list<T>
)
  bool

Verifica che un elenco contenga solo gli elementi consentiti o un sottoinsieme di questi. Puoi chiamare la funzione in un elenco restituito da api.getAttribute().

Parametro
items: un elenco di elementi di tipo T. Ogni elemento è un valore che l'attributo API può contenere.
Esempio

Verifica se la richiesta concede o revoca qualsiasi ruolo diverso dall'editor Pub/Sub (roles/pubsub.editor) o dall'editore Pub/Sub (roles/pubsub.publisher):


api.getAttribute('iam.googleapis.com/modifiedGrantsByRole', [])
    .hasOnly(['roles/pubsub.editor', 'roles/pubsub.publisher'])

Di seguito viene mostrato il risultato per i diversi valori della richiesta:

Ruoli concessi/revocati Risultato
Nessuno

true

Se non viene modificato alcun ruolo, api.getAttribute() restituisce il valore predefinito. Per questo attributo, il valore predefinito è sempre un elenco vuoto. Per definizione, un elenco vuoto non contiene valori che non sono presenti nella lista consentita.

roles/pubsub.editor

true

Il ruolo è incluso nella lista consentita.

roles/pubsub.editor
roles/pubsub.publisher

true

Entrambi i ruoli sono nella lista consentita.

roles/billing.admin

false

Il ruolo non è presente nella lista consentita.

roles/billing.admin
roles/pubsub.editor

false

Un ruolo è incluso nella lista consentita, mentre l'altro no.

Attributi dell'API Cloud Storage

Cloud Storage fornisce il seguente attributo API.

Variabile dell'attributo storage.googleapis.com/objectListPrefix
Tipo di attributo string
Dettagli

Per una richiesta di elenco di oggetti in un bucket, contiene il valore del parametro prefix dalla richiesta. Se la richiesta omette il parametro prefix, l'attributo non è definito.

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 dell'attributo iam.googleapis.com/modifiedGrantsByRole
Tipo di attributo list<string>
Dettagli

Per una richiesta di impostazione del criterio di autorizzazione di una risorsa, questo attributo contiene i nomi dei ruoli delle associazioni di ruoli modificate dalla richiesta.

Per altri tipi di richieste, l'attributo non è definito.

Tipi di risorse che accettano questo attributo

I seguenti tipi di risorse accettano le condizioni con l'attributo modifiedGrantsByRole nei loro criteri di autorizzazione:

  • Progetti
  • Cartelle
  • Organizzazioni
Servizi che riconoscono questo attributo

I seguenti servizi riconoscono l'attributo modifiedGrantsByRole:

  • Gateway API
  • AutoML
  • Certificate Authority Service
  • Cloud Functions
  • API Cloud Healthcare
  • Cloud IoT
  • Cloud Key Management Service
  • Cloud Run
  • API Cloud Runtime Configuration
  • Cloud Storage
  • Compute Engine
  • Container Analysis
  • Dataproc
  • Earth Engine
  • Game Servers
  • Identity and Access Management
  • Identity-Aware Proxy
  • Managed Service for Microsoft Active Directory
  • Blocchi note gestiti dall'utente
  • Resource Manager
  • Secret Manager
  • Gestione servizio

Attributo data/ora

L'attributo data/ora viene utilizzato per impostare l'accesso espirato, pianificato o per una durata limitata alle risorse Google Cloud.

Questo attributo è supportato per tutti i servizi e tutti i tipi di risorse di Google Cloud. Per informazioni su come applicare le condizioni di data/ora alle risorse che non le supportano direttamente, consulta la pagina Assistenza per le condizioni ereditate in questa pagina.

L'attributo request.time contiene il timestamp della richiesta. Puoi confrontare questo timestamp con un altro.

Le seguenti sezioni elencano le funzioni che puoi utilizzare per impostare le condizioni in base a timestamp e durate.

Creare, confrontare e modificare timestamp e durate

Funzione o operatore Descrizione
date(
  value: string
)
  Timestamp

Converte una data da string a Timestamp.

Parametro
value: una data nel formato YYYY-MM-DD, dove YYYY è l'anno, MM è il mese di due cifre e DD è il giorno di due cifre. Il risultato Timestamp contiene la data e l'ora specificate 00:00:00.000 UTC.
Esempio

Crea un Timestamp che rappresenta la data 2023-02-01 e l'ora 00:00:00.000 UTC:


date("2023-02-01")
duration(
  value: string
)
  Duration

Converte un periodo di tempo da un elemento string a un elemento Duration.

Parametro
value: un Duration in secondi, seguito da s.
Esempi

Crea una durata che rappresenta 1,5 minuti:


duration("90s")

Crea una durata che rappresenta 30 giorni:


duration("2592000s")
timestamp(
  value: string
)
  Timestamp

Converte un string in un Timestamp.

Parametro

value: un timestamp UTC conforme a RFC 3339.

Esempio

Crea un timestamp che rappresenta il 12 aprile 2023 alle 23:20:50.52 in UTC:


timestamp("2023-04-12T23:20:50.52Z")
, , ,

Confronta due valori Timestamp.

Esempi

Restituisce true se l'ora della richiesta è prima del 12 aprile 2022, alle 00:00:00 UTC:


request.time < timestamp("2022-04-12T00:00:00.00Z")

Restituisce true se l'ora della richiesta è prima o uguale a 12 aprile 2022, alle 00:00:00 UTC:


request.time <= timestamp("2022-04-12T00:00:00.00Z")

Restituisce true se l'ora della richiesta è dopo il 12 aprile 2022, alle 00:00:00 UTC:


request.time > timestamp("2022-04-12T00:00:00.00Z")

Restituisce true se l'ora della richiesta è successiva o uguale a 12 aprile 2022, alle 00:00:00 UTC:


request.time >= timestamp("2022-04-12T00:00:00.00Z")
  • timestamp + duration   Timestamp
  • timestamp - duration   Timestamp

Aggiungi o sottrai un Duration da un Timestamp.

Esempi

Restituisce la Timestamp che cade 30 minuti dopo le 14:30:00 UTC del 12/04/2024:


timestamp("2024-04-12T14:30:00.00Z") + duration("1800s")

Restituisce il Timestamp che cade 60 giorni prima delle 14:30:00 UTC del 12/04/2024:


timestamp("2024-04-12T14:30:00.00Z") - duration("5184000s")

Estrae informazioni da un timestamp

Le funzioni di questa sezione consentono di estrarre informazioni da un timestamp, ad esempio il giorno della settimana in cui compare il timestamp.

In condizioni IAM, tutti i timestamp sono in UTC. Tuttavia, potresti voler estrarre informazioni in base a un fuso orario diverso. Ad esempio, potresti voler sapere se un timestamp UTC rientra di lunedì nel fuso orario di Berlino, Germania.

Per specificare un fuso orario diverso, inseriscilo nella funzione. Usa un nome o un offset UTC dal database dei fusi orari dell'IETF. Ad esempio, puoi utilizzare Europe/Berlin o +01:00 per l'ora dell'Europa centrale (CET).

Funzioni e operatori supportati Descrizione
Timestamp.getDate(
  timeZone: string
)
  int

Restituisce il giorno del mese da Timestamp. Il valore utilizza l'indicizzazione in base uno; il primo giorno del mese è 1.

Parametro
timeZone: il fuso orario per il calcolo del risultato. Il valore predefinito è UTC.
Esempio

Restituisce true se la richiesta viene inviata dopo il 15° giorno del mese in UTC:


request.time.getDate() > 15
Timestamp.getDayOfMonth(
  timeZone: string
)
  int

Restituisce il giorno del mese da Timestamp. Il valore utilizza l'indicizzazione con zero zero; il primo giorno del mese è 0.

Parametro
timeZone: il fuso orario per il calcolo del risultato. Il valore predefinito è UTC.
Esempio

Restituisce true se la richiesta viene inviata dopo il 15° giorno del mese in UTC:


request.time.getDayOfMonth() > 14
Timestamp.getDayOfWeek(
  timeZone: string
)
  int

Restituisce il giorno della settimana da Timestamp. Il valore utilizza l'indicizzazione con zero zero, ad esempio domenica è 0.

Parametro
timeZone: il fuso orario per il calcolo del risultato. Il valore predefinito è UTC.
Esempio

Restituisce true se la richiesta viene inviata tra lunedì e venerdì a Berlino, Germania:


request.time.getDayOfWeek("Europe/Berlin") > 0 &&
    request.time.getDayOfWeek("Europe/Berlin") < 6
Timestamp.getDayOfYear(
  timeZone: string
)
  int

Restituisce il giorno dell'anno da Timestamp. Il valore utilizza l'indicizzazione con base zero; il primo giorno dell'anno è 0.

Parametro
timeZone: il fuso orario per il calcolo del risultato. Il valore predefinito è UTC.
Esempio

Restituisce true se la richiesta viene inviata durante i primi 5 giorni dell'anno a Mountain View, California:


request.time.getDayOfYear("America/Los_Angeles") >= 0 &&
    request.time.getDayOfYear("America/Los_Angeles") < 5
Timestamp.getFullYear(
  timeZone: string
)
  int

Recupera l'anno dal Timestamp.

Parametro
timeZone: il fuso orario per il calcolo del risultato. Il valore predefinito è UTC.
Esempio

Restituisce true se la richiesta viene inviata durante l'anno 2023 a Mountain View, California:


request.time.getFullYear("America/Los_Angeles") == 2023

Restituisce true se la richiesta viene inviata durante l'anno 2022 in UTC:


request.time.getFullYear() == 2022
Timestamp.getHours(
  timeZone: string
)
  int

Visualizza l'ora del giorno da Timestamp. Il valore utilizza l'indicizzazione con base zero; i valori vanno da 0 a 23.

Puoi combinare questa funzione con getDayofWeek() per concedere l'accesso solo durante l'orario di lavoro consentito nella tua giurisdizione.

Parametro
timeZone: il fuso orario per il calcolo del risultato. Il valore predefinito è UTC.
Esempio

Restituisce true se la richiesta viene inviata tra le 09:00 (9:00) e le 17:00 (17:00) in un giorno feriale a Berlino, Germania:


request.time.getDayOfWeek("Europe/Berlin") >= 1 &&
    request.time.getDayOfWeek("Europe/Berlin") <= 5 &&
    request.time.getHours("Europe/Berlin") >= 9 &&
    request.time.getHours("Europe/Berlin") <= 17
Timestamp.getMilliseconds(
  timeZone: string
)
  int

Restituisce il numero di millisecondi da Timestamp. Il valore utilizza l'indicizzazione con base zero; i valori vanno da 0 a 999.

Parametro
timeZone: il fuso orario per il calcolo del risultato. Il valore predefinito è UTC.
Timestamp.getMinutes(
  timeZone: string
)
  int

Visualizza il numero di minuti successivi all'ora da Timestamp. Il valore utilizza l'indicizzazione con base zero; i valori vanno da 0 a 59.

Parametro
timeZone: il fuso orario per il calcolo del risultato. Il valore predefinito è UTC.
Esempio

Restituisce true se la richiesta viene inviata alle 09:30 o dopo le 09:30 a Berlino, Germania:


request.time.getHours("Europe/Berlin") >= 9 &&
    request.time.getMinutes("Europe/Berlin") >= 30
Timestamp.getMonth(
  timeZone: string
)
  int

Recupera il mese dell'anno da Timestamp. Il valore utilizza l'indicizzazione con base zero; i valori vanno da 0 a 11.

Parametro
timeZone: il fuso orario per il calcolo del risultato. Il valore predefinito è UTC.
Esempio

Restituisce true se la richiesta viene inviata durante il mese di aprile a Mountain View, California:


request.time.getMonth("America/Los_Angeles") == 3
Timestamp.getSeconds(
  timeZone: string
)
  int

Restituisce il numero di secondi da Timestamp. Il valore utilizza l'indicizzazione con base zero; i valori vanno da 0 a 59.

Parametro
timeZone: il fuso orario per il calcolo del risultato. Il valore predefinito è UTC.
, , ,

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/o alla porta interni 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 uso generale. Al contrario, l'indirizzo IP interno e la porta 10.0.0.1:22 potrebbero essere disponibili solo per uso amministrativo. Puoi utilizzare gli attributi IP/porta di destinazione per concedere livelli di accesso diversi in base all'indirizzo IP e alla porta interni.

Per ulteriori informazioni sull'inoltro TCP, consulta la documentazione di Identity-Aware Proxy.

Attributo destination.ip

Variabile dell'attributo destination.ip
Tipo di attributo string
Operatori supportati ,
Dettagli

La variabile destination.ip identifica un indirizzo IP interno in formato IPv4.

Esempi

Restituisce true se l'indirizzo IP di destinazione è 10.0.0.1:


destination.ip == "10.0.0.1"

Restituisce true, a meno che l'indirizzo IP di destinazione sia 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 del tunnel

Attributo destination.port

Variabile dell'attributo destination.port
Tipo di attributo int
Operatori supportati , , , , ,
Dettagli

La variabile destination.port identifica un numero di porta TCP interno.

Esempi

Restituisce true if the destination port is 21:


destination.port == 21

Returns true if the destination port is less than 3001:


destination.port < 3001
Tipi di risorse supportati Disponibile per le richieste che utilizzano Identity-Aware Proxy per accedere a un'istanza del tunnel

Attributi della regola di forwarding

Gli attributi delle regola di forwarding consentono di specificare i tipi di regole di forwarding che un'entità può creare. Ad esempio, puoi consentire a un'entità di creare regole di forwarding per bilanciatori del carico Google Cloud interni, che gestiscono il traffico che proviene da una rete Google Cloud, ma non per i bilanciatori del carico Google Cloud esterni, che gestiscono il traffico che proviene da Internet.

Per Cloud Load Balancing, gli attributi delle regola di forwarding non influiscono sulla capacità di creare altri componenti di un bilanciatore del carico Google Cloud, come i servizi di backend, i proxy di destinazione, i controlli di integrità e le mappe URL.

Funzioni supportate

Funzione Descrizione
compute.isForwardingRuleCreationOperation()   bool

Verifica se la richiesta sta creando una regola di forwarding.

Esempio
Vedi l'esempio per compute.matchLoadBalancingSchemes().
compute.matchLoadBalancingSchemes(
  schemes: list<string>
)
  bool

Verifica se la richiesta influisce su uno dei tipi di schema di bilanciamento del carico specificati. Per trovare l'identificatore per ogni schema di bilanciamento del carico, nonché per altri dettagli, consulta la pagina relativa all'utilizzo delle condizioni IAM sui bilanciatori del carico di Google Cloud.

Parametro
schemes: gli schemi di bilanciamento del carico che la richiesta è interessata.
Esempio

Restituisce uno dei seguenti valori:

  • Se la richiesta non crea una regola di forwarding, restituisce true.
  • Se la richiesta sta creando una regola di forwarding, restituisce true solo se la regola di forwarding influisce su uno schema di bilanciamento del carico INTERNAL, INTERNAL_MANAGED o INTERNAL_SELF_MANAGED.

!compute.isForwardingRuleCreationOperation() || (
  compute.isForwardingRuleCreationOperation() &&
  compute.matchLoadBalancingSchemes([
    'INTERNAL', 'INTERNAL_MANAGED', 'INTERNAL_SELF_MANAGED'
  ])
)

Tipi di risorse supportati

Questo attributo è disponibile per le richieste relative alla creazione dei seguenti tipi di risorse:

Servizio Tipi di risorse
Cloud Load Balancing Regole di forwarding
Cloud VPN Regole di forwarding (globali e a livello di regione)
Compute Engine Regole di forwarding (per inoltro protocollo)
Traffic Director1 Regole di forwarding

1 Utilizza gli attributi di 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 potrebbe 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 dell'applicazione in cui solo gli amministratori delle Risorse umane possono accedere a questa parte.

Attributo request.path

Variabile dell'attributo request.path
Tipo di attributo string
Funzioni e operatori supportati , startsWith(), endsWith()
Dettagli Sconsigliamo di utilizzare l'operatore con questo attributo. Invece di controllare la disuguaglianza, come in request.path != "/admin", controlla il prefisso dell'attributo, ad esempio !request.path.startsWith("/admin"). Se selezioni il prefisso, proteggi anche i percorsi degli URL all'interno della gerarchia /admin, ad esempio /admin/payroll/.
Esempi

Restituisce true se il percorso della richiesta è uguale al percorso dell'URL specificato:


request.path == "/admin"

request.path == "/admin/payroll"

Restituisce true se il percorso di richiesta inizia con il percorso dell'URL specificato:


request.path.startsWith("/admin")

Restituisce true se il percorso di richiesta termina con il percorso dell'URL specificato:


request.path.endsWith("/payroll.js")
Tipi di risorse supportati

Versioni del servizio di 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 dell'attributo request.host
Tipo di attributo string
Funzioni e operatori supportati , endsWith()
Dettagli Non è consigliabile utilizzare la funzione .startsWith() o l'operatore con questo attributo. Queste funzioni e gli operatori potrebbero generare risultati imprevisti.
Esempi

Restituisce true se il nome host è uguale al valore specificato:


request.host == "www.example.com"

request.host == "hr.example.com"

Restituisce true se il nome host termina con il valore specificato:


request.host.endsWith("example.com")
Tipi di risorse supportati

Versioni del servizio di app Identity-Aware Proxy (App Engine)

Disponibile per le richieste che utilizzano Identity-Aware Proxy per accedere a una versione del servizio di app.

Estrai i valori dagli attributi

Puoi utilizzare la funzione extract() per estrarre un valore da un attributo. Ad esempio, puoi estrarre una parte arbitraria di un nome risorsa, quindi scrivere un'espressione di condizione che faccia 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 della 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 chiarisca il valore che vuoi estrarre. Puoi utilizzare lettere maiuscole e minuscole tra A e Z, cifre numeriche e trattini bassi (_).

    Nel modello projects/{project}/, l'identificatore è project.

  • (Facoltativo) Un prefisso, che deve essere visualizzato prima della sottostringa per l'estrazione.

    Nel modello projects/{project}/, il prefisso è projects/.

  • (Facoltativo) Un suffisso, che deve essere visualizzato dopo la sottostringa per essere estratto.

    Nel modello projects/{project}/, il suffisso è /.

La funzione extract() estrae parti diverse dell'attributo a seconda che il modello di estrazione abbia un prefisso, un suffisso o entrambi:

Ha un 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 prima della 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 una stringa vuota.

I seguenti esempi mostrano l'output di diversi modelli di estrazione. Questi esempi fanno riferimento a un nome risorsa per un oggetto Cloud Storage, projects/_/buckets/acme-orders-aaa/objects/data_lake/orders/order_date=2019-11-03/aef87g87ae0876:

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/order_date=2019-11-03/aef87g87ae0876
/orders/{none}/order_date= string vuoto
/orders/order_date=2019-11-03/{id}/data_lake string vuoto

Se estrai una stringa che rappresenta una data, puoi utilizzare le funzioni e gli operatori data/ora in questa pagina per convertire il valore estratto in un elemento Timestamp. Per esempi, consulta Configurazione dell'accesso basato sulle risorse.