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 nell'interfaccia a riga di comando Google Cloud.

Panoramica

Le autorizzazioni e i ruoli IAM determinano la tua capacità 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 autorizzazioni a un'entità direttamente, ma devi assegnarle un ruolo. Se concedi un ruolo a un'entità, le concedi 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 Google Cloud , un'entità deve disporre di un ruolo IAM che contenga 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 gestisce questi ruoli e aggiorna automaticamente le relative autorizzazioni in base alle necessità, ad esempio quando Logging aggiunge nuove funzionalità.

La tabella seguente elenca 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 possono essere concessi i ruoli. Puoi concedere i ruoli predefiniti a livello di progetto o, nella maggior parte dei casi, a qualsiasi tipo di livello superiore nella gerarchia delle risorse. Google Cloud Per limitare il ruolo Visualizzatore log a una visualizzazione dei log in un bucket, utilizza gli attributi delle risorse per le condizioni IAM.

Per ottenere un elenco di tutte le singole autorizzazioni contenute in un ruolo, consulta Recuperare i metadati del ruolo.

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.createTagBinding

logging.buckets.delete

logging.buckets.deleteTagBinding

logging.buckets.get

logging.buckets.list

logging.buckets.listEffectiveTags

logging.buckets.listTagBindings

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.logScopes.*

  • logging.logScopes.create
  • logging.logScopes.delete
  • logging.logScopes.get
  • logging.logScopes.list
  • logging.logScopes.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.deleteShared
  • logging.queries.getShared
  • logging.queries.listShared
  • logging.queries.share
  • logging.queries.updateShared
  • logging.queries.usePrivate

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.sqlAlerts.*

  • logging.sqlAlerts.create
  • logging.sqlAlerts.update

logging.usage.get

logging.views.*

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

observability.scopes.get

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.createTagBinding

logging.buckets.delete

logging.buckets.deleteTagBinding

logging.buckets.get

logging.buckets.list

logging.buckets.listEffectiveTags

logging.buckets.listTagBindings

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.logScopes.*

  • logging.logScopes.create
  • logging.logScopes.delete
  • logging.logScopes.get
  • logging.logScopes.list
  • logging.logScopes.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.sqlAlerts.*

  • logging.sqlAlerts.create
  • logging.sqlAlerts.update

logging.views.create

logging.views.delete

logging.views.get

logging.views.getIamPolicy

logging.views.list

logging.views.update

observability.scopes.get

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.operations.get

logging.operations.list

logging.privateLogEntries.list

logging.queries.getShared

logging.queries.listShared

logging.queries.usePrivate

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.access

logging.views.get

logging.views.list

observability.scopes.get

resourcemanager.projects.get

(roles/logging.serviceAgent)

Grants a Cloud Logging Service Account the ability to create and link datasets.

bigquery.datasets.create

bigquery.datasets.get

bigquery.datasets.link

(roles/logging.sqlAlertWriter)

Ability to write SQL Alerts.

logging.sqlAlerts.*

  • logging.sqlAlerts.create
  • logging.sqlAlerts.update

(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.logScopes.get

logging.logScopes.list

logging.logServiceIndexes.list

logging.logServices.list

logging.logs.list

logging.operations.get

logging.operations.list

logging.queries.getShared

logging.queries.listShared

logging.queries.usePrivate

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.get

logging.views.list

observability.scopes.get

resourcemanager.projects.get

Le sezioni seguenti forniscono ulteriori informazioni per aiutarti a decidere quali ruoli si applicano ai casi d'uso delle tue 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, assegna il ruolo Autore configurazione log (roles/logging.configWriter). Questo ruolo ti consente di creare o modificare uno dei seguenti elementi:

    Questo ruolo non è sufficiente per creare metriche basate su log o policy di avviso basate su log. Per informazioni sui ruoli richiesti per queste attività, consulta Autorizzazioni per le metriche basate su log e Autorizzazioni per le policy di avviso basate su log.

  • Per consentire a un utente di leggere i log nei bucket _Required e _Default o di utilizzare le pagine Esplora log e Log Analytics, concedi uno dei seguenti ruoli:

    • Per accedere a tutti i log nel bucket _Required e alla visualizzazione _Default nel 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 in tutte le visualizzazioni log di un progetto, concedigli il ruolo IAM roles/logging.viewAccessor nel progetto.

  • Per consentire a un utente di leggere solo i log in una visualizzazione log specifica, hai due opzioni:

    • Crea un criterio IAM per la visualizzazione dei log, quindi aggiungi un'associazione IAM a questo criterio che conceda all'entità l'accesso alla visualizzazione dei log.

    • Concedi all'entità il ruolo IAM roles/logging.viewAccessor sul progetto che contiene la visualizzazione dei log, ma associa una condizione IAM per limitare la concessione alla visualizzazione dei log specifica.

    Per informazioni sulla creazione di visualizzazioni dei log e sulla concessione dell'accesso, consulta Configurare le visualizzazioni dei log in un bucket di log.

  • Per concedere a un utente l'accesso ai campi LogEntry con restrizioni, se presenti, in un determinato bucket di log, concedi il ruolo Logs Field Accessor (roles/logging.fieldAccessor). Per saperne di più, consulta la pagina 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 autorizzazioni di visualizzazione.

  • Per consentire al account di servizio di un sink di eseguire il routing dei log a un bucket in un progetto Google Cloud diverso, concedi al account di servizio il ruolo Writer bucket di log (roles/logging.bucketWriter). Per istruzioni su come concedere le autorizzazioni a un account di servizio, vedi 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 di editor alla maggior parte dei Google Cloud servizi, concedi il ruolo Editor (roles/editor).

    Questo ruolo include tutte le autorizzazioni concesse dal ruolo Visualizzatore log (roles/logging.viewer) e le autorizzazioni per scrivere voci di log, eliminare log e creare metriche basate su log. Tuttavia, questo ruolo non consente agli utenti di creare sink, leggere i log di controllo dell'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 , assegna il ruolo Proprietario (roles/owner).

Concessione dei ruoli in corso…

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

Puoi concedere più ruoli allo stesso utente. Per ottenere un elenco delle autorizzazioni contenute in un ruolo, consulta Recuperare i metadati del ruolo.

Se stai cercando di accedere a una risorsa Google Cloud e non disponi delle autorizzazioni necessarie, contatta il principal indicato come Proprietario della risorsa.

Ruoli personalizzati

Per creare un ruolo personalizzato con autorizzazioni Logging, procedi nel seguente modo:

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

Autorizzazioni Cloud Logging

La seguente tabella è un elenco parziale delle autorizzazioni necessarie per funzionalità specifiche di Cloud Logging. Questa tabella può aiutarti a identificare le autorizzazioni necessarie per utilizzare pagine come Esplora log.

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

Attività della console Autorizzazioni obbligatorie
Accesso di sola lettura minimo logging.logEntries.list
logging.logs.list
logging.logServiceIndexes.list
logging.logServices.list
resourcemanager.projects.get
Visualizzare gli audit log di accesso ai dati logging.privateLogEntries.list
Visualizzare le metriche basate su log logging.logMetrics.{list, get}
Visualizza sink logging.sinks.{list, get}
Visualizzare l'utilizzo dei log logging.usage.get
Scarica i log logging.logEntries.{list, download}

Per scaricare i log è necessaria solo una di queste autorizzazioni. I ruoli contenenti le autorizzazioni per scaricare i log devono essere concessi a livello di progetto. Non puoi scaricare i log se un ruolo contenente queste autorizzazioni viene concesso nel file dei criteri IAM di una visualizzazione di log.

Elenca e visualizza gli ambiti dei log logging.logScopes.{get, list}
Visualizzare l'ambito dei log predefinito observability.scopes.get
Escludere i log logging.exclusions.{list, create, get, update, delete}

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.*.

Creare e utilizzare sink logging.sinks.{list, create, get, update, delete}

Quando crei un sink, devi anche concedere al account di servizio un ruolo IAM che gli consenta di scrivere voci di log nella destinazione. Per ulteriori informazioni, vedi Impostare le autorizzazioni della destinazione.

Una volta che le voci di log sono state indirizzate a una destinazione supportata, l'accesso alle voci di log è controllato interamente da ruoli e autorizzazioni IAM nella destinazione.

Crea avvisi basati su log Consulta Ruoli richiesti per creare e utilizzare criteri di avviso basati su log.
Creare metriche basate su log logging.logMetrics.{list, create, get, update, delete}

Per informazioni sugli altri ruoli IAM che devi creare e utilizzare per le metriche basate su log, consulta Ruoli richiesti per creare e utilizzare metriche basate su log.

Salvare e utilizzare le query private logging.queries.usePrivate
logging.queries.{listShared,getShared}
Salvare e utilizzare le query condivise logging.queries.{share, getShared, updateShared, deleteShared, listShared}
Utilizzare le query recenti logging.queries.{create, list}
Creare e gestire gli ambiti dei log logging.logScopes.{create, delete, get, list, update}
Impostare e gestire l'ambito dei log predefinito observability.scopes.{get, update}
Creare e gestire le viste di Analytics observability.analyticsViews.{create, delete, get, list, update}

Autorizzazioni per la riga di comando

I comandi gcloud logging sono controllati dalle autorizzazioni IAM.

Per utilizzare uno dei comandi gcloud logging, i principal devono disporre dell'autorizzazione serviceusage.services.use.

Un'entità deve anche disporre del ruolo IAM corrispondente alla risorsa del log e al caso d'uso. Per maggiori dettagli, vedi Autorizzazioni dell'interfaccia a riga di comando.

Ruoli richiesti per creare e utilizzare le 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:

  • 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. Nello specifico, un principal deve disporre delle autorizzazioni logging.logMetrics.get e logging.logMetrics.list per visualizzare le metriche esistenti.

  • Il ruolo Visualizzatore monitoraggio (roles/monitoring.viewer) contiene le autorizzazioni per leggere i dati TimeSeries. Nello specifico, un principal ha bisogno dell'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. Nello specifico, un principal deve disporre dell'autorizzazione logging.logMetrics.create per creare metriche basate su log.

Ruoli richiesti per creare e utilizzare policy di avviso basate su log

Per creare e gestire criteri di avviso basati su log, un principal deve disporre dei seguenti ruoli e autorizzazioni di Logging e Monitoring:

  • Per ottenere le autorizzazioni necessarie per creare policy di avviso basate su log in Monitoring e per creare le regole di notifica di Logging associate, chiedi all'amministratore di concederti i seguenti ruoli IAM sul progetto:

    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 creare policy di avviso basate su log in Monitoring e per creare le regole di notifica di Logging associate. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:

    Autorizzazioni obbligatorie

    Per creare policy di avviso basate su log in Monitoring e per creare le regole di notifica di Logging associate sono necessarie le seguenti autorizzazioni:

    • monitoring.alertPolicies.create
    • logging.notificationRules.create

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

Se crei il criterio di avviso in Google Cloud CLI, è necessario anche il seguente ruolo o autorizzazione:

  • Per ottenere l'autorizzazione necessaria per creare una criterio di avviso utilizzando la Google Cloud CLI, chiedi all'amministratore di concederti il ruolo IAM Consumer di Service Usage (roles/serviceusage.serviceUsageConsumer) nel tuo progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

    Questo ruolo predefinito contiene l'autorizzazione serviceusage.services.use necessaria per creare una criterio di avviso utilizzando Google Cloud CLI.

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

Se il tuo progetto Google Cloud ha già canali di notifica, puoi configurare la tua criterio di avviso in modo che utilizzi un canale esistente senza ruoli o autorizzazioni aggiuntivi. Tuttavia, se devi creare un canale di notifica per il criterio di avviso basato su log, è necessario il seguente ruolo o autorizzazione:

  • Per ottenere l'autorizzazione necessaria per creare un canale di notifica per una criterio di avviso basata su log, chiedi all'amministratore di concederti il ruolo IAM Editor canali di notifica Monitoring (roles/monitoring.notificationChannelEditor) nel progetto.

    Questo ruolo predefinito contiene l'autorizzazione monitoring.notificationChannels.create necessaria per creare un canale di notifica per una criterio di avviso basata su log.

Autorizzazioni per le policy di avviso basate su SQL

Le policy di avviso basate su SQL valutano i risultati di una query SQL eseguita sui dati di gruppi di voci di log. Per informazioni sui ruoli richiesti per creare e gestire criteri di avviso basati su SQL, consulta la sezione Prima di iniziare in Monitorare i risultati delle query SQL con un criterio di avviso.

Ambiti di accesso per la registrazione

Gli ambiti di accesso sono il metodo legacy per specificare le autorizzazioni per i service account sulle 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 abilitate. Google Cloud

Per informazioni sull'utilizzo di questo metodo legacy per impostare i livelli di accesso degli account di servizio, vedi Ambiti di accesso.