Utilizzare i tag per gestire l'accesso ai bucket di log

Questo documento descrive come utilizzare i tag per gestire i bucket di log di Cloud Logging. I tag, creati a livello di organizzazione o progetto, consentono di annotare le risorse. Puoi anche concedere in modo condizionale i ruoli IAM (Identity and Access Management) o negare in modo condizionale le autorizzazioni IAM a seconda che una risorsa abbia un tag specifico. Per informazioni sui tag, consulta Introduzione ai tag.

Ad esempio, se utilizzi BigQuery per analizzare i dati di fatturazione Cloud, potresti collegare il tag project:production ai bucket di log che archiviano i dati di log delle risorse di produzione e potresti collegare il tag project:development ai bucket di log che archiviano i dati di log delle risorse di sviluppo. Poi, puoi eseguire query sui dati di fatturazione Cloud con i tag e visualizzare una suddivisione dei tuoi costi tra sviluppo e produzione.

I tag possono essere collegati in modo esplicito ai bucket di log o ereditati dall'organizzazione, dalle cartelle e dai progetti principali.

Prima di iniziare

Per iniziare a gestire i bucket di log utilizzando i tag:

  1. Assicurati di aver creato un tag e configurato i relativi valori. Utilizza Resource Manager per gestire le definizioni dei tag. Per informazioni su come creare e gestire i tag, consulta Creare e gestire i tag.
  2. Per ottenere le autorizzazioni necessarie per gestire i bucket di log utilizzando i tag, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto o nell'organizzazione:

    Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

    Questi ruoli predefiniti contengono le autorizzazioni necessarie per gestire i bucket di log utilizzando i tag. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:

    Autorizzazioni obbligatorie

    Per gestire i bucket di log utilizzando i tag sono necessarie le seguenti autorizzazioni:

    • Aggiungere o rimuovere tag dai bucket di log:
      • resourcemanager.tagValues.{get,list}
      • resourcemanager.tagKeys.{get,list}
      • resourcemanager.projects.get
      • logging.buckets.createTagbinding
      • logging.buckets.deleteTagBinding
    • Visualizzare i tag collegati ai bucket di log:
      • resourcemanager.tagValues.{get,list}
      • resourcemanager.tagKeys.{get,list}
      • logging.buckets.listTagBindings
      • logging.buckets.listEffectiveTags

    Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

  3. Per ottenere l'autorizzazione necessaria per gestire i bucket di log, chiedi all'amministratore di concederti il ruolo IAM Writer di configurazione dei log (roles/logging.configWriter) nel progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

    Questo ruolo predefinito contiene l' logging.buckets.list autorizzazione, necessaria per gestire i bucket di log.

    Potresti anche ottenere questa autorizzazione con ruoli personalizzati o altri ruoli predefiniti.

Collegare tag a un bucket di log

Per collegare un tag a un bucket di log:

Google Cloud Console

  1. Nella Google Cloud console, vai alla pagina Archiviazione dei log:

    Vai ad Archiviazione dei log

    Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Logging.

  2. Individua il bucket di log a cui collegare un tag.

  3. Nel bucket di log, fai clic su Altro, e poi su Modifica tag.

  4. Nella finestra di dialogo, nella sezione Tag diretti, individua il tag selezionando la risorsa in cui è stato creato. Ad esempio, per utilizzare un tag creato a livello di progetto, scegli Seleziona il progetto corrente come ambito.

    Puoi anche cercare manualmente l'ID progetto, organizzazione o tag selezionando l'opzione Inserimento manuale.

  5. Seleziona la coppia chiave-valore appropriata e fai clic su Salva.

  6. Viene visualizzata una finestra di dialogo che conferma le modifiche. Fai clic su Conferma per finalizzare le modifiche.

gcloud

Per collegare un tag a un bucket di log, crea un'associazione di tag eseguendo il gcloud resource-manager tags bindings create comando:

gcloud resource-manager tags bindings create \
--tag-value=TAG_VALUE_ID \
--parent=BUCKET_NAME \
--location=LOCATION

Nel comando precedente, effettua le seguenti sostituzioni:

  • TAG_VALUE_ID: l'ID permanente o il nome con spazio dei nomi del valore del tag. Ad esempio, tagValues/4567890123. Per saperne di più sugli identificatori dei tag, consulta Definizioni e identificatori dei tag.

  • BUCKET_NAME: il nome del bucket di log. Ad esempio, //logging.googleapis.com/projects/BUCKET_PROJECT_ID/locations/LOCATION/buckets/BUCKET_ID.

  • LOCATION: la località del bucket di log.

API

Per collegare un tag a un bucket di log, utilizza il tagBindings.create metodo.

Terraform

Per collegare un tag a un bucket di log utilizzando Terraform, esegui una delle seguenti operazioni:

Quindi, esegui terraform apply per applicare le modifiche.

Visualizzare i tag collegati a un bucket di log

Per visualizzare i tag collegati a un bucket di log:

Google Cloud Console

  1. Nella Google Cloud console, vai alla pagina Archiviazione dei log:

    Vai ad Archiviazione dei log

    Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Logging.

  2. Individua il bucket di log di cui vuoi visualizzare i tag.

    Nella colonna Tag è elencato un tag associato al bucket di log. Per visualizzare tutti i tag associati al bucket di log, fai clic sul Altro pulsante per espandere l'elenco dei tag.

gcloud

Esegui il gcloud resource-manager tags bindings list comando:

gcloud resource-manager tags bindings list \
--parent=BUCKET_NAME \
--location=LOCATION

Nel comando precedente, effettua le seguenti sostituzioni:

  • BUCKET_NAME: il nome del bucket di log. Ad esempio, //logging.googleapis.com/projects/BUCKET_PROJECT_ID/locations/LOCATION/buckets/BUCKET_ID.

  • LOCATION: la località del bucket di log.

(Facoltativo) Per visualizzare i tag ereditati dal bucket di log, aggiungi il flag --effective. L'aggiunta di questo flag restituisce una risposta simile alla seguente:

namespacedTagKey: 961309089256/environment
namespacedTagValue: 961309089256/environment/production
tagKey: tagKeys/417628178507
tagValue: tagValues/247197504380
inherited: true

Se tutti i tag sono collegati in modo esplicito al bucket di log e non vengono ereditati, il campo inherited è falso e viene omesso.

API

Per ottenere un elenco di associazioni di tag per un bucket, utilizza il tagBindings.list metodo.

Terraform

Puoi utilizzare Terraform per collegare un tag a un bucket di log. Tuttavia, non puoi utilizzare Terraform per elencare i tag.

Rimuovere i tag da un bucket di log

Per rimuovere i tag collegati a un bucket di log, devi eliminare l'associazione di tag collegata al bucket di log. Per eliminare un tag, devi rimuoverlo da tutte le risorse collegate.

Google Cloud Console

  1. Nella Google Cloud console, vai alla pagina Archiviazione dei log:

    Vai ad Archiviazione dei log

    Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Logging.

  2. Individua il bucket di log di cui vuoi rimuovere il tag.

  3. Nel bucket di log, fai clic su Altro, e poi su Modifica tag.

  4. Nella finestra di dialogo, tieni il puntatore del mouse sopra il tag da rimuovere e fai clic su Elimina elemento. Fai clic su Salva per salvare le modifiche.

  5. Viene visualizzata una finestra di dialogo che conferma le modifiche. Fai clic su Conferma per finalizzare le modifiche.

gcloud

Esegui il gcloud resource-manager tags bindings delete comando:

gcloud resource-manager tags bindings delete \
--tag-value=TAG_VALUE_ID \
--parent=BUCKET_NAME \
--location=LOCATION

Nel comando precedente, effettua le seguenti sostituzioni:

  • TAG_VALUE_ID: l'ID permanente o il nome con spazio dei nomi del valore del tag. Ad esempio, tagValues/4567890123. Per saperne di più sugli identificatori dei tag, consulta Definizioni e identificatori dei tag.

  • BUCKET_NAME: il nome del bucket di log. Ad esempio, //logging.googleapis.com/projects/BUCKET_PROJECT_ID/locations/LOCATION/buckets/BUCKET_ID.

  • LOCATION: la località del bucket di log.

API

Per rimuovere un tag da un bucket di log, utilizza il tagBindings.delete metodo.

Terraform

Per rimuovere un tag da un bucket di log utilizzando Terraform, elimina la risorsa di associazione tag nella configurazione, quindi esegui terraform apply per applicare le modifiche.

Limitazioni

  • Non puoi utilizzare le concessioni di ruoli IAM per controllare quali bucket di log un'entità vede quando elenca i bucket di log in un Google Cloud progetto. Un'entità vedrà un elenco completo o un elenco vuoto. Tuttavia, puoi utilizzare le concessioni di ruoli IAM con le condizioni IAM per limitare le azioni che un'entità può eseguire su un bucket di log. Ad esempio, puoi limitare se un'entità può eliminare un bucket di log specifico.

  • Se utilizzi le esportazioni dei dati di fatturazione Cloud con BigQuery, i tag potrebbero richiedere fino a un'ora per essere utilizzati nell'esportazione. Se un tag è stato aggiunto o rimosso entro un'ora o se il bucket di log esiste da meno di un'ora, potrebbe non essere visualizzato nell'esportazione.

Ruoli personalizzati e concessioni di ruoli con condizioni IAM

Se prevedi di utilizzare ruoli IAM personalizzati e di collegare condizioni IAM alle concessioni di ruoli, potresti dover creare più ruoli personalizzati. Alcune autorizzazioni IAM vengono invalidate quando una condizione IAM viene collegata a una concessione di ruoli.

Per Cloud Logging, le seguenti autorizzazioni IAM vengono invalidate quando una concessione di ruoli contiene una condizione IAM:

  • logging.buckets.list
  • logging.buckets.create

Pertanto, potresti dover creare un ruolo con le autorizzazioni list e create e un altro ruolo che contenga altre autorizzazioni specifiche per il bucket. Ad esempio, potresti creare un ruolo che contenga le autorizzazioni logging.buckets.delete e logging.buckets.update.

Quando concedi il ruolo che contiene le autorizzazioni list e create, non collegare una condizione IAM alla concessione di ruoli. Quando concedi il ruolo che contiene le autorizzazioni delete e update, puoi aggiungere una condizione IAM che limiti la concessione alle risorse con un tag specifico.

Passaggi successivi