Controllo dell'accesso con IAM

Questo documento descrive come utilizzare i ruoli e le autorizzazioni di Identity and Access Management (IAM) per controllare l'accesso ai dati dei log nell'API Logging, in Esplora log e in Google Cloud CLI.

Panoramica

Le autorizzazioni e i ruoli IAM determinano la tua possibilità di accedere ai dati dei log nell'API Logging, in Esplora log e in Google Cloud CLI.

Un ruolo è una raccolta di autorizzazioni. Non puoi concedere direttamente le autorizzazioni di un'entità, ma devi assegnare loro un ruolo. Se concedi un ruolo a un'entità, concedi all'entità tutte le autorizzazioni incluse nel ruolo. Puoi concedere più ruoli alla stessa entità.

Per utilizzare Logging all'interno di una risorsa Google Cloud, ad esempio un progetto, una cartella, un bucket o un'organizzazione di Google Cloud, un'entità deve avere un ruolo IAM con le autorizzazioni appropriate.

Ruoli predefiniti

IAM offre ruoli predefiniti per concedere un accesso granulare a risorse Google Cloud specifiche e prevenire l'accesso indesiderato ad altre risorse. Google Cloud crea e gestisce questi ruoli e ne aggiorna automaticamente le autorizzazioni secondo necessità, ad esempio quando Logging aggiunge nuove funzionalità.

Nella tabella seguente sono elencati i ruoli predefiniti per Logging. Per ogni ruolo, la tabella mostra il titolo e la descrizione del ruolo, le autorizzazioni contenute e il tipo di risorsa di livello più basso in cui è possibile concedere i ruoli. Puoi concedere i ruoli predefiniti a livello di progetto Google Cloud o, nella maggior parte dei casi, di qualsiasi tipo superiore nella gerarchia di Google Cloud. Per definire l'ambito del ruolo della funzione di accesso Visualizzazione log in modo più preciso a livello di bucket, utilizza gli attributi delle risorse per le condizioni IAM.

Per ottenere un elenco di tutte le singole autorizzazioni contenute in un ruolo, vedi Ottenere i metadati dei ruoli.

Role Permissions

(roles/logging.admin)

Provides all permissions necessary to use all features of Cloud Logging.

Lowest-level resources where you can grant this role:

  • Project

logging.buckets.copyLogEntries

logging.buckets.create

logging.buckets.delete

logging.buckets.get

logging.buckets.list

logging.buckets.undelete

logging.buckets.update

logging.exclusions.*

  • logging.exclusions.create
  • logging.exclusions.delete
  • logging.exclusions.get
  • logging.exclusions.list
  • logging.exclusions.update

logging.fields.access

logging.links.*

  • logging.links.create
  • logging.links.delete
  • logging.links.get
  • logging.links.list

logging.locations.*

  • logging.locations.get
  • logging.locations.list

logging.logEntries.*

  • logging.logEntries.create
  • logging.logEntries.download
  • logging.logEntries.list
  • logging.logEntries.route

logging.logMetrics.*

  • logging.logMetrics.create
  • logging.logMetrics.delete
  • logging.logMetrics.get
  • logging.logMetrics.list
  • logging.logMetrics.update

logging.logServiceIndexes.list

logging.logServices.list

logging.logs.*

  • logging.logs.delete
  • logging.logs.list

logging.notificationRules.*

  • logging.notificationRules.create
  • logging.notificationRules.delete
  • logging.notificationRules.get
  • logging.notificationRules.list
  • logging.notificationRules.update

logging.operations.*

  • logging.operations.cancel
  • logging.operations.get
  • logging.operations.list

logging.privateLogEntries.list

logging.queries.*

  • logging.queries.create
  • logging.queries.delete
  • logging.queries.get
  • logging.queries.list
  • logging.queries.listShared
  • logging.queries.share
  • logging.queries.update
  • logging.queries.updateShared

logging.settings.*

  • logging.settings.get
  • logging.settings.update

logging.sinks.*

  • logging.sinks.create
  • logging.sinks.delete
  • logging.sinks.get
  • logging.sinks.list
  • logging.sinks.update

logging.usage.get

logging.views.*

  • logging.views.access
  • logging.views.create
  • logging.views.delete
  • logging.views.get
  • logging.views.list
  • logging.views.listLogs
  • logging.views.listResourceKeys
  • logging.views.listResourceValues
  • logging.views.update

resourcemanager.projects.get

resourcemanager.projects.list

(roles/logging.bucketWriter)

Ability to write logs to a log bucket.

Lowest-level resources where you can grant this role:

  • Project

logging.buckets.write

(roles/logging.configWriter)

Provides permissions to read and write the configurations of logs-based metrics and sinks for exporting logs.

Lowest-level resources where you can grant this role:

  • Project

logging.buckets.create

logging.buckets.delete

logging.buckets.get

logging.buckets.list

logging.buckets.undelete

logging.buckets.update

logging.exclusions.*

  • logging.exclusions.create
  • logging.exclusions.delete
  • logging.exclusions.get
  • logging.exclusions.list
  • logging.exclusions.update

logging.links.*

  • logging.links.create
  • logging.links.delete
  • logging.links.get
  • logging.links.list

logging.locations.*

  • logging.locations.get
  • logging.locations.list

logging.logMetrics.*

  • logging.logMetrics.create
  • logging.logMetrics.delete
  • logging.logMetrics.get
  • logging.logMetrics.list
  • logging.logMetrics.update

logging.logServiceIndexes.list

logging.logServices.list

logging.logs.list

logging.notificationRules.*

  • logging.notificationRules.create
  • logging.notificationRules.delete
  • logging.notificationRules.get
  • logging.notificationRules.list
  • logging.notificationRules.update

logging.operations.*

  • logging.operations.cancel
  • logging.operations.get
  • logging.operations.list

logging.settings.*

  • logging.settings.get
  • logging.settings.update

logging.sinks.*

  • logging.sinks.create
  • logging.sinks.delete
  • logging.sinks.get
  • logging.sinks.list
  • logging.sinks.update

logging.views.create

logging.views.delete

logging.views.get

logging.views.list

logging.views.update

resourcemanager.projects.get

resourcemanager.projects.list

(roles/logging.fieldAccessor)

Ability to read restricted fields in a log bucket.

Lowest-level resources where you can grant this role:

  • Project

logging.fields.access

(roles/logging.linkViewer)

Ability to see links for a bucket.

logging.links.get

logging.links.list

(roles/logging.logWriter)

Provides the permissions to write log entries.

Lowest-level resources where you can grant this role:

  • Project

logging.logEntries.create

logging.logEntries.route

(roles/logging.privateLogViewer)

Provides permissions of the Logs Viewer role and in addition, provides read-only access to log entries in private logs.

Lowest-level resources where you can grant this role:

  • Project

logging.buckets.get

logging.buckets.list

logging.exclusions.get

logging.exclusions.list

logging.links.get

logging.links.list

logging.locations.*

  • logging.locations.get
  • logging.locations.list

logging.logEntries.list

logging.logMetrics.get

logging.logMetrics.list

logging.logServiceIndexes.list

logging.logServices.list

logging.logs.list

logging.privateLogEntries.list

logging.queries.create

logging.queries.delete

logging.queries.get

logging.queries.list

logging.queries.listShared

logging.queries.update

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.access

logging.views.get

logging.views.list

resourcemanager.projects.get

(roles/logging.viewAccessor)

Ability to read logs in a view.

Lowest-level resources where you can grant this role:

  • Project

logging.logEntries.download

logging.views.access

logging.views.listLogs

logging.views.listResourceKeys

logging.views.listResourceValues

(roles/logging.viewer)

Provides access to view logs.

Lowest-level resources where you can grant this role:

  • Project

logging.buckets.get

logging.buckets.list

logging.exclusions.get

logging.exclusions.list

logging.links.get

logging.links.list

logging.locations.*

  • logging.locations.get
  • logging.locations.list

logging.logEntries.list

logging.logMetrics.get

logging.logMetrics.list

logging.logServiceIndexes.list

logging.logServices.list

logging.logs.list

logging.operations.get

logging.operations.list

logging.queries.create

logging.queries.delete

logging.queries.get

logging.queries.list

logging.queries.listShared

logging.queries.update

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.get

logging.views.list

resourcemanager.projects.get

Le sezioni seguenti forniscono informazioni aggiuntive per aiutarti a decidere quali ruoli si applicano ai casi d'uso delle entità.

Ruoli di logging

  • Per consentire a un utente di eseguire tutte le azioni in Logging, concedi il ruolo Amministratore Logging (roles/logging.admin).

  • Per consentire a un utente di creare e modificare le configurazioni di logging, come sink, bucket, viste, link, metriche basate su log o esclusioni, concedi il ruolo Writer configurazione log (roles/logging.configWriter).

  • Per consentire a un utente di leggere i log nei bucket _Required e _Default, utilizza Esplora log e la pagina Analisi dei log, concedi uno dei seguenti ruoli:

    • Per accedere a tutti i log nel bucket _Required e alla visualizzazione _Default sul bucket _Default, concedi il ruolo Visualizzatore log (roles/logging.viewer).
    • Per accedere a tutti i log nei bucket _Required e _Default, inclusi i log di accesso ai dati, concedi il ruolo Visualizzatore log privati (roles/logging.privateLogViewer).
  • Per consentire a un utente di leggere i log archiviati in un bucket definito dall'utente, concedi il ruolo Funzione di accesso Visualizzazione log (roles/logging.viewAccessor). Puoi limitare l'autorizzazione a una visualizzazione di log specifica su un bucket specifico utilizzando una condizione IAM. Consulta Concedere l'accesso a una visualizzazione di log.

  • Per concedere a un utente l'accesso a campi LogEntry limitati, se presenti, in un determinato bucket, concedi il ruolo Funzione di accesso ai campi dei log (roles/logging.fieldAccessor). Per ulteriori informazioni, consulta la sezione Configurare l'accesso a livello di campo.

  • Per consentire a un utente di scrivere log utilizzando l'API Logging, concedi il ruolo Writer log (roles/logging.logWriter). Questo ruolo non concede le autorizzazioni di visualizzazione.

  • Per consentire all'account di servizio di un sink di instradare i log a un bucket in un altro progetto Google Cloud, concedi all'account di servizio il ruolo Writer bucket di log (roles/logging.bucketWriter). Per istruzioni sulla concessione delle autorizzazioni a un account di servizio, consulta Impostare le autorizzazioni di destinazione.

Ruoli a livello di progetto

  • Per concedere l'accesso in visualizzazione alla maggior parte dei servizi Google Cloud, concedi il ruolo Visualizzatore (roles/viewer).

    Questo ruolo include tutte le autorizzazioni concesse dal ruolo Visualizzatore log (roles/logging.viewer).

  • Per concedere l'accesso in modifica alla maggior parte dei servizi Google Cloud, concedi il ruolo Editor (roles/editor).

    Questo ruolo include tutte le autorizzazioni concesse dal ruolo Visualizzatore log (roles/logging.viewer) e quelle per scrivere voci di log, eliminare log e creare metriche basate su log. Tuttavia, questo ruolo non consente agli utenti di creare sink, leggere gli audit log di accesso ai dati che si trovano nel bucket _Default o leggere i log che si trovano nei bucket di log definiti dall'utente.

  • Per concedere l'accesso completo alla maggior parte dei servizi Google Cloud, concedi il ruolo Proprietario (roles/owner).

Concessione dei ruoli in corso…

Per informazioni su come concedere un ruolo a un'entità, consulta Concessione, modifica e revoca dell'accesso.

Puoi assegnare più ruoli allo stesso utente. Per ottenere un elenco delle autorizzazioni contenute in un ruolo, vedi Ottenere i metadati dei ruoli.

Se stai cercando di accedere a una risorsa Google Cloud e non hai le autorizzazioni necessarie, contatta l'entità indicata come Proprietario della risorsa.

Ruoli personalizzati

Per creare un ruolo personalizzato con autorizzazioni di Logging:

Per maggiori informazioni sui ruoli personalizzati, consulta Informazioni sui ruoli IAM personalizzati.

Autorizzazioni per l'API Logging

I metodi dell'API Logging richiedono autorizzazioni IAM specifiche. Nella tabella seguente sono elencate le autorizzazioni necessarie per i metodi dell'API.

Se ti interessano i log archiviati in organizzazioni, account di fatturazione e cartelle Google Cloud, tieni presente che queste risorse hanno metodi API propri per logs e sinks. Anziché ripetere tutti i metodi nella tabella, solo i metodi projects vengono mostrati singolarmente.

Metodo di registrazione Autorizzazione obbligatoria Tipo di risorsa
billingAccounts.logs.* logging.logs.* (vedi projects.logs.*) account di fatturazione
billingAccounts.sinks.* logging.sinks.* (vedi projects.sinks.*.) account di fatturazione
billingAccounts.locations.buckets.* logging.buckets.* (vedi projects.locations.buckets.*.) account di fatturazione
entries.list logging.logEntries.list oppure
logging.privateLogEntries.list
progetti, organizzazioni,
cartelle, account di fatturazione
entries.tail logging.logEntries.list oppure
logging.privateLogEntries.list
progetti, organizzazioni,
cartelle, account di fatturazione
entries.write logging.logEntries.create progetti, organizzazioni,
cartelle, account di fatturazione
folders.logs.* logging.logs.* (vedi projects.logs.*) folders
folders.sinks.* logging.sinks.* (vedi projects.sinks.*) folders
folders.locations.buckets.* logging.buckets.* (vedi projects.locations.buckets.*) folders
monitoredResourceDescriptors.list (nessuno) (nessuno)
organizations.logs.* logging.logs.* (vedi projects.logs.*) organizations
organizations.sinks.* logging.sinks.* (vedi projects.sinks.*) organizations
organizations.locations.buckets.* logging.buckets.* (vedi projects.locations.buckets.*) organizations
projects.exclusions.create logging.exclusions.create di progetti
projects.exclusions.delete logging.exclusions.delete di progetti
projects.exclusions.get logging.exclusions.get di progetti
projects.exclusions.list logging.exclusions.list di progetti
projects.exclusions.patch logging.exclusions.update di progetti
projects.logs.list logging.logs.list di progetti
projects.logs.delete logging.logs.delete di progetti
projects.sinks.list logging.sinks.list di progetti
projects.sinks.get logging.sinks.get di progetti
projects.sinks.create logging.sinks.create di progetti
projects.sinks.update logging.sinks.update di progetti
projects.sinks.delete logging.sinks.delete di progetti
projects.locations.buckets.list logging.buckets.list di progetti
projects.locations.buckets.get logging.buckets.get di progetti
projects.locations.buckets.patch logging.buckets.update di progetti
projects.locations.buckets.create logging.buckets.create di progetti
projects.locations.buckets.delete logging.buckets.delete di progetti
projects.locations.buckets.undelete logging.buckets.undelete di progetti
projects.metrics.list logging.logMetrics.list di progetti
projects.metrics.get logging.logMetrics.get di progetti
projects.metrics.create logging.logMetrics.create di progetti
projects.metrics.update logging.logMetrics.update di progetti
projects.metrics.delete logging.logMetrics.delete di progetti

Autorizzazioni per la console Google Cloud

Nella tabella seguente sono elencate le autorizzazioni necessarie per utilizzare Esplora log.

Nella tabella, a.b.{x,y} significa a.b.x e a.b.y.

Attività della console Autorizzazioni obbligatorie
Accesso minimo di sola lettura logging.logEntries.list
logging.logs.list
logging.logServiceIndexes.list
logging.logServices.list
resourcemanager.projects.get
Aggiunta della possibilità di visualizzare gli audit log di accesso ai dati Aggiungi logging.privateLogEntries.list
Aggiunta della possibilità di visualizzare le metriche basate su log Aggiungi logging.logMetrics.{list, get}
Aggiungi la possibilità di visualizzare i sink Aggiungi logging.sinks.{list, get}
Aggiungi la possibilità di visualizzare l'utilizzo dei log Aggiungi logging.usage.get
Aggiungi la possibilità di escludere i log Aggiungi logging.exclusions.{list, create, get, update, delete}
Aggiungi la possibilità di utilizzare i sink Aggiungi logging.sinks.{list, create, get, update, delete}
Aggiunta della possibilità di creare metriche basate su log Aggiungi logging.logMetrics.{list, create, get, update, delete}
Aggiunta della possibilità di salvare le query Aggiungi logging.queries.{list, create, get, update, delete}
Aggiunta della possibilità di condividere le query Aggiungi logging.queries.share
Aggiunta della possibilità di utilizzare le query recenti Aggiungi logging.queries.{create, list}

Autorizzazioni per la riga di comando

I comandi gcloud logging sono controllati dalle autorizzazioni IAM.

Per utilizzare uno qualsiasi dei comandi gcloud logging, le entità devono avere l'autorizzazione serviceusage.services.use.

Un'entità deve anche avere il ruolo IAM corrispondente alla risorsa del log e al caso d'uso. Per maggiori dettagli, consulta le autorizzazioni dell'interfaccia a riga di comando.

Nell'elenco seguente sono descritti i ruoli predefiniti e le autorizzazioni corrispondenti per la gestione dei set di dati BigQuery collegati:

I ruoli e le autorizzazioni elencati in precedenza si applicano solo alle pagine di Logging, come la pagina Analisi dei log. Se utilizzi l'interfaccia BigQuery per gestire i tuoi set di dati, potresti aver bisogno di ruoli e autorizzazioni BigQuery distinti. Per ulteriori informazioni, consulta Controllo dell'accesso con IAM per BigQuery.

Autorizzazioni per il routing dei log

Per informazioni su come impostare i controlli di accesso durante la creazione e la gestione dei sink per il routing dei log, consulta Impostare le autorizzazioni di destinazione.

Tieni presente che la gestione dei filtri di esclusione è integrata con la configurazione dei sink. Tutte le autorizzazioni relative alla gestione dei sink, inclusa l'impostazione dei filtri di esclusione, sono incluse nelle autorizzazioni logging.sinks.*. Quando crei un ruolo personalizzato che include le autorizzazioni per gestire i filtri di esclusione, aggiungi le autorizzazioni logging.sinks.* al ruolo anziché le autorizzazioni logging.exclusions.*.

Dopo che le voci di log sono state instradate a una destinazione supportata, l'accesso alle copie dei log è controllato interamente dalle autorizzazioni e dai ruoli IAM sulle destinazioni: Cloud Storage, BigQuery o Pub/Sub.

Autorizzazioni per le metriche basate su log

Di seguito è riportato un riepilogo dei ruoli e delle autorizzazioni comuni necessarie a un'entità per accedere alle metriche basate su log:

  • Il ruolo Writer configurazione log (roles/logging.configWriter) consente alle entità di elencare, creare, ottenere, aggiornare ed eliminare le metriche basate su log.

  • Il ruolo Visualizzatore log (roles/logging.viewer) contiene le autorizzazioni per visualizzare le metriche esistenti. In particolare, un'entità deve avere le autorizzazioni logging.logMetrics.get e logging.logMetrics.list per visualizzare le metriche esistenti.

  • Il ruolo Visualizzatore Monitoring (roles/monitoring.viewer) contiene le autorizzazioni per leggere i dati di TimeSeries. In particolare, un'entità richiede l'autorizzazione monitoring.timeSeries.list per leggere i dati delle serie temporali.

  • I ruoli Amministratore Logging (roles/logging.admin), Editor progetto (roles/editor) e Proprietario progetto (roles/owner) contengono le autorizzazioni per creare metriche basate su log. In particolare, un'entità richiede l'autorizzazione logging.logMetrics.create per creare metriche basate su log.

Autorizzazioni per gli avvisi basati su log

Per creare e gestire avvisi basati su log, un'entità ha bisogno dei seguenti ruoli e autorizzazioni di Logging e Monitoring:

  • Per ottenere le autorizzazioni necessarie per leggere i log e gestire le regole di notifica di Logging, chiedi all'amministratore di concederti il ruolo IAM Amministratore Logging (roles/logging.admin) per il tuo progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.

    Potresti anche essere in grado di ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

  • Per ottenere le autorizzazioni necessarie per gestire i criteri e i canali di avviso utilizzati dagli avvisi basati su log, chiedi all'amministratore di concederti i seguenti ruoli IAM sul tuo progetto:

  • Per ottenere le autorizzazioni necessarie per creare un criterio di avviso in Google Cloud CLI, chiedi all'amministratore di concederti il ruolo IAM Consumatore di utilizzo dei servizi (roles/serviceusage.serviceUsageConsumer) per il tuo progetto.

Ambiti di accesso a Logging

Gli ambiti di accesso sono il metodo legacy per specificare le autorizzazioni per gli account di servizio sulle istanze VM di Compute Engine.

All'API Logging si applicano i seguenti ambiti di accesso:

Ambito dell'accesso Autorizzazioni concesse
https://www.googleapis.com/auth/logging.read roles/logging.viewer
https://www.googleapis.com/auth/logging.write roles/logging.logWriter
https://www.googleapis.com/auth/logging.admin Accesso completo all'API Logging.
https://www.googleapis.com/auth/cloud-platform Accesso completo all'API Logging e a tutte le altre API Google Cloud abilitate.

Per informazioni sull'utilizzo di questo metodo precedente per impostare i livelli di accesso degli account di servizio, consulta Autorizzazioni degli account di servizio.