Controllo dell'accesso con IAM

Cloud Logging utilizza ruoli e autorizzazioni di Identity and Access Management (IAM) per consentirti di controllare chi può visualizzare, scrivere e gestire le risorse di Logging. I tuoi ruoli IAM determinano se puoi creare sink di log o bucket di log, leggere i dati di log archiviati in un bucket di log o accedere a pagine come Esplora log. Quando esegui un comando dell'API Cloud Logging o di Google Cloud CLI, i tuoi ruoli IAM determinano anche se hai l'autorizzazione per eseguire il comando.

Panoramica

I tuoi ruoli IAM determinano le azioni che puoi eseguire all'interno di Logging. Un ruolo è una raccolta di autorizzazioni. Quando concedi un ruolo a un'entità, le concedi tutte le autorizzazioni incluse nel ruolo. Puoi concedere più ruoli alla stessa entità.

I ruoli IAM vengono concessi su una risorsa, ad esempio un progetto, una cartella, un bucket o un'organizzazione Google Cloud . Ad esempio, puoi concedere a un'entità il ruolo Visualizzatore log (roles/logging.viewer) su un progetto Google Cloud specifico.

Le sezioni Ruoli predefiniti e Ruoli di Logging di questa pagina forniscono informazioni complete sui ruoli e sulle autorizzazioni di Logging. Altre sezioni di questa pagina forniscono informazioni su ruoli o autorizzazioni per casi d'uso specifici.

Il resto di questa sezione riassume come puoi concedere a un'entità l'accesso ai bucket di log o concedere l'accesso solo ad alcune voci di log in un bucket di log.

Concedi l'accesso ai bucket di log

Il ruolo Visualizzatore log (roles/logging.viewer) consente a un'entità di accedere a tutti i dati di log archiviati nei bucket di log _Required e _Default, ad eccezione dei log di accesso ai dati. Se un'entità deve accedere ai log di accesso ai dati, concedi il ruolo Visualizzatore log privati (roles/logging.privateLogViewer).

Per i bucket di log personalizzati, puoi concedere l'accesso alla visualizzazione _AllLogs o a una visualizzazione log personalizzata. Logging crea automaticamente la visualizzazione _AllLogs, che include tutte le voci di log nel bucket di log. Per concedere l'accesso a una visualizzazione log, aggiungi un'associazione IAM alla policy IAM collegata alla visualizzazione log o al progetto. Per saperne di più, consulta Controlla l'accesso a una visualizzazione log.

Logging supporta anche i tag sui bucket di log, che possono aiutarti a comprendere i costi. Puoi anche utilizzare i tag per impedire a un utente di eliminare un bucket di log. Per saperne di più, consulta Utilizza i tag per gestire l'accesso ai bucket di log.

Concedi l'accesso ad alcune voci di log in un bucket di log

Per concedere a un'entità l'accesso solo ad alcune delle voci di log archiviate in un bucket di log, crea una visualizzazione dei log e concedi all'entità l'accesso alla visualizzazione dei log. Ad esempio, puoi creare una visualizzazione log nel bucket di log _Default che includa solo le voci di log il cui tipo di risorsa è un'istanza Compute Engine. Per scoprire di più sulla creazione di visualizzazioni dei log e sulle diverse strategie che puoi utilizzare per concedere l'accesso alla visualizzazione, consulta Configura le visualizzazioni dei log su un bucket di log.

Ruoli predefiniti

IAM fornisce ruoli predefiniti per concedere un 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 è possibile concedere i ruoli. Puoi concedere i ruoli predefiniti a livello di progetto Google Cloud o, nella maggior parte dei casi, a qualsiasi tipo superiore nella gerarchia delle risorse. Per limitare il ruolo Visualizzatore di visualizzazioni log a una visualizzazione log su 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 Recupero dei 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:

  • View

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

  • View

logging.buckets.get

logging.buckets.list

logging.buckets.listEffectiveTags

logging.buckets.listTagBindings

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

logging.notificationRules.list

logging.operations.get

logging.operations.list

logging.privateLogEntries.list

logging.queries.getShared

logging.queries.listShared

logging.queries.usePrivate

logging.settings.get

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.access

logging.views.get

logging.views.getIamPolicy

logging.views.list

observability.scopes.get

resourcemanager.projects.get

(roles/logging.viewer)

Provides access to view logs.

Lowest-level resources where you can grant this role:

  • View

logging.buckets.get

logging.buckets.list

logging.buckets.listEffectiveTags

logging.buckets.listTagBindings

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

logging.notificationRules.list

logging.operations.get

logging.operations.list

logging.queries.getShared

logging.queries.listShared

logging.queries.usePrivate

logging.settings.get

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.get

logging.views.getIamPolicy

logging.views.list

observability.scopes.get

resourcemanager.projects.get

(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:

  • View

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

  • View

logging.logEntries.download

logging.views.access

logging.views.listLogs

logging.views.listResourceKeys

logging.views.listResourceValues

Service agent roles

Service agent roles should only be granted to service agents.

Role Permissions

(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

Le sezioni seguenti forniscono ulteriori informazioni 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, concedi il ruolo Logs Configuration Writer (roles/logging.configWriter). Questo ruolo ti consente di creare o modificare uno dei seguenti elementi:

  • Per consentire a un utente di leggere i log nei bucket _Required e _Default o di utilizzare la pagina Esplora log, 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 una policy IAM per la visualizzazione log, quindi aggiungi un'associazione IAM a questa policy che conceda all'entità l'accesso alla visualizzazione log.

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

    Per informazioni sulla creazione di visualizzazioni log e sulla concessione dell'accesso, consulta Configura le visualizzazioni log su un bucket di log.

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

  • Per consentire al account di servizio di un sink di indirizzare i log a un bucket in un progetto Google Cloud diverso, concedi al account di servizio il ruolo Logs Bucket Writer (roles/logging.bucketWriter). Per istruzioni su come concedere le autorizzazioni a un account di servizio, consulta Imposta le autorizzazioni della 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 come editor 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 le autorizzazioni per scrivere voci di log ed eliminare 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 , concedi 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 Recupero dei metadati del ruolo.

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

Ruoli personalizzati

Per creare un ruolo personalizzato con le autorizzazioni di Logging, segui questi passaggi:

Per saperne di più sui ruoli personalizzati, consulta Informazioni sui ruoli IAM personalizzati.

Autorizzazioni di Cloud Logging

La tabella seguente è 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} indica 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
Visualizza i log di controllo dell'accesso ai dati logging.privateLogEntries.list
Visualizza sink logging.sinks.{list, get}
Visualizza 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 della policy IAM di una visualizzazione log.

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

Quando crei un ruolo personalizzato che include le autorizzazioni per gestire i filtri di esclusione, aggiungi al ruolo le autorizzazioni logging.sinks.* anziché le autorizzazioni logging.exclusions.*.

Crea e utilizza i 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, consulta Imposta le autorizzazioni della destinazione.

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

Salva e utilizza le query private logging.queries.usePrivate
logging.queries.{listShared,getShared}
Salva e utilizza le query condivise logging.queries.{share, getShared, updateShared, deleteShared, listShared}
Crea e gestisci gli ambiti di log logging.logScopes.{create, delete, get, list, update}
Imposta e gestisci l'ambito dei log predefinito observability.scopes.{get, update}

Autorizzazioni per la riga di comando

I comandi gcloud logging sono controllati dalle autorizzazioni IAM.

Per utilizzare uno dei comandi gcloud logging, le entità devono disporre dell'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.