Questa pagina descrive come utilizzare i tag con Identity and Access Management (IAM) per controllare l'accesso alle risorse Google Cloud .
Per saperne di più sui tag, consulta la Panoramica dei tag.
Panoramica dei tag
Un tag è una coppia chiave-valore collegata a una Google Cloud risorsa. Puoi concedere in modo condizionale i ruoli IAM o negare in modo condizionale le autorizzazioni IAM a seconda che una risorsa abbia un tag specifico.
Le risorse ereditano i valori dei tag dall'organizzazione, dalle cartelle e dal progetto principali. Di conseguenza, puoi utilizzare i tag per gestire l'accesso a qualsiasi risorsaGoogle 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 batch. - 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 collegare i tag alle risorse, devi definire la chiave del tag, nonché i valori consentiti dal tag. Puoi creare queste definizioni a livello di organizzazione o progetto. Utilizzi Resource Manager per gestire le definizioni dei tag. Per scoprire di più, vedi Creare e definire un nuovo tag.
Ogni chiave e valore del tag ha diversi identificatori:
-
Un ID permanente, univoco a livello globale e mai riutilizzabile. Ad esempio, una chiave
del tag potrebbe avere l'ID permanente
tagKeys/123456789012
e un valore del tag potrebbe avere l'ID permanentetagValues/567890123456
. -
Un nome breve. Il nome breve di ogni chiave deve essere univoco all'interno del progetto o
dell'organizzazione in cui è definita la chiave e il nome breve di ogni valore deve essere univoco
per la chiave associata. Ad esempio, una chiave tag potrebbe avere il nome breve
env
e un valore tag potrebbe avere il nome breveprod
. -
Un nome con spazio dei nomi, che aggiunge l'ID numerico della tua organizzazione o l'ID del progetto al
nome breve di una chiave tag. Ad esempio, una chiave tag creata per un'organizzazione potrebbe avere il
nome con spazio dei nomi
123456789012/env
. Per scoprire come ottenere l'ID della tua organizzazione, vedi Ottenere l'ID risorsa dell'organizzazione. Una chiave tag creata per un progetto potrebbe avere il nome con spazio dei nomimyproject/env
. Per scoprire come ottenere l'ID progetto, consulta la sezione Identificazione dei progetti.
Come spiegato in questa pagina, dopo aver collegato 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. Segui queste linee guida per scegliere tra le due opzioni:
- Per sperimentare con i tag,valuta la possibilità 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 memorizzare, soprattutto all'inizio.
Se gestisci la configurazione in modo dichiarativo,utilizzando uno strumento come Terraform, valuta la possibilità 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 uno strumento dichiarativo può eliminarli e ricrearli e le tue condizioni continueranno a funzionare.
Questo approccio comporta un compromesso: supponiamo che tu elimini una chiave o un valore tag, poi crei una nuova chiave o un nuovo valore con lo stesso nome, ma un significato diverso. Se la condizione si riferisce al nome con spazio dei nomi o al nome breve, la condizione continua ad applicarsi alla nuova chiave o al nuovo valore.
In alcuni casi, questo comportamento potrebbe consentire alle entità di accedere a risorse a cui non volevi che accedessero.
Per ridurre al minimo il rischio,valuta la possibilità di utilizzare ID permanenti, che non possono mai essere riutilizzati.
Ecco perché gli ID permanenti contribuiscono a ridurre al minimo il rischio: supponiamo che tu elimini una chiave o un valore del tag, quindi crei una nuova chiave o un nuovo valore con lo stesso nome, ma con un significato diverso. Se la condizione si riferisce all'ID permanente, la condizione non si applica alla nuova chiave o al nuovo valore. Di conseguenza, è meno probabile che le entità ottengano l'accesso che non volevi concedere.
Uno svantaggio è che se elimini e ricrei chiavi e valori e vuoi mantenere l'accesso dei principal, devi anche aggiornare le policy di autorizzazione in modo che facciano riferimento ai nuovi ID permanenti.
Accesso alle risorse taggate
Puoi utilizzare i tag con le condizioni IAM per concedere un ruolo
in modo condizionale, a seconda dei tag collegati o ereditati da una
risorsa. Se una condizione restituisce il valore true
, l'accesso viene concesso; in caso contrario,
l'accesso non viene concesso. Per saperne di più, consulta la
panoramica delle condizioni IAM.
Alcune aree della console Google Cloud non riconoscono le associazioni di ruolo dei criteri di autorizzazione con condizioni basate su tag. Di conseguenza, se hai un ruolo con una condizione basata su tag, la console Google Cloud potrebbe impedirti erroneamente di eseguire determinate azioni. Se riscontri questo problema, utilizza un metodo alternativo, ad esempio gcloud CLI, per eseguire l'azione.
Le sezioni seguenti mostrano esempi di espressioni di condizione che controllano i tag di una risorsa. La condizione chiama funzioni diverse a seconda che controlli l'ID permanente o il nome breve. Per scoprire di più su queste funzioni, consulta Tag delle risorse.
Condizioni che utilizzano ID permanenti
Questa condizione concede un ruolo sulle risorse con il tag
tagKeys/123456789012: tagValues/567890123456
:
resource.matchTagId('tagKeys/123456789012', 'tagValues/567890123456')
Questa condizione concede un ruolo alle risorse che hanno un tag con la chiave tagKeys/123456789012
, indipendentemente dal suo valore:
resource.hasTagKeyId('tagKeys/123456789012')
Questa condizione concede un ruolo alle risorse che hanno sia il tag
tagKeys/123456789012: tagValues/567890123456
sia qualsiasi tag che utilizza la
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 sulle risorse con il tag env: prod
, indicando
che la risorsa si trova in un ambiente di produzione:
resource.matchTag('123456789012/env', 'prod')
Questa condizione concede un ruolo alle risorse che hanno un tag con la chiave env
,
indipendentemente dal suo valore:
resource.hasTagKey('123456789012/env')
Questa condizione concede un ruolo alle risorse che hanno sia il tag env: prod
sia
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ù sul controllo dei tag in una condizione.