Tag e accesso condizionale

In questa pagina viene descritto come utilizzare i tag con Identity and Access Management (IAM) per aiutarti e controllare l'accesso alle tue risorse Google Cloud.

Per scoprire di più sui tag, consulta la Panoramica dei tag.

Panoramica dei tag

Un tag è una coppia chiave-valore collegata a una risorsa Google Cloud. Puoi condizionare i ruoli IAM oppure negare condizionalmente le autorizzazioni IAM in base a se una risorsa ha un tag specifico.

Le risorse ereditano i valori dei tag dall'organizzazione principale. cartelle e progetto. Di conseguenza, puoi utilizzare i tag per gestire l'accesso a qualsiasi risorsa Google Cloud.

Di seguito sono riportati alcuni casi d'uso comuni per la gestione dell'accesso con i tag:

  • Ambienti di sviluppo, gestione temporanea e produzione. Ad esempio, potresti aggiungere i tag environment: dev all'ambiente di sviluppo e environment: prod all'ambiente di produzione.
  • Tipi di componenti. Ad esempio, puoi aggiungere i tag component: frontend alle risorse di frontend e component: batch alle risorse per l'elaborazione collettiva.
  • Nomi dei progetti. Ad esempio, se il tuo team sta lavorando a un progetto con il nome in codice Atlas, puoi aggiungere il tag project: atlas alle risorse di sviluppo del team.

Definizioni e identificatori dei tag

Prima di associare i tag alle risorse, devi definire la chiave per il tag, nonché i valori consentiti dal tag. Puoi creare queste definizioni in a livello di organizzazione o di progetto. Puoi utilizzare Resource Manager per gestire le definizioni dei tag. Per scoprire di più, consulta la sezione Creare e definire un nuovo tag.

Ogni chiave e valore del tag ha diversi identificatori:

  • Un ID permanente, che è univoco a livello globale e non può mai essere riutilizzato. Ad esempio, un tag potrebbe avere l'ID permanente tagKeys/123456789012, mentre un valore 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 di tag potrebbe avere il nome breve prod.
  • Un nome con spazi dei nomi, che aggiunge l'ID numerico dell'organizzazione o l'ID del progetto alla il nome breve di una chiave tag. Ad esempio, una chiave del tag creata per un'organizzazione potrebbe avere il nome nel nome nello spazio dei nomi 123456789012/env. Per scoprire come ottenere l'ID organizzazione, consulta Recupero 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 Identificazione dei progetti.

Come spiegato in questa pagina, dopo aver associato i tag a una risorsa, puoi scrivere condizioni per concedere l'accesso in base ai tag. Per scrivere una condizione, devi scegliere il tipo di identificatore da utilizzare nella condizione. Per scegliere l'opzione, segui queste linee guida:

  • Per fare esperimenti con i tag, ti consigliamo di utilizzare il nome con spazio dei nomi (per le chiavi) e il nome breve (per i valori). Questi identificatori sono più facili da comprendere e ricordare, soprattutto all'inizio.
  • Se gestisci la configurazione in modo dichiarativo, utilizzando uno strumento come Terraform, ti consigliamo di utilizzare il nome con spazio dei nomi (per le chiavi) e il nome breve (per i valori). Puoi riutilizzare questi identificatori nel tempo, il che significa che strumento dichiarativo può eliminarli e ricrearli, mentre le condizioni continuare a lavorare.

    Questo approccio presenta un compromesso: supponiamo di eliminare una chiave o un valore di tag, e poi creare una nuova chiave o valore con lo stesso nome, ma con un significato diverso. Se la condizione si riferisce al nome con spazio dei nomi o al nome breve, continua ad applicarsi alla nuova chiave o al nuovo valore.

    In alcuni casi, questo comportamento potrebbe causare l'accesso dei principali a risorse che non avevi inteso concedere.

  • Per ridurre al minimo i rischi,valuta la possibilità di utilizzare ID permanenti, che non possono mai essere riutilizzate.

    Ecco perché gli ID permanenti contribuiscono a ridurre al minimo i rischi: supponiamo che tu elimini una chiave o un valore del tag e poi crei una nuova chiave o un nuovo valore con lo stesso nome, ma con un significato diverso. Se la condizione fa riferimento all'ID permanente, non si applica alla nuova chiave o al nuovo valore. Di conseguenza, le entità hanno un potrebbe ottenere un accesso che non era previsto.

    Uno svantaggio è che, se elimini e ricrei chiavi e valori e vuoi mantenere l'accesso dei principali, devi anche aggiornare i criteri di autorizzazione in modo che facciano riferimento ai nuovi ID permanenti.

Accesso alle risorse con tag

Puoi utilizzare i tag con condizioni IAM per concedere un ruolo in modo condizionale, a seconda dei tag associati o ereditati da un risorsa. Se una condizione ha valore true, l'accesso viene concesso; altrimenti, l'accesso non viene concesso. Per saperne di più, consulta panoramica delle condizioni IAM.

Le sezioni seguenti mostrano esempi di espressioni di condizione che controllano i tag di una risorsa. La condizione chiama funzioni diverse a seconda che viene controllato l'ID permanente o il nome breve. Per scoprire di più in merito consulta Tag risorsa.

Condizioni che utilizzano ID permanenti

Questa condizione concede un ruolo nelle risorse con il tag tagKeys/123456789012: tagValues/567890123456:

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

Questa condizione assegna un ruolo alle risorse che hanno qualsiasi tag con la chiavetagKeys/123456789012, indipendentemente dal relativo valore:

resource.hasTagKeyId('tagKeys/123456789012')

Questa condizione concede un ruolo nelle risorse che hanno sia il tag tagKeys/123456789012: tagValues/567890123456 e tutti i tag che utilizzano il parametro chiave tagKeys/987654321098:

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

Condizioni che utilizzano nomi con spazio dei nomi e nomi brevi

Questa condizione concede un ruolo nelle risorse con il tag env: prod, che indica che la risorsa si trovi in un ambiente di produzione:

resource.matchTag('123456789012/env', 'prod')

Questa condizione assegna un ruolo alle risorse che hanno un tag con la chiave env, indipendentemente dal relativo valore:

resource.hasTagKey('123456789012/env')

Questa condizione concede un ruolo per le risorse che hanno sia il tag env: prod che qualsiasi tag che utilizza la chiave project:

resource.matchTag('123456789012/env', 'prod') &&
    resource.hasTagKey('123456789012/project')

Passaggi successivi