Configurare le visualizzazioni dei log in un bucket di log

Questo documento descrive come creare e gestire le visualizzazioni dei log nei bucket Cloud Logging utilizzando gcloud CLI. Le visualizzazioni dei log offrono un controllo avanzato e granulare su chi ha accesso ai log all'interno dei bucket di log.

Per informazioni generali sul modello di archiviazione di Logging, consulta la panoramica su routing e archiviazione.

Informazioni sulle visualizzazioni log

Le visualizzazioni dei log ti consentono di concedere a un utente l'accesso solo a un sottoinsieme di log archiviati in un bucket di log. Ad esempio, prendi in considerazione uno scenario in cui memorizzi i log della tua organizzazione in un progetto centrale. Puoi creare una visualizzazione log per ogni progetto che contribuisce con i log al bucket di log. Puoi quindi grant each user access to one or more log views, and thereby restrict which logs gli utenti possono visualizzare.

Puoi creare un massimo di 30 visualizzazioni dei log per bucket di log.

Controllare l'accesso a una visualizzazione dei log

Cloud Logging utilizza i criteri IAM per controllare chi ha accesso alle visualizzazioni log. I criteri IAM possono esistere a livello di risorsa, progetto, cartella e organizzazione. Per Cloud Logging, puoi creare un criterio IAM per ogni visualizzazione dei log. Per determinare se un'entità è autorizzata per un'azione, IAM valuta tutti i criteri applicabili, con la prima valutazione a livello di risorsa.

Le entità con il ruolo roles/logging.viewAccessor in un progetto Google Cloud possono accedere alle visualizzazioni e ai log in qualsiasi bucket di log del progetto.

Per concedere a un entità di accesso solo a una visualizzazione dei log specifica, svolgi una delle seguenti operazioni:

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

    Se crei un numero elevato di visualizzazioni dei log, ti consigliamo questo approccio.

  • Concedi all'entità il ruolo IAM roles/logging.viewAccessor nel progetto che contiene la visualizzazione log, ma allega una condizione IAM per limitare la concessione alla visualizzazione log specifica. Se ometti la condizione, concedi all'entità l'accesso a tutte le visualizzazioni di log. Il file di criteri di un progetto Google Cloud prevede un limite di 20 associazioni di ruoli che includono lo stesso ruolo e lo stesso principale, ma espressioni di condizione diverse.

Per ulteriori informazioni, consulta la sezione di questo documento intitolata Concedere l'accesso a una visualizzazione dei log.

Visualizzazioni log create automaticamente

Cloud Logging crea automaticamente una vista _AllLogs per ogni bucket di log e una vista _Default per il bucket di log _Default:

  • Visualizzazione _AllLogs: puoi visualizzare tutti i log nel bucket di log.
  • Visualizzazione _Default: puoi visualizzare tutti gli audit log non relativi all'accesso ai dati nel bucket di log.

Non puoi modificare le visualizzazioni create automaticamente da Cloud Logging, ma puoi eliminare la visualizzazione _AllLogs.

Filtro visualizzazione log

Ogni visualizzazione dei log contiene un filtro che determina quali voci di log sono visibili nella visualizzazione. I filtri possono contenere operatori logici AND e NOT, ma non possono includere operatori logici OR. I filtri possono confrontare uno qualsiasi dei seguenti valori:

  • Un'origine dati che utilizza la funzione source. La funzione source restituisce le voci di log di una determinata risorsa nella gerarchia delle organizzazioni, delle cartelle e dei progetti Google Cloud.

  • Un ID log utilizzando la funzione log_id. La funzione log_id restituisce le voci di log corrispondenti all'argomento LOG_ID fornito dal campo logName.

  • Un tipo di risorsa valido che utilizza il confronto resource.type= FIELD_NAME.

Ad esempio, il seguente filtro acquisisce le voci di log stdout di Compute Engine da un progetto Google Cloud denominato myproject:

source("projects/myproject") AND resource.type = "gce_instance" AND log_id("stdout")

Per informazioni dettagliate sulla sintassi di filtro, consulta Confronti.

Prima di iniziare

Prima di creare o aggiornare una visualizzazione dei log, completa i seguenti passaggi:

  1. Se non l'hai ancora fatto, nel progetto Google Cloud appropriato, crea un bucket di logging per cui vuoi configurare una visualizzazione dei log personalizzata.

  2. Per ottenere le autorizzazioni necessarie per creare e gestire le visualizzazioni log e per concedere l'accesso alle visualizzazioni log, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:

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

    Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

  3. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  4. Determina quali log vuoi includere nella visualizzazione. Utilizza queste informazioni per specificare il filtro della visualizzazione del log.

  5. Determina chi deve avere accesso alla visualizzazione dei log e se vuoi aggiungere associazioni al criterio IAM della visualizzazione dei log o al progetto Google Cloud. Per ulteriori informazioni, consulta Controllare l'accesso a una visualizzazione dei log.

Creare una visualizzazione di log

Per creare una visualizzazione dei log, utilizza il comando gcloud logging views create. Puoi creare un massimo di 30 visualizzazioni dei log per bucket di log.

Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:

  • VIEW_ID: l'identificatore della visualizzazione del log.
  • BUCKET_NAME: il nome del bucket di log.
  • LOCATION: la posizione del bucket di log.
  • FILTER: un filtro che definisce la visualizzazione dei log. Se è vuota, la visualizzazione dei log include tutti i log. Ad esempio, per filtrare in base ai log delle istanze VM di Compute Engine, inserisci "resource.type=gce_instance".
  • DESCRIPTION: una descrizione della visualizzazione del log. Ad esempio, potresti inserire quanto segue per la descrizione "Compute logs".

Esegui il comando gcloud logging views create:

Linux, macOS o Cloud Shell

gcloud logging views create VIEW_ID --bucket=BUCKET_NAME --location=LOCATION --log-filter=FILTER --description=DESCRIPTION

Windows (PowerShell)

gcloud logging views create VIEW_ID --bucket=BUCKET_NAME --location=LOCATION --log-filter=FILTER --description=DESCRIPTION

Windows (cmd.exe)

gcloud logging views create VIEW_ID --bucket=BUCKET_NAME --location=LOCATION --log-filter=FILTER --description=DESCRIPTION

Questo comando non fornisce una risposta. Per confermare le modifiche, puoi eseguire il comando gcloud logging views list.

Quindi, concedi ai principali l'accesso alla visualizzazione dei log.

Concedere l'accesso a una visualizzazione dei log

Per limitare un principale a una visualizzazione dei log specifica in un bucket dei log definito dall'utente, puoi utilizzare due approcci:

  • Puoi utilizzare il file del criterio IAM della visualizzazione dei log.

  • Puoi utilizzare il file del criterio IAM del progetto Google Cloud che memorizza il bucket dei log insieme a una condizione IAM.

Quando crei un numero elevato di visualizzazioni dei log, ti consigliamo di controllare l'accesso utilizzando il file delle norme IAM della visualizzazione dei log.

Visualizzazione log: aggiungi associazioni di ruolo

Questa sezione descrive come utilizzare il file del criterio IAM per una visualizzazione log per controllare chi ha accesso alle voci del log in quella visualizzazione. Quando utilizzi questo approccio, aggiungi un'associazione al file dei criteri della visualizzazione di log, che concede all'entità specificata l'accesso alla visualizzazione di log.

Questa sezione descrive anche come elencare l'associazione dei ruoli contenuta nel file del criterio IAM per una visualizzazione dei log.

Aggiungere un'associazione di ruolo a una visualizzazione log

Per aggiornare il file del criterio IAM di una visualizzazione dei log, compila i seguenti passaggi.

gcloud

Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:

  • VIEW_ID: l'identificatore della visualizzazione del log.
  • PRINCIPAL: un identificatore per l'entità a cui vuoi concedere il ruolo. Gli identificatori principali hanno in genere la seguente forma: PRINCIPAL-TYPE:ID. Ad esempio: user:my-user@example.com. Per un elenco completo dei formati che PRINCIPAL può avere, consulta Identificatori principali.
  • BUCKET_NAME: il nome del bucket di log.
  • LOCATION: la posizione del bucket di log.

Esegui il comando gcloud logging views add-iam-policy-binding:

Linux, macOS o Cloud Shell

gcloud logging views add-iam-policy-binding VIEW_ID --member=PRINCIPAL --role='roles/logging.viewAccessor' --bucket=BUCKET_NAME --location=LOCATION 

Windows (PowerShell)

gcloud logging views add-iam-policy-binding VIEW_ID --member=PRINCIPAL --role='roles/logging.viewAccessor' --bucket=BUCKET_NAME --location=LOCATION 

Windows (cmd.exe)

gcloud logging views add-iam-policy-binding VIEW_ID --member=PRINCIPAL --role='roles/logging.viewAccessor' --bucket=BUCKET_NAME --location=LOCATION 

Di seguito è riportata la risposta quando viene aggiunta una singola associazione:

Updated IAM policy for logging view [projects/PROJECT_ID/locations/global/buckets/BUCKET_NAME/views/VIEW_ID].
bindings:
- members:
  - PRINCIPAL
  role: roles/logging.viewAccessor
etag: BwYXfSd9-Gw=
version: 1

Terraform

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base. Per ulteriori informazioni, consulta la Terraform documentazione di riferimento del provider.

Per eseguire il provisioning delle associazioni IAM per una visualizzazione di log utilizzando Terraform, sono disponibili diverse risorse:

  • google_logging_log_view_iam_policy
  • google_logging_log_view_iam_binding
  • google_logging_log_view_iam_member

Per ulteriori informazioni, consulta Criterio IAM per LogView di Cloud Logging.

Console

Non supportati. Per aggiungere associazioni a una visualizzazione dei log, utilizza Google Cloud CLI.

Elenca le associazioni di ruoli in una visualizzazione dei log

Per elencare le associazioni IAM per una visualizzazione dei log, completa i seguenti passaggi.

gcloud

Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:

  • VIEW_ID: l'identificatore della visualizzazione del log.
  • BUCKET_NAME: il nome del bucket di log.
  • LOCATION: la posizione del bucket di log.

Esegui il comando gcloud logging views get-iam-policy:

Linux, macOS o Cloud Shell

gcloud logging views get-iam-policy VIEW_ID --bucket=BUCKET_NAME --location=LOCATION 

Windows (PowerShell)

gcloud logging views get-iam-policy VIEW_ID --bucket=BUCKET_NAME --location=LOCATION 

Windows (cmd.exe)

gcloud logging views get-iam-policy VIEW_ID --bucket=BUCKET_NAME --location=LOCATION 

Quando una visualizzazione di log non contiene associazioni, la risposta contiene solo un campo etag. Di seguito è illustrata la risposta quando una visualizzazione di log contiene una singola associazione:

bindings:
- members:
  - PRINCIPAL
  role: roles/logging.viewAccessor
etag: BwYXfSd9-Gw=
version: 1

Terraform

Per elencare le associazioni IAM per le visualizzazioni dei log utilizzando Terraform, utilizza l'origine dati google_logging_log_view_iam_policy.

Console

Non supportati. Per elencare le associazioni per una visualizzazione dei log, utilizza Google Cloud CLI.

Progetto Google Cloud: aggiungi associazioni di ruoli

Questa sezione descrive come aggiungere un'associazione di ruolo a un progetto Google Cloud e come elencare le associazioni associate a un progetto. Quando utilizzi questo approccio, per limitare un'entità ad avere accesso alle voci di log archiviate in una visualizzazione log specifica, devi aggiungere una condizione IAM alla concessione.

Aggiungere un'associazione di ruolo a un progetto

Per aggiungere un'associazione di ruolo al file del criterio IAM di un progetto Google Cloud, completa i seguenti passaggi.

gcloud

  1. Crea un file JSON o YAML con la condizione.

    Ad esempio, potresti creare un file denominato condition.yaml con il seguente contenuto:

    expression: "resource.name == \"projects/PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME/views/VIEW_ID\""
    title: "My title"
    description: "My description"
    
  2. (Facoltativo) Per verificare che il file JSON o yaml sia formattato correttamente, esegui il seguente comando:

    gcloud alpha iam policies lint-condition --condition-from-file=condition.yaml
    
  3. Aggiorna il criterio IAM nel progetto Google Cloud chiamando il metodo gcloud projects add-iam-policy-binding.

    Prima di utilizzare il seguente comando, effettua le seguenti sostituzioni:

    • PROJECT_ID: l'identificatore del progetto.
    • PRINCIPAL: un identificatore per l'entità a cui vuoi concedere il ruolo. Gli identificatori principali hanno in genere la seguente forma: PRINCIPAL-TYPE:ID. Ad esempio: user:my-user@example.com. Per un elenco completo dei formati che PRINCIPAL può avere, consulta Identificatori principali.

    Esegui il comando gcloud projects add-iam-policy-binding:

    gcloud projects add-iam-policy-binding PROJECT_ID --member=PRINCIPAL --role='roles/logging.viewAccessor' --condition-from-file=condition.yaml
    

    La risposta al comando precedente include tutte le associazioni di ruoli.

    - condition:
        description: My description
        expression: resource.name == "projects/PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME/views/VIEW_ID"
        title: My title
      members:
      - PRINCIPAL
      role: roles/logging.viewAccessor
    

Terraform

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base. Per ulteriori informazioni, consulta la Terraform documentazione di riferimento del provider.

Per eseguire il provisioning delle associazioni IAM per i progetti utilizzando Terraform, sono disponibili diverse risorse:

  • google_project_iam_policy
  • google_project_iam_binding
  • google_project_iam_member

Per ulteriori informazioni, consulta Norme IAM per i progetti.

Console

Nel progetto in cui hai creato il bucket dei log:

  1. Nella console Google Cloud, vai alla pagina IAM:

    Vai a IAM

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

  2. Fai clic su Concedi accesso.

  3. Nel campo Nuove entità, aggiungi l'account email dell'utente.

  4. Nel menu a discesa Seleziona un ruolo, seleziona Accesso alla visualizzazione dei log.

    Questo ruolo fornisce agli utenti l'accesso in lettura a tutte le visualizzazioni. Per limitare l'accesso degli utenti a una visualizzazione specifica, aggiungi una condizione in base al nome della risorsa.

    1. Fai clic su Aggiungi condizione IAM.

    2. Inserisci un Titolo e una Descrizione per la condizione.

    3. Nel menu a discesa Tipo di condizione, seleziona Risorsa > Nome.

    4. Nel menu a discesa Operatore, seleziona è.

    5. Nel campo Valore, inserisci l'ID della visualizzazione dei log, incluso il percorso completo della visualizzazione.

      Ad esempio:

      projects/PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME/views/VIEW_ID
    6. Fai clic su Salva per aggiungere la condizione.

  5. Fai clic su Salva per impostare le autorizzazioni.

Elenco delle associazioni di ruoli in un progetto

Per elencare le associazioni di ruolo in un progetto Google Cloud, completa i seguenti passaggi.

gcloud

Prima di utilizzare il seguente comando, effettua le seguenti sostituzioni:

  • PROJECT_ID: l'identificatore del progetto.

Esegui il comando gcloud projects get-iam-policy:

gcloud projects get-iam-policy PROJECT_ID

La risposta al comando precedente include tutte le associazioni di ruoli.

- condition:
    description: My description
    expression: resource.name == "projects/PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME/views/VIEW_ID"
    title: My title
  members:
  - PRINCIPAL
  role: roles/logging.viewAccessor

Terraform

Per elencare le associazioni IAM per i progetti utilizzando Terraform, utilizza l'origine dati google_project_iam_policy.

Console

Nella console Google Cloud, vai alla pagina IAM:

Vai a IAM

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

La pagina IAM elenca tutte le entità, i relativi ruoli IAM e eventuali condizioni associate a questi ruoli.

Elenca le visualizzazioni dei log in un bucket di log

Per elencare le visualizzazioni dei log create per un bucket dei log, utilizza il comando gcloud logging views list.

Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:

  • BUCKET_NAME: il nome del bucket di log.
  • LOCATION: la posizione del bucket di log.

Esegui il comando gcloud logging views list:

Linux, macOS o Cloud Shell

gcloud logging views list --bucket=BUCKET_NAME --location=LOCATION

Windows (PowerShell)

gcloud logging views list --bucket=BUCKET_NAME --location=LOCATION

Windows (cmd.exe)

gcloud logging views list --bucket=BUCKET_NAME --location=LOCATION

I dati della risposta sono un elenco di visualizzazioni di log. Per ogni visualizzazione dei log, il filtro viene mostrato insieme alle date di creazione e dell'ultimo aggiornamento. Quando le date di creazione e aggiornamento sono vuote, la visualizzazione dei log è stata creata al momento della creazione del progetto Google Cloud. Il seguente esempio di output mostra che esistono due ID visualizzazione, _AllLogs e compute, nel bucket di log su cui è stata eseguita la query:

VIEW_ID: _AllLogs
FILTER:
CREATE_TIME:
UPDATE_TIME:

VIEW_ID: compute
FILTER: resource.type="gce_instance"
CREATE_TIME: 2024-02-20T17:41:17.405162921Z
UPDATE_TIME: 2024-02-20T17:41:17.405162921Z

Aggiornare una visualizzazione di log

Per aggiornare o modificare una visualizzazione dei log, utilizza il comando gcloud logging views update. Se non conosci l'ID vista, consulta Elenco delle visualizzazioni dei log.

Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:

  • VIEW_ID: l'identificatore della visualizzazione del log.
  • BUCKET_NAME: il nome del bucket di log.
  • LOCATION: la posizione del bucket di log.
  • FILTER: un filtro che definisce la visualizzazione dei log. Se è vuota, la visualizzazione dei log include tutti i log. Ad esempio, per filtrare in base ai log delle istanze VM di Compute Engine, inserisci "resource.type=gce_instance".
  • DESCRIPTION: una descrizione della visualizzazione del log. Ad esempio, potresti inserire quanto segue per la descrizione "New description for the log view".

Esegui il comando gcloud logging views update:

Linux, macOS o Cloud Shell

gcloud logging views update VIEW_ID --bucket=BUCKET_NAME --location=LOCATION --log-filter=FILTER --description=DESCRIPTION

Windows (PowerShell)

gcloud logging views update VIEW_ID --bucket=BUCKET_NAME --location=LOCATION --log-filter=FILTER --description=DESCRIPTION

Windows (cmd.exe)

gcloud logging views update VIEW_ID --bucket=BUCKET_NAME --location=LOCATION --log-filter=FILTER --description=DESCRIPTION

Questo comando non fornisce una risposta. Per confermare le modifiche, puoi eseguire il comando gcloud logging views describe.

Eliminare una visualizzazione di log

Quando non hai più bisogno di una visualizzazione dei log che hai creato, puoi eliminarla. Tuttavia, prima di eliminare una visualizzazione log, ti consigliamo di verificare che non sia richiamata da un'altra risorsa, ad esempio una query salvata.

Non puoi eliminare la visualizzazione dei log _Default nel bucket di log _Default.

Per eliminare una visualizzazione dei log:

  1. Consiglio: controlla il tuo progetto Google Cloud per assicurarti che non venga fatto riferimento alla visualizzazione dei log. Valuta la possibilità di esaminare quanto segue:

    • Le query vengono eseguite dalle pagine Esplora log o Analisi dei log salvate o condivise.
    • Dashboard personalizzate.
  2. Utilizza il comando gcloud logging views delete. Se non conosci l'ID vista, consulta Elenco delle visualizzazioni dei log.

    Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:

    • VIEW_ID: l'identificatore della visualizzazione del log.
    • BUCKET_NAME: il nome del bucket di log.
    • LOCATION: la posizione del bucket di log.

    Esegui il comando gcloud logging views delete:

    Linux, macOS o Cloud Shell

    gcloud logging views delete VIEW_ID --bucket=BUCKET_NAME --location=LOCATION

    Windows (PowerShell)

    gcloud logging views delete VIEW_ID --bucket=BUCKET_NAME --location=LOCATION

    Windows (cmd.exe)

    gcloud logging views delete VIEW_ID --bucket=BUCKET_NAME --location=LOCATION

    La risposta conferma l'eliminazione. Ad esempio, di seguito è riportata la risposta all'eliminazione di una visualizzazione del log denominata tester:

    Deleted [tester].
    

Descrivi una visualizzazione di log

Per recuperare informazioni dettagliate su una visualizzazione dei log, utilizza il comando gcloud logging views describe. Se non conosci l'ID vista, consulta Elenco delle visualizzazioni dei log.

Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:

  • VIEW_ID: l'identificatore della visualizzazione del log.
  • BUCKET_NAME: il nome del bucket di log.
  • LOCATION: la posizione del bucket di log.

Esegui il comando gcloud logging views describe:

Linux, macOS o Cloud Shell

gcloud logging views describe VIEW_ID --bucket=BUCKET_NAME --location=LOCATION

Windows (PowerShell)

gcloud logging views describe VIEW_ID --bucket=BUCKET_NAME --location=LOCATION

Windows (cmd.exe)

gcloud logging views describe VIEW_ID --bucket=BUCKET_NAME --location=LOCATION

La risposta include sempre la descrizione e il nome completo della visualizzazione dei log. Include anche il filtro, se il campo del filtro non è vuoto. Di seguito è riportata un'esempio di risposta:

createTime: '2024-02-20T17:41:17.405162921Z'
filter: resource.type="gce_instance"
name: projects/my-project/locations/global/buckets/my-bucket/views/compute
updateTime: '2024-02-20T17:41:17.405162921Z'

Visualizzare i log associati a una visualizzazione dei log

Per visualizzare i log in una visualizzazione log, assicurati di disporre del ruolo Funzione di accesso alla visualizzazione log (roles/logging.viewAccessor) per la visualizzazione log:

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

    Vai a Esplora log

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

  2. Nella barra degli strumenti, fai clic su Perfeziona ambito, poi su Visualizzazione log e seleziona le visualizzazioni log.

Per ulteriori informazioni, consulta la documentazione di Logs Explorer.

Passaggi successivi

Per scoprire come controllare l'accesso a campi specifici in una voce di log, consulta Configurare l'accesso a livello di campo.