Aggrega e archivia i log dell'organizzazione

Questo documento descrive come gestire le voci di log generate dalle risorse contenute nella tua organizzazione Google Cloud utilizzando un sink aggregato non intercettante.

Puoi configurare un sink aggregato in modo che intercetti o non intercetti, a seconda che tu voglia controllare quali voci di log possono essere sottoposte a query o instradate tramite i sink nelle risorse secondarie. In questo tutorial, creerai un sink aggregato che indirizza gli audit log della tua organizzazione a un progettoGoogle Cloud , che a sua volta indirizza gli audit log aggregati a un bucket di log. Per saperne di più, consulta la panoramica dei sink aggregati.

In questo tutorial, eseguirai i seguenti passaggi:

  1. Per iniziare, crea un bucket di log e un sink di log nel progettoGoogle Cloud in cui vuoi archiviare le voci di log aggregate.

  2. Successivamente, crea un sink aggregato non intercettante a livello di organizzazione per indirizzare le voci di log al progetto Google Cloud che contiene il bucket dei log.

  3. Successivamente, configura l'accesso in lettura alle visualizzazioni log nel nuovo bucket log.

  4. Infine, esegui query e visualizza le voci di log dalla pagina Esplora log.

Prima di iniziare

Assicurati che:

  • Per ottenere le autorizzazioni necessarie per configurare un sink aggregato, chiedi all'amministratore di concederti i seguenti ruoli IAM nella tua organizzazione:

    • Per creare bucket di log e sink in un progetto: Autore configurazione log (roles/logging.configWriter) - il tuo progetto
    • Per creare un sink aggregato: Logs Configuration Writer (roles/logging.configWriter) - la tua organizzazione
    • Per concedere ruoli alle entità: Proprietario (roles/owner) - il 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.

  • Se utilizzi Controlli di servizio VPC, devi aggiungere una regola in entrata al perimetro di servizio. Per ulteriori informazioni sulle limitazioni dei Controlli di servizio VPC, consulta Sink aggregati e limitazioni dei Controlli di servizio VPC.
  • 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.

Crea un bucket di log

I bucket di log archiviano le voci di log indirizzate da altri Google Cloud progetti, cartelle o organizzazioni. Per ulteriori informazioni, consulta la sezione Configurare i bucket di log.

Per creare il bucket dei log nel progetto Google Cloud 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 comando gcloud logging buckets create.

    Prima di eseguire il comando seguente, esegui le sostituzioni indicate:

    • BUCKET_NAME: il nome del bucket dei log.
    • LOCATION: La posizione del bucket dei log. Dopo aver creato il bucket di log, non puoi modificarne la posizione.
    • PROJECT_ID: L'identificatore del progetto in cui creare il bucket dei 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 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 seguente comando 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 ulteriori informazioni sulle opzioni, vedi gcloud logging buckets update.

Crea il sink di log a livello di progetto

Esegui il routing delle voci di log in 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 del nuovo bucket di log. Il sink non contiene filtri di esclusione. Per saperne di più sui sink, consulta Instradare i log verso le 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, esegui le sostituzioni indicate:

  • PROJECT_LEVEL_SINK_NAME: il nome del sink di log a livello di progetto.
  • SINK_DESTINATION: il bucket dei log in cui vengono indirizzate le voci di log. 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 questa opzione sullo stesso progetto in cui hai creato il bucket di log.

  • Includi le seguenti opzioni:

    • --log-filter : utilizza questa opzione 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 del log di controllo. Se non imposti un filtro, tutte le voci di log del tuo progetto Google Cloud vengono indirizzate alla destinazione.
    • --description: utilizza questa opzione 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 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 log di controllo che ha origine in un progetto viene instradato dal sink aggregato e dai sink in quel progetto. Pertanto, è possibile archiviare più copie di una voce di log.

Puoi creare sink di intercettazione. Per saperne di più, consulta la 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, completa i seguenti passaggi:

  1. Esegui il comando gcloud logging sinks create.

    Prima di eseguire il comando seguente, esegui le sostituzioni indicate:

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

    L'opzione --include-children è importante. Questa opzione garantisce che vengano indirizzate le voci di log di tutti i progetti e le cartelleGoogle Cloud all'interno della tua organizzazione. Per ulteriori informazioni, vedi Raccogliere e indirizzare i log a livello di organizzazione alle destinazioni supportate.

  2. Verifica che il sink sia stato creato:

    gcloud logging sinks list --organization=ORGANIZATION_ID
    
  3. Ottieni 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.

Concedere l'accesso al lavello

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

Per concedere all'esportazione l'autorizzazione a scrivere voci di 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. Seleziona il progetto Google Cloud 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 Logs Writer.

  5. Fai clic su Salva.

Generare voci di log per facilitare la verifica del sink

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

  1. Genera voci di log di controllo che devono essere indirizzate al tuo bucket di log.

    • Se hai molti Google Cloud progetti nella tua organizzazione, potresti avere un volume di traffico dei log di controllo sufficiente da non doverne creare altri a scopo 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 che hai creato. I log di controllo vengono scritti quando una VM viene creata, avviata ed eliminata.

  2. Segui la procedura descritta nella sezione Visualizzare i log nella pagina Esplora log per visualizzare i log di controllo. Assicurati di selezionare la visualizzazione _AllLogs.

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

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

Per limitare l'accesso di un principal solo a voci di log specifiche, crea una visualizzazione log, quindi esegui una delle seguenti operazioni:

  • Concedi il ruolo roles/logging.viewAccessor insieme a una condizione IAM che limita la concessione alla visualizzazione dei log.

  • Nella policy IAM associata alla visualizzazione dei log, concedi l'accesso a un'entità. Consigliamo questo approccio quando crei un numero elevato di visualizzazioni dei log.

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

Nei passaggi seguenti, concedi a un'entità il ruolo di roles/logging.viewAccessor insieme a una condizione IAM che limita la concessione alla vista denominata _AllLogs:

  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. Seleziona il progetto Google Cloud 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 Logs Views Accessor.

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

  6. Aggiungi una condizione IAM all'associazione:

    1. Fai clic su Aggiungi condizione, inserisci un titolo e una descrizione.
    2. Nel menu Tipo di condizione, scorri fino a Risorsa, quindi seleziona Nome.
    3. Nel menu Operatore, seleziona Termina con.
    4. Nel campo Valore, inserisci il nome completo della visualizzazione 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.

Visualizzare le voci di log nella pagina Esplora log

Per visualizzare le voci di log nel bucket dei log:

  1. Nella Google Cloud console, 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. Seleziona Perfeziona ambito.

  3. Nel riquadro Perfeziona ambito, seleziona Visualizzazione log.

  4. Seleziona la visualizzazione 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.

    Esplora log viene aggiornato per mostrare le voci di log del bucket di log. Per informazioni sull'utilizzo di Esplora log, vedi Utilizzo di Esplora log.