Aggrega e archivia i log dell'organizzazione

Questo documento descrive come gestire i log generati dalle risorse contenute nella tua organizzazione Google Cloud utilizzando un sink aggregato non intercettato.

Puoi configurare un sink aggregato in modo che venga intercettato o meno, a seconda che tu voglia controllare i log in cui eseguire query o instradarli tramite i sink nelle risorse figlio. In questo tutorial creerai un sink aggregato che instrada gli audit log della tua organizzazione a un progetto Google Cloud. Quindi, nel progetto Google Cloud, crei un sink di log che instrada gli audit log aggregati a un bucket di log.

Per ulteriori informazioni sui sink aggregati, consulta Facoltare e indirizzare i log a livello di organizzazione e cartella alle destinazioni supportate.

In questo tutorial, imparerai a:

  1. Per iniziare, crea un bucket di log e un sink di log nel progetto Google Cloud in cui vuoi archiviare i log aggregati.

  2. Successivamente, creerai un sink aggregato non intercettato a livello di organizzazione per instradare i log al progetto Google Cloud.

  3. Quindi, configurerai l'accesso in lettura per le visualizzazioni dei log nel nuovo bucket di log.

  4. Infine, puoi eseguire query e visualizzare i log dalla pagina Esplora log.

Prima di iniziare

Verifica quanto segue:

  • Per ottenere le autorizzazioni necessarie per concedere i ruoli alle entità, chiedi all'amministratore di concederti il ruolo IAM Proprietario (roles/owner) per un progetto.

  • Se utilizzi Controlli di servizio VPC, devi aggiungere una regola in entrata al perimetro di servizio. Per ulteriori informazioni sulle limitazioni di Controlli di servizio VPC, consulta Sink aggregati e limitazioni di Controlli di servizio VPC.

Crea un bucket di log

I bucket di log archiviano i log con routing da altri progetti, cartelle o organizzazioni Google Cloud. Per ulteriori informazioni, consulta Configurare i bucket di log.

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

  1. Vai alla console Google Cloud:

    Vai alla console Google Cloud

  2. In un terminale Cloud Shell, esegui il comando gcloud logging buckets create.

    Prima di eseguire questo comando, effettua le seguenti sostituzioni:

    • BUCKET_NAME: il nome del bucket di log.
    • LOCATION: la località del bucket di log.
    • 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
    
  4. (Facoltativo) Imposta il periodo di conservazione dei log nel bucket. Questo esempio estende la conservazione dei log archiviati nel bucket a 365 giorni:

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

Crea il sink di log a livello di progetto

Puoi instradare le voci di log a un bucket di log creando un sink. Un sink include un filtro di inclusione, un filtro di esclusione facoltativo e una destinazione. In questo tutorial, la destinazione è il nuovo bucket di log. Per ulteriori informazioni sui sink, consulta Routing dei log alle destinazioni supportate.

Per creare un sink che instrada le voci di log al bucket di log appena creato, sostituisci i seguenti elementi ed esegui il comando gcloud logging sinks create:

  • PROJECT_LEVEL_SINK_NAME: il nome del sink di log a livello di progetto.
  • SINK_DESTINATION: il bucket di log in cui vengono instradati i 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 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 da includere nel sink. In questo tutorial, il filtro è impostato per selezionare tutte le voci dell'audit log. Se non imposti un filtro, tutti i log del progetto Google Cloud vengono instradati alla destinazione.
    • --description: utilizza questo flag per descrivere lo scopo o il caso d'uso del sink.

    Esegui questo comando:

    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 instradano le voci di log delle risorse contenute in un'organizzazione o in una cartella verso una destinazione.

In questo tutorial, creerai un sink aggregato non intercettazione. Ciò significa che ogni voce di log instradata dal sink aggregato viene instradata 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 instradato dal sink aggregato e dai sink in quel progetto. È quindi possibile archiviare più copie di una voce di log.

Puoi creare sink di intercettazione. Per ulteriori informazioni, consulta Facoltare e indirizzare i log a livello di organizzazione e cartella per supportare le destinazioni.

Configura il sink a livello di organizzazione

Per creare un sink aggregato non intercettato e che instrada le voci di log a un progetto, completa i seguenti passaggi:

  1. Esegui il comando gcloud logging sinks create.

    Prima di eseguire questo comando, effettua le seguenti sostituzioni:

    • SINK_NAME: il nome del sink di log.
    • PROJECT_ID: l'identificatore del progetto in cui è archiviato 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 per includere anche i log di tutti i progetti Google Cloud all'interno della tua organizzazione. Per ulteriori informazioni, consulta Facoltare 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 dell'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 al sink l'autorizzazione per scrivere i log nel progetto 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 al sink l'autorizzazione per scrivere i log, segui questi passaggi:

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

    Vai a IAM

    Se usi 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.

  4. Nel campo Nuove entità, aggiungi l'account di servizio senza il prefisso serviceAccount:.

  5. Nel menu Seleziona un ruolo, scegli Writer log.

  6. Fai clic su Salva.

Genera log per facilitare la verifica del sink

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

  1. Genera gli audit log che devono essere instradati al bucket di log.

    • Se nella tua organizzazione sono presenti molti progetti Google Cloud, potresti avere un volume di traffico di audit log sufficiente e non necessario crearne uno a fini di convalida. Vai al passaggio successivo.

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

  2. Segui la procedura nella sezione Visualizza i log nella pagina Esplora log per visualizzare gli audit log. Assicurati di selezionare la visualizzazione _AllLogs.

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

Quando crei un bucket di log, Cloud Logging crea automaticamente una vista log denominata _AllLogs. Questa vista include tutte le voce di log archiviate nel bucket di log.

Per limitare un'entità in modo che abbia accesso solo a voci di log specifiche, crea una visualizzazione di log ed esegui una delle seguenti operazioni:

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

  • Concedi un accesso all'entità sul criterio IAM associato alla visualizzazione del log. Consigliamo questo approccio quando crei un numero elevato di visualizzazioni di log.

Per ulteriori informazioni su questi due approcci, consulta Controllare l'accesso a una visualizzazione del log.

Nei passaggi seguenti, concederai 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 usi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo IAM e amministrazione.

    Assicurati di aver selezionato il progetto Google Cloud che stai utilizzando per aggregare i log.

  2. Fai clic su Aggiungi.

  3. Aggiungi un'entità nel campo Nuova entità.

  4. Nel menu Seleziona un ruolo, scegli Funzione di accesso delle viste log.

  5. 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 del log:

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

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

Visualizza i log nella pagina Esplora log

Per visualizzare i log nel bucket di log, segui questi passaggi:

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

    Vai a Esplora log

    Se usi 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 Ambito in base all'archiviazione.

  4. Seleziona la visualizzazione del log o le visualizzazioni log per le quali vuoi visualizzare le voci di log. Ad esempio, per visualizzare tutti i log, seleziona la vista denominata _AllLogs.

  5. Fai clic su Applica.

    Esplora log si aggiorna per mostrare i log del bucket di log.

    Per informazioni sull'utilizzo di Esplora log, consulta Utilizzo di Esplora log.