Controllo dell'accesso con IAM

Questo documento descrive come utilizzi i ruoli e le autorizzazioni di Identity and Access Management (IAM) per controllare l'accesso ai dati di log nell'API Logging, in Logs Explorer e nell'interfaccia a riga di comando di Google Cloud.

Panoramica

Le autorizzazioni e i ruoli IAM determinano la tua possibilità di accedere ai dati dei log nell'API Logging, nell'Explorer Logs e nell'interfaccia a riga di comando di Google Cloud.

Un ruolo è una raccolta di autorizzazioni. Non puoi concedere direttamente un'autorizzazione a entità, ma solo assegnare un ruolo. Quando concedi un ruolo a un'entità, gli concedi tutte le autorizzazioni contenute nel ruolo. Puoi concedere più ruoli alla stessa entità.

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

Ruoli predefiniti

IAM fornisce ruoli predefiniti per concedere l'accesso granulare a risorse Google Cloud specifiche e impedire l'accesso indesiderato ad altre risorse. Google Cloud crea e mantiene questi ruoli e ne aggiorna automaticamente le autorizzazioni in base alle esigenze, 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, la descrizione, 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 Cloud o, nella maggior parte dei casi, di qualsiasi tipo a un livello superiore nella gerarchia Google Cloud. Per definire meglio l'ambito del ruolo Writer bucket di log o di accesso tramite visualizzazione log a livello di bucket, utilizza gli attributi della risorsa per le condizioni IAM.

Per visualizzare un elenco di ogni singola autorizzazione contenuta in un ruolo, vedi Ottenere i metadati del ruolo.

Ruolo Autorizzazioni

Amministratore di logging
(roles/logging.admin)

Fornisce tutte le autorizzazioni necessarie per utilizzare tutte le funzionalità di Cloud Logging.

Risorse di livello inferiore in cui puoi concedere questo ruolo:

  • Progetto
  • logging.buckets.copyLogEntries
  • logging.bucket.create
  • logging.buckets.delete
  • logging.buckets.get
  • logging.buckets.list
  • logging.buckets.undelete
  • logging.buckets.update
  • logging.cmekSettings.*
  • logging.exclusions.*
  • logging.fields.accesso
  • logging.locations.*
  • logging.logEntries.*
  • logging.logMetrics.*
  • logging.logServiceIndexes.list
  • logging.logServices
  • logging.logs*
  • logging.notificationRule.*
  • logging.operations.*
  • logging.privateLogEntries.list
  • logging.queries.*
  • logging.sink.*
  • logging.uso.get
  • logging.views.*
  • resourcemanager.projects.get
  • resourcemanager.projects.list

Writer bucket di log
(roles/logging.bucketWriter)

Possibilità di scrivere log in un bucket di log.

Risorse di livello inferiore in cui puoi concedere questo ruolo:

  • Progetto
  • logging.buckets.write

Writer configurazione log
(roles/logging.configWriter)

Fornisce le autorizzazioni per leggere e scrivere le configurazioni di metriche e sink basati su log per l'esportazione dei log.

Risorse di livello inferiore in cui puoi concedere questo ruolo:

  • Progetto
  • logging.bucket.create
  • logging.buckets.delete
  • logging.buckets.get
  • logging.buckets.list
  • logging.buckets.undelete
  • logging.buckets.update
  • logging.cmekSettings.*
  • logging.exclusions.*
  • logging.locations.*
  • logging.logMetrics.*
  • logging.logServiceIndexes.list
  • logging.logServices
  • logging.logs.list
  • logging.notificationRule.*
  • logging.operations.*
  • logging.sink.*
  • logging.views.create
  • logging.views.delete
  • logging.views.get
  • logging.views.list
  • logging.views.update
  • resourcemanager.projects.get
  • resourcemanager.projects.list

Funzione di accesso al campo Log
(roles/logging.fieldAccessor)

Possibilità di leggere campi con restrizioni in un bucket di log.

Risorse di livello inferiore in cui puoi concedere questo ruolo:

  • Progetto
  • logging.fields.accesso

Writer log
(roles/logging.logWriter)

Fornisce le autorizzazioni per scrivere le voci di log.

Risorse di livello inferiore in cui puoi concedere questo ruolo:

  • Progetto
  • logging.logEntries.create

Visualizzatore log privati
(roles/logging.privateLogViewer)

Fornisce le autorizzazioni del ruolo Visualizzatore log e, inoltre, fornisce l'accesso in sola lettura alle voci di log nei log privati.

Risorse di livello inferiore in cui puoi concedere questo ruolo:

  • Progetto
  • logging.buckets.get
  • logging.buckets.list
  • logging.exclusions.get
  • logging.exclusions.list
  • logging.locations.*
  • logging.logEntries.list
  • logging.logMetrics.get
  • logging.logMetrics.list
  • logging.logServiceIndexes.list
  • logging.logServices
  • 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.uso.get
  • logging.views.access
  • logging.views.get
  • logging.views.list
  • resourcemanager.projects.get

Funzione di accesso alla visualizzazione dei log
(roles/logging.viewAccessor)

Possibilità di leggere i log in una visualizzazione.

Risorse di livello inferiore in cui puoi concedere questo ruolo:

  • Progetto
  • logging.logEntries.download
  • logging.views.access
  • logging.views.listLogs
  • logging.views.listResourceKey
  • logging.views.listResourceValues

Visualizzatore log
(roles/logging.viewer)

Fornisce l'accesso per visualizzare i log.

Risorse di livello inferiore in cui puoi concedere questo ruolo:

  • Progetto
  • logging.buckets.get
  • logging.buckets.list
  • logging.exclusions.get
  • logging.exclusions.list
  • logging.locations.*
  • logging.logEntries.list
  • logging.logMetrics.get
  • logging.logMetrics.list
  • logging.logServiceIndexes.list
  • logging.logServices
  • 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.uso.get
  • logging.views.get
  • logging.views.list
  • resourcemanager.projects.get

Ulteriori considerazioni

Quando decidi quali autorizzazioni e ruoli si applicano alle tue entità, puoi prendere in considerazione i seguenti casi d'uso:

  • roles/logging.admin (amministratore di logging) ti concede tutte le autorizzazioni relative a Logging.

  • roles/logging.viewer (Visualizzatore log) concede alle entità l'accesso in sola lettura alla maggior parte delle funzionalità di Logging.

    Il ruolo Visualizzatore log concede alle entità l'accesso sia alla _AllLogs visualizzazione del log nel bucket _Required che alla vista _Default nel bucket _Default.

    Il ruolo Visualizzatore log non consente alle entità di leggere i log di controllo dell'accesso ai dati presenti nel bucket _Default. Per leggere questi log di controllo di accesso ai dati, le entità devono avere il ruolo Visualizzatore log privati (roles/logging.privateLogViewer) per la vista log appropriata.

    Il ruolo Visualizzatore log non consente alle entità di leggere i log archiviati in bucket definiti dall'utente. Per leggere i log nei bucket definiti dall'utente, le entità devono disporre del ruolo Access Visualizzatore log (roles/logging.viewAccessor) per la vista log appropriata.

  • roles/logging.privateLogViewer (Visualizzatore log privati) include tutte le autorizzazioni contenute in roles/logging.viewer e offre la possibilità di leggere gli audit log di accesso ai dati nel bucket _Default.

    Il ruolo Visualizzatore log privati non consente alle entità di leggere i log di controllo dell'accesso ai dati se sono archiviati in bucket definiti dall'utente; per leggere questi log nei bucket definiti dall'utente, le entità devono avere il ruolo Visualizzatore log (roles/logging.viewAccessor) per la vista log appropriata.

  • roles/logging.viewAccessor (Logs View Accessor) concede alle entità le autorizzazioni per leggere log, chiavi delle risorse e valori utilizzando una vista log e per scaricare i log. Per limitare questo ruolo a una visualizzazione in un bucket specifico, utilizza una condizione IAM; per un esempio, consulta Lettura dei log da un bucket.

  • roles/logging.fieldAccessor (Logs Field Accessor) concede alle entità le autorizzazioni per accedere ai campi con restrizioni di LogEntry, se presenti, in un determinato bucket. Per ulteriori dettagli, consulta Controllo dell'accesso a livello di campo.

  • roles/logging.logWriter (Writer log) concede alle entità le autorizzazioni minime necessarie per scrivere i log nell'API Logging. Questo ruolo non concede le autorizzazioni di visualizzazione.

  • roles/logging.bucketWriter (Writer bucket di log) concede a un account di servizio sink, impostando le autorizzazioni minime richieste per instradare i log a un bucket specifico. Per istruzioni sulla concessione delle autorizzazioni a un account di servizio di sink, vedi Impostare le autorizzazioni di destinazione.

  • roles/logging.configWriter (Logs Configuration Writer) concede ai privilegi le autorizzazioni per creare o modificare le configurazioni di logging, come sink, bucket, viste, metriche basate su log o esclusioni. Per utilizzare lo strumento Esplora log per queste azioni, aggiungi roles/logging.viewer.

  • roles/viewer (Visualizzatore progetto) equivale a roles/logging.viewer. Il ruolo concede alle entità l'accesso in sola lettura a tutte le funzionalità di Logging, ad eccezione della visualizzazione degli audit log di Data Access che si trovano nel bucket _Default.

  • roles/editor (Project Editor) include le autorizzazioni di roles/logging.viewer, oltre alle autorizzazioni per scrivere voci di log, eliminare i log e creare metriche basate su log. Il ruolo non consente alle entità di creare sink o leggere gli audit log di accesso ai dati che si trovano nel bucket _Default.

  • roles/owner (Proprietario progetto) concede alle entità l'accesso completo alla registrazione, come i log di controllo di accesso ai dati.

Concessione dei ruoli in corso…

Per informazioni su come concedere un ruolo a un'entità, vedi Concedere, modificare e revocare l'accesso.

Puoi assegnare più ruoli allo stesso utente. Per un elenco delle autorizzazioni contenute in un ruolo, consulta Acquisizione dei metadati del ruolo.

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

Ruoli personalizzati

Per creare un ruolo personalizzato con le autorizzazioni di Logging, procedi come segue:

Per ulteriori informazioni sui ruoli personalizzati, consulta Comprendere i ruoli personalizzati IAM.

Autorizzazioni API

I metodi dell'API Logging richiedono autorizzazioni IAM specifiche. La tabella riportata di seguito elenca le autorizzazioni necessarie per i metodi API.

Se ti interessano i log contenuti in organizzazioni, account di fatturazione e cartelle di Google Cloud, tieni presente che tali risorse hanno i propri metodi API per logs e sinks. Invece di 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 o
logging.privateLogEntries.list
progetti, organizzazioni,
cartelle, account di fatturazione
entries.tail logging.logEntries.list o
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 projects
projects.exclusions.delete logging.exclusions.delete projects
projects.exclusions.get logging.exclusions.get projects
projects.exclusions.list logging.exclusions.list projects
projects.exclusions.patch logging.exclusions.update projects
projects.logs.list logging.logs.list projects
projects.logs.delete logging.logs.delete projects
projects.sinks.list logging.sinks.list projects
projects.sinks.get logging.sinks.get projects
projects.sinks.create logging.sinks.create projects
projects.sinks.update logging.sinks.update projects
projects.sinks.delete logging.sinks.delete projects
projects.locations.buckets.list logging.buckets.list projects
projects.locations.buckets.get logging.buckets.get projects
projects.locations.buckets.patch logging.buckets.update projects
projects.locations.buckets.create logging.buckets.create projects
projects.locations.buckets.delete logging.buckets.delete projects
projects.locations.buckets.undelete logging.buckets.undelete projects
projects.metrics.list logging.logMetrics.list projects
projects.metrics.get logging.logMetrics.get projects
projects.metrics.create logging.logMetrics.create projects
projects.metrics.update logging.logMetrics.update projects
projects.metrics.delete logging.logMetrics.delete projects

autorizzazioni della console

La tabella seguente contiene 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 in sola lettura logging.logEntries.list
logging.logs.list
logging.logServiceIndexes.list
logging.logServices.list
resourcemanager.projects.get
Possibilità di visualizzare gli audit log di accesso ai dati Aggiungi logging.privateLogEntries.list
Aggiungi la 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}
Aggiungi funzionalità per creare metriche basate su log Aggiungi logging.logMetrics.{list, create, get, update, delete}
Aggiungi la possibilità di salvare le query Aggiungi logging.queries.{list, create, get, update, delete}
Aggiungi possibilità di condivisione di query Aggiungi logging.queries.share
Aggiungi la possibilità di utilizzare le query recenti Aggiungi logging.queries.{create, list}

Autorizzazioni dalla riga di comando

I comandi gcloud logging sono controllati dalle autorizzazioni IAM.

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

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

Autorizzazioni di routing dei log

Per informazioni sull'impostazione dei controlli di accesso durante la creazione e la gestione dei sink per i log di routing, consulta la sezione Configurare i sink: 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 di filtri di esclusione, sono incluse nelle autorizzazioni logging.sinks.*. Quando crei un ruolo personalizzato che include autorizzazioni per gestire i filtri di esclusione, aggiungi le autorizzazioni logging.sinks.* al ruolo anziché aggiungere le autorizzazioni logging.exclusions.*.

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

Autorizzazioni delle metriche basate su log

Di seguito è riportato un riepilogo dei ruoli e delle autorizzazioni comuni di cui un'entità ha bisogno per accedere alle metriche basate su log:

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

  • Visualizzatore log (roles/logging.viewer) consente alle entità di visualizzare le metriche esistenti. Puoi anche aggiungere le autorizzazioni logging.logMetrics.get e logging.logMetrics.list a un ruolo personalizzato.

  • Monitoring Monitoring (roles/monitoring.viewer) consente alle entità di leggere i dati di TimeSeries. Puoi anche aggiungere l'autorizzazione monitoring.timeSeries.list a un ruolo personalizzato.

  • Gli amministratori di logging (roles/logging.admin), l'editor del progetto (roles/editor) e il proprietario del progetto (roles/owner) consentono ai criteri di creare metriche basate su log (logging.logMetrics.create).

Autorizzazioni avvisi basate su log

Di seguito è riportato un riepilogo dei ruoli e delle autorizzazioni comuni di cui un'entità ha bisogno per creare e gestire avvisi basati su log:

  • Amministratore log (roles/logging.admin). In particolare, un'entità deve disporre delle seguenti autorizzazioni per leggere i log e gestire le regole di notifica di Logging:

    • logging.logs.list
    • logging.logEntries.list
    • logging.notificationRules.create
    • logging.notificationRules.update

    Queste autorizzazioni sono incluse nel ruolo Amministratore di Logging. Se non vuoi concedere questo ruolo:

  • Monitoring AlertPolicy Editor (roles/monitoring.alertPolicyEditor) e Monitoring NotificationChannel Editor (roles/monitoring.notificationChannelEditor) include le autorizzazioni necessarie per gestire i criteri di avviso e i canali di notifica utilizzati dagli avvisi basati su log:

    • monitoring.alertPolicies.{create, delete, get, list, update}
    • monitoring.notificationChannelDescriptors.{get, list}
    • monitoring.notificationChannels.{create, delete, get, list, sendVerificationCode, update, verify}

    Le autorizzazioni necessarie sono incluse anche nei ruoli Editor Monitoring (roles/monitoring.editor) e Amministratore Monitoring (roles/monitoring.admin).

    Se non vuoi concedere nessuno di questi ruoli, crea un ruolo personalizzato e includi le autorizzazioni nei ruoli Monitoring Monitoring AlertPolicy e Monitoring NotificationChannel.

Ambiti di accesso ai log

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

I seguenti ambiti di accesso si applicano all'API Logging:

Ambito di 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 legacy per impostare i livelli di accesso degli account di servizio, consulta la pagina relativa alle autorizzazioni dell'account di servizio.