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 eenvironment: prod
all'ambiente di produzione. - Tipi di componenti. Ad esempio, puoi aggiungere i tag
component: frontend
alle risorse di frontend ecomponent: 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 permanentetagValues/567890123456
. -
Un nome breve. Il nome breve di ogni chiave deve essere univoco all'interno del progetto o
dell'organizzazione in cui è definita la chiave e il nome breve di ogni valore deve essere univoco
per la chiave associata. Ad esempio, una chiave tag potrebbe avere il nome breve
env
e un valore di tag potrebbe avere il nome breveprod
. -
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 nomimyproject/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
- Scopri come gestire i tag e associarli alle risorse.
- Scopri di più su come controllare i tag in una condizione.