Riferimento all'attributo per le condizioni IAM

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 serviziTrusted Cloud by S3NS riconoscono ciascun attributo.

Attributi risorsa

I seguenti attributi si riferiscono alla risorsa oggetto della richiesta.

Attributo Riepilogo utilizzo Servizi Trusted Cloud supportati
Attributo servizio risorse

Gestisci l'accesso in base al servizio utilizzato. Trusted Cloud

Puoi utilizzare questo attributo nei binding dei ruoli dei criteri di autorizzazione.

  • BigQuery
  • API BigQuery Reservation
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Google Kubernetes Engine
  • Resource Manager
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.

  • BigQuery
  • API BigQuery Reservation
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Google Kubernetes Engine
  • Resource Manager
Attributo nome risorsa

Gestisci l'accesso in base al nome della risorsa.

Puoi utilizzare questo attributo nei binding dei ruoli dei criteri di autorizzazione.

  • BigQuery
  • API BigQuery Reservation
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Google Kubernetes Engine
Tag risorsa

Gestisci l'accesso in base ai tag collegati alla risorsa.

Puoi utilizzare questo attributo nei seguenti punti:

  • Associazioni di ruoli dei criteri di autorizzazione
  • Regole di negazione del criterio di negazione

Tutti i Trusted Cloud servizi (vedi Supporto delle 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 Trusted Cloud supportati

Attributi API

Gestisci l'accesso in base ai dati forniti da un'API o un servizio Trusted Cloudspecifico.

Puoi utilizzare questo attributo nei binding dei ruoli dei criteri di autorizzazione.

  • Cloud Key Management Service
  • Cloud Storage
  • Compute Engine
  • Identity and Access Management
  • Resource Manager

Attributi data/ora

Imposta l'accesso con scadenza, pianificato o di durata limitata alle risorse Trusted Cloud .

Puoi utilizzare questi attributi nei binding dei ruoli dei criteri di autorizzazione.

Tutti i Trusted Cloud servizi (vedi Supporto delle condizioni ereditate)

Attributi della regola di inoltro

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 Trusted Cloud by S3NS , che gestiscono il traffico proveniente dall'interno di una rete Trusted Cloud , ma non per bilanciatori del carico Trusted Cloud esterni, che gestiscono il traffico proveniente da internet.

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 Trusted 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 servizioTrusted 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

string

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 true per le risorse Compute Engine:

resource.service == "compute.googleapis.com"
Servizi supportati
  • BigQuery
  • API BigQuery Reservation
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Google Kubernetes Engine
  • Resource Manager

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

string

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 true a meno che la risorsa non sia un'immagine Compute Engine:

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

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

(resource.type == "compute.googleapis.com/Image" ||
 resource.type == "compute.googleapis.com/Disk")
Tipi di risorse supportati
BigQuery
  • Set di dati
  • Modelli
  • Routine
  • Tabelle
API BigQuery Reservation
  • Compiti
  • Prenotazioni BI
  • Impegni di capacità
  • Località
  • Prenotazioni
Cloud Key Management Service
  • Versioni chiave di crittografia
  • Chiavi di crittografia
  • Chiavi automatizzate
  • Località
Cloud Logging
  • Bucket di log
  • Visualizzazioni log
Cloud SQL
  • Esecuzioni di backup
  • Istanze
Cloud Storage
  • Bucket
  • Cartelle gestite
  • Oggetti
Compute Engine
  • Servizi di backend (globali e regionali)
  • Firewall
  • Regole di forwarding (globali e regionali)
  • Immagini
  • Modelli di istanza
  • Istanze
  • Dischi permanenti (regionali e a livello di zona)
  • Snapshot
  • Proxy HTTP(S) di destinazione (globali e regionali)
  • Proxy SSL di destinazione
  • Proxy TCP di destinazione
Trusted Cloud by S3NS
  • Località1
Google Kubernetes Engine
  • Cluster
Firestore
  • Database
Resource Manager
  • Progetti

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() o endsWith() 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

string

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

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

La funzione startsWith() accetta il valore stringa letterale del prefisso da valutare rispetto a resource.name.

La funzione endsWith() accetta il valore letterale stringa del suffisso da valutare rispetto a resource.name.

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

Gli operatori e vengono utilizzati per il confronto con l'intero resource.name o con 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 di un 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
BigQuery
  • Set di dati
  • Modelli
  • Routine
  • Tabelle
API BigQuery Reservation
  • Compiti
  • Prenotazioni BI
  • Impegni di capacità
  • Località
  • Prenotazioni
Cloud Key Management Service
  • Chiavi di crittografia
  • Versioni chiave di crittografia
  • Chiavi automatizzate
Cloud Logging
  • Bucket di log
  • Visualizzazioni log
Cloud SQL
  • Esecuzioni di backup
  • Istanze
Cloud Storage
  • Bucket
  • Cartelle gestite
  • Oggetti
Compute Engine
  • Servizi di backend (globali e regionali)
  • Firewall
  • Regole di forwarding (globali e regionali)
  • Immagini
  • Modelli di istanza
  • Istanze
  • Dischi permanenti (regionali e a livello di zona)
  • Snapshot
  • Proxy HTTP(S) di destinazione (globali e regionali)
  • Proxy SSL di destinazione
  • Proxy TCP di destinazione
Google Kubernetes Engine
  • Cluster

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 permanente tagValues/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 breve prod.
  • 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 nomi myproject/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 Trusted 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 Trusted 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(
  keyName: string
)
  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().

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

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.hasTagKey().

Parametro
keyId: l'ID permanente della 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

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().

Parametri
  • 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.
  • valueShortName: Il nome breve del valore 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

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 resource.matchTag().

Parametri
  • keyId: l'ID permanente della chiave tag. Ad esempio, tagKeys/123456789012.
  • valueId: l'ID permanente del valore del 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 della richiesta ti consentono di creare condizioni che valutano i dettagli della richiesta, ad esempio i ruoli modificati da una richiesta o la data e l'ora della richiesta.

Attributi API

Gli attributi API ti aiutano a gestire l'accesso in base ai dati forniti da un'API o un servizioTrusted Cloud specifico. Puoi utilizzare gli attributi API nei binding dei ruoli delle policy di autorizzazione.

Per esempi di quando potrebbe essere necessario utilizzare gli attributi API in una condizione, consulta le seguenti pagine:

  • 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(
      attributeName: string,
      defaultValue: V<T>
    )
      V<T>

    Recupera l'attributo API richiesto.

    Parametri
    • attributeName: l'attributo API da ottenere. Per i valori supportati, consulta gli attributi dell'API Cloud Storage e gli 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 è 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 undefined.

    Esempio

    Restituisce uno dei seguenti valori:

    • Per le richieste di concessione o revoca di un ruolo, restituisce un elenco di ruoli modificati dalla richiesta.
    • Per tutti gli altri tipi di richieste, restituisce un elenco vuoto.
    api.getAttribute("iam.googleapis.com/modifiedGrantsByRole", [])
    hasOnly(
      items: list<T>
    )
      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 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 concederebbe o revocherebbe ruoli diversi da Editor Pub/Sub (roles/pubsub.editor) o Publisher Pub/Sub (roles/pubsub.publisher):

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

    Di seguito è riportato il risultato per diversi valori di richiesta:

    Ruoli concessi/revocati Risultato
    Nessuno

    true

    Se non vengono modificati ruoli, 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 inclusi nella lista consentita.

    roles/pubsub.editor

    true

    Il ruolo è nella lista consentita.

    roles/pubsub.editor
    roles/pubsub.publisher

    true

    Entrambi i ruoli sono nella lista consentita.

    roles/billing.admin

    false

    Il ruolo non è incluso nella lista consentita.

    roles/billing.admin
    roles/pubsub.editor

    false

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

    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 modifiedGrantsByRole nelle relative policy di autorizzazione:

    • Progetti
    • Cartelle
    • Organizzazioni
    Servizi che riconoscono questo attributo

    I seguenti servizi riconoscono l'attributo modifiedGrantsByRole:

    • Cloud Key Management Service
    • Cloud Storage
    • Compute Engine
    • Identity and Access Management
    • Resource Manager

    Attributo data/ora

    L'attributo data/ora viene utilizzato per impostare l'accesso con scadenza, pianificato o di durata limitata alle risorse Trusted 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 Trusted 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(
      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 a due cifre e DD è il giorno a due cifre. Il Timestamp risultante contiene la data specificata e l'ora 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 string a Duration.

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

    Crea una durata di 1 minuto e 30 secondi:

    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 è precedente al 12 aprile 2022 alle ore 00:00:00 UTC:

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

    Restituisce true se l'ora della richiesta è precedente o uguale a il 12 aprile 2022 alle ore 00:00:00 UTC:

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

    Restituisce true se l'ora della richiesta è successiva al 12 aprile 2022 alle ore 00:00:00 UTC:

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

    Restituisce true se l'ora della richiesta è successiva o uguale a il 12 aprile 2022 alle ore 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 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 ore 14:30 UTC del 12/04/2024:

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

    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(
      timeZone: string
    )
      int

    Ottiene il giorno del mese da Timestamp. Il valore utilizza l'indicizzazione basata su 1; il primo giorno del mese è 1.

    Parametro
    timeZone: il fuso orario per cui calcolare il 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

    Ottiene il giorno del mese da Timestamp. Il valore utilizza l'indicizzazione basata su zero; il primo giorno del mese è 0.

    Parametro
    timeZone: il fuso orario per cui calcolare il 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

    Recupera il giorno della settimana da Timestamp. Il valore utilizza l'indicizzazione basata su zero; ad esempio, domenica è 0.

    Parametro
    timeZone: il fuso orario per cui calcolare il 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

    Ottiene il giorno dell'anno da Timestamp. Il valore utilizza l'indicizzazione basata su zero; il primo giorno dell'anno è 0.

    Parametro
    timeZone: il fuso orario per cui calcolare il 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 da Timestamp.

    Parametro
    timeZone: il fuso orario per cui calcolare il 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

    Ottiene l'ora del giorno da Timestamp. Il valore utilizza l'indicizzazione basata su 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 cui calcolare il risultato. Il valore predefinito è UTC.
    Esempio

    Restituisce true se la richiesta viene inviata tra le 09:00 e le 17:00 di 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 basata su zero; i valori vanno da 0 a 999.

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

    Recupera il numero di minuti dopo l'ora da Timestamp. Il valore utilizza l'indicizzazione basata su zero; i valori vanno da 0 a 59.

    Parametro
    timeZone: il fuso orario per cui calcolare il risultato. Il valore predefinito è UTC.
    Esempio

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

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

    Ottiene il mese dell'anno da Timestamp. Il valore utilizza l'indicizzazione basata su zero; i valori vanno da 0 a 11.

    Parametro
    timeZone: il fuso orario per cui calcolare il 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 basata su zero; i valori vanno da 0 a 59.

    Parametro
    timeZone: il fuso orario per cui calcolare il risultato. Il valore predefinito è UTC.
    , , ,

    Confronta l'output di due funzioni in questa tabella.

    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 Trusted Cloud by S3NS, che gestiscono il traffico proveniente dall'interno di una rete Trusted Cloud , ma non per i bilanciatori del carico esterni Trusted 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 Trusted Cloud , come servizi di backend, proxy di destinazione, controlli di integrità e mappe URL.

    Funzioni supportate

    Funzione Descrizione
    compute.isForwardingRuleCreationOperation()   bool

    Verifica se la richiesta sta creando una regola di inoltro.

    Esempio
    Vedi l'esempio per compute.matchLoadBalancingSchemes().
    compute.matchLoadBalancingSchemes(
      schemes: list<string>
    )
      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. Trusted Cloud

    Parametro
    schemes: gli schemi di bilanciamento del carico che la richiesta può interessare.
    Esempio

    Restituisce uno dei seguenti valori:

    • Se la richiesta non crea una regola di forwarding, restituisce true.
    • Se la richiesta crea 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 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.

    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 a Z, 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/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 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.