Aggrega e archivia i log dell'organizzazione

Un sink aggregato non intercettante consente di indirizzare le voci di log da tutta la tua Google Cloud organizzazione a una posizione centrale, consentendo al contempo alle risorse figlio di indirizzare e archiviare le proprie copie di questi log. In questo tutorial, creerai un sink aggregato non intercettante a livello di organizzazione che indirizza gli audit log della tua organizzazione a un Google Cloud progetto, dove un sink a livello di progetto li indirizza a un bucket di log centrale. Configurerai quindi l'accesso in lettura a una visualizzazione di log su quel bucket ed eseguirai query sugli audit log aggregati in Esplora log.

Puoi anche configurare un sink aggregato in modo che intercetti le voci di log se vuoi controllare quali voci di log possono essere sottoposte a query o indirizzate nelle risorse figlio. Per saperne di più, consulta Panoramica dei sink aggregati. Se stai configurando una nuova organizzazione, puoi anche configurare il logging centralizzato come parte della Google Cloud procedura di configurazione.

Prima di iniziare

Assicurati di quanto segue:

  • Per ottenere le autorizzazioni necessarie per centralizzare l'archiviazione creando un sink aggregato a livello di organizzazione che indirizza le voci di log a un progetto, chiedi all'amministratore di concederti i seguenti ruoli IAM:

    • Per creare il sink aggregato: Writer di configurazione dei log (roles/logging.configWriter) nella tua organizzazione
    • Per concedere ruoli IAM a un account di servizio e creare un bucket di log: Proprietario (roles/owner) nel tuo progetto

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

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

  • Nella Google Cloud console, attiva Cloud Shell.

    Attiva Cloud Shell

    Nella parte inferiore della Google Cloud console viene avviata una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già inclusa e installata e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.

Crea un bucket di log

I bucket di log archiviano le voci di log indirizzate da altri Google Cloud progetti, cartelle o organizzazioni. Per saperne di più, consulta Configura i bucket di log.

Per creare il bucket di log nel Google Cloud progetto in cui vuoi aggregare le voci di log, completa i seguenti passaggi:

  1. Apri una shell.

    Ad esempio, per utilizzare Cloud Shell:

    1. Vai alla Google Cloud console:

      Vai alla Google Cloud console

    2. Nella barra degli strumenti, fai clic su  Attiva Cloud Shell.
  2. Nella shell, esegui il gcloud logging buckets create comando.

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

    • BUCKET_NAME: il nome del bucket di log.
    • LOCATION: la località del bucket di log. Dopo aver creato il bucket di log, non puoi modificarne la località.
    • PROJECT_ID: l'identificatore del progetto in cui creare il bucket di log.

    Esegui il comando gcloud logging buckets create:

    gcloud logging buckets create BUCKET_NAME \
      --location=LOCATION --project=PROJECT_ID
    
  3. Verifica che il bucket di log sia stato creato:

    gcloud logging buckets list --project=PROJECT_ID
    

    La risposta del comando è un elenco dei bucket di log nel tuo progetto.

  4. I bucket di log hanno periodi di conservazione configurabili. Se vuoi impostare il periodo di conservazione delle voci di log nel bucket di log, utilizza il comando gcloud logging buckets update. Ad esempio, il comando seguente estende la conservazione delle voci di log archiviate nel bucket di log a 365 giorni:

    gcloud logging buckets update BUCKET_NAME \
       --location=LOCATION --project=PROJECT_ID \
       --retention-days=365
    

    Per saperne di più sui flag, consulta gcloud logging buckets update.

Crea il sink di log a livello di progetto

Indirizza le voci di log a un bucket di log creando un sink. Un sink include un filtro di inclusione, filtri di esclusione e una destinazione. In questo tutorial, configurerai un filtro di inclusione e la destinazione per il nuovo bucket di log. Il sink non contiene filtri di esclusione. Per saperne di più sui sink, consulta Instrada i log verso destinazioni supportate.

Per creare un sink che indirizzi le voci di log al bucket di log appena creato, esegui il comando gcloud logging sinks create.

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

  • PROJECT_LEVEL_SINK_NAME: il nome del sink di log a livello di progetto.
  • SINK_DESTINATION: il bucket di log in cui vengono indirizzate le voci di log. Le destinazioni dei sink devono utilizzare l'endpoint globale (logging.googleapis.com); gli endpoint regionali (REP) non sono supportati. Il formato del percorso di destinazione per un bucket di log è il seguente:

    logging.googleapis.com/projects/PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME
    
  • PROJECT_ID: l'identificatore del progetto in cui creare il sink di log. Imposta questo flag sullo stesso progetto in cui hai creato il bucket di log.

  • Includi i seguenti flag:

    • --log-filter: utilizza questo flag per impostare un filtro che corrisponda alle voci di log che vuoi includere nel sink. In questo tutorial, il filtro è impostato per selezionare tutte le voci di log di controllo. Se non imposti un filtro, tutte le voci di log del tuo Google Cloud progetto vengono indirizzate alla destinazione.
    • --description: utilizza questo flag per descrivere lo scopo o il caso d'uso del sink.

Esegui il comando gcloud logging sinks create:

gcloud logging sinks create PROJECT_LEVEL_SINK_NAME SINK_DESTINATION \
  --project=PROJECT_ID \
  --log-filter='logName:cloudaudit.googleapis.com' \
  --description="Audit logs from my organization"

Crea il sink aggregato

I sink aggregati combinano e indirizzano le voci di log dalle risorse contenute in un'organizzazione o in una cartella a una destinazione.

In questo tutorial, creerai un sink aggregato non intercettante. Ciò significa che ogni voce di log indirizzata dal sink aggregato viene indirizzata anche dai sink nella risorsa in cui ha origine la voce di log. Ad esempio, un audit log che ha origine in un progetto viene indirizzato dal sink aggregato e dai sink in quel progetto. Di conseguenza, è possibile archiviare più copie di una voce di log.

Puoi anche creare sink intercettanti. Per saperne di più, consulta Panoramica dei sink aggregati.

Configura il sink a livello di organizzazione

Per creare un sink aggregato non intercettante che indirizzi le voci di log a un progetto:

  1. Esegui il gcloud logging sinks create comando.

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

    • SINK_NAME: il nome del sink di log. Non puoi modificare il nome di un sink dopo averlo creato.
    • PROJECT_ID: l'identificatore del progetto che archivia il bucket di log.
    • ORGANIZATION_ID: l'identificatore dell'organizzazione.

    Esegui il comando gcloud logging sinks create:

    gcloud logging sinks create SINK_NAME \
      logging.googleapis.com/projects/PROJECT_ID  \
      --log-filter='logName:cloudaudit.googleapis.com' \
      --description="Audit logs from my organization" \
      --organization=ORGANIZATION_ID \
      --include-children
    

    Il flag --include-children è importante. Questo flag garantisce che le voci di log di tutti i Google Cloud progetti e le cartelle all'interno dell'organizzazione vengano indirizzate. Per saperne di più, consulta Raccogli e indirizza i log a livello di organizzazione e cartella verso destinazioni supportate.

  2. Verifica che il sink sia stato creato:

    gcloud logging sinks list --organization=ORGANIZATION_ID
    
  3. Recupera il nome del account di servizio:

    gcloud logging sinks describe SINK_NAME --organization=ORGANIZATION_ID
    

    L'output è simile al seguente:

    writerIdentity: serviceAccount:o1234567890-ORGANIZATION_ID@gcp-sa-logging.iam.gserviceaccount.com
    
  4. Copia il valore del campo serviceAccount negli appunti.

Concedi l'accesso al sink

Dopo aver creato il sink aggregato, devi concedere l'autorizzazione al sink per scrivere le voci di log nel progetto che hai impostato come destinazione. Puoi concedere l'autorizzazione utilizzando la Google Cloud console o modificando la policy IAM (Identity and Access Management), come descritto in Imposta le autorizzazioni di destinazione.

Se il progetto di destinazione Google Cloud è protetto da un perimetro di servizio dei Controlli di servizio VPC, devi anche aggiungere una regola di ingresso al perimetro di destinazione che consenta l'accesso dal account di servizio del sink. Non devi configurare una regola di ingresso per i sink non aggregati. Per saperne di più, consulta Raccogli e indirizza i log a livello di organizzazione e cartella verso destinazioni supportate: limitazioni.

Per concedere al sink l'autorizzazione a scrivere le voci di log:

  1. Nella Google Cloud console, 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. Seleziona il Google Cloud progetto che contiene il bucket di log.

  3. Fai clic su Concedi l'accesso e aggiungi il account di servizio come nuova entità. Non includere il prefisso serviceAccount:.

  4. Nel menu Seleziona un ruolo, seleziona Writer di log.

  5. Fai clic su Salva.

Genera voci di log per facilitare la verifica del sink

Per verificare che il sink aggregato sia configurato correttamente, prova a:

  1. Generare voci degli audit log che devono essere indirizzate al bucket di log.

    • Se hai molti Google Cloud progetti nella tua organizzazione, allora potresti avere un traffico di audit log sufficiente da non doverne creare per scopi di convalida. Vai al passaggio successivo.

    • In caso contrario, vai a un altro progetto, crea un'istanza VM di Compute Engine e poi elimina l'istanza creata. Gli audit log vengono scritti quando una VM viene creata, avviata ed eliminata.

  2. Segui i passaggi descritti in Visualizza le voci di log nella pagina Esplora log per visualizzare i tuoi audit log. Assicurati di selezionare la visualizzazione _AllLogs.

Configura l'accesso in lettura a una visualizzazione di log su un bucket di log

Quando crei un bucket di log, Cloud Logging crea automaticamente una visualizzazione di log denominata _AllLogs. Questa visualizzazione include ogni voce di log archiviata nel bucket di log.

Per limitare l'accesso di un'entità solo a voci di log specifiche, crea una visualizzazione di log e poi esegui una delle seguenti operazioni:

  • Concedi il ruolo Accessor di visualizzazioni di log (roles/logging.viewAccessor) insieme a una condizione IAM che limita la concessione alla visualizzazione di log.

  • Concedi l'accesso a un'entità nella policy IAM associata alla visualizzazione di log, Ti consigliamo questo approccio quando crei un numero elevato di visualizzazioni di log.

Per saperne di più su questi due approcci, consulta Controlla l'accesso a una visualizzazione di log.

Nei passaggi seguenti, concederai a un'entità il ruolo Accessor di visualizzazioni di log (roles/logging.viewAccessor) insieme a una condizione IAM che limita la concessione alla visualizzazione denominata _AllLogs:

  1. Nella Google Cloud console, 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. Seleziona il Google Cloud progetto che contiene il bucket di log.

  3. Fai clic su Aggiungi.

  4. Nel campo Nuova entità, aggiungi un'entità.

  5. Nel menu Seleziona un ruolo, seleziona Accessor di visualizzazioni di log.

    Se non aggiungi una condizione a questo ruolo, l'entità ha accesso a tutte le visualizzazioni di log su tutti i bucket di log definiti dall'utente nel Google Cloud progetto.

  6. Aggiungi una condizione IAM all'associazione:

    1. Fai clic su Aggiungi condizione, quindi inserisci un titolo e una descrizione.
    2. Nel menu Tipo di condizione, vai a Risorsa, quindi seleziona Nome.
    3. Nel menu Operatore, seleziona Termina con.
    4. Nel campo Valore, inserisci il nome completo della visualizzazione di log:

      locations/LOCATION/buckets/BUCKET_NAME/views/_AllLogs
      
    5. Fai clic su Salva per salvare la condizione.

  7. Fai clic su Salva per salvare l'associazione.

Visualizza le voci di log nella pagina Esplora log

Per visualizzare le voci di log nel bucket di log:

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

    Vai a Esplora log

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

  2. Seleziona Perfeziona ambito.

  3. Nel riquadro Perfeziona ambito, seleziona Visualizzazione di log.

  4. Seleziona la visualizzazione di log o le visualizzazioni di log di cui vuoi visualizzare le voci di log. Ad esempio, per visualizzare tutte le voci di log, seleziona la visualizzazione denominata _AllLogs.

  5. Fai clic su Applica.

    La pagina Esplora log viene aggiornata per mostrare le voci di log del bucket di log. Per saperne di più sull'utilizzo di Esplora log, consulta Utilizzo di Esplora log.