Elaborare in batch e indirizzare le voci di log in modo retroattivo

Puoi copiare le voci di log archiviate dai bucket di log di Cloud Logging ai bucket Cloud Storage per supportare gli audit di sicurezza, eseguire analisi dei dati personalizzate o archiviare le voci di log storiche. L'operazione di copia non è distruttiva; le voci di log rimangono nel bucket di log di origine e puoi copiarle in diversi progetti Google Cloud .

Le operazioni di copia indirizzano retroattivamente le voci di log esistenti utilizzando gcloud CLI. Al contrario, i sink instradano automaticamente le voci di log corrispondenti in tempo reale man mano che arrivano, ma non possono instradare le voci di log archiviate prima della creazione del sink.

Limitazioni

Quando copi le voci di log, si applicano le seguenti limitazioni:

  • Puoi copiare le voci di log solo nei bucket Cloud Storage non configurati per l'archiviazione Rapid; altre destinazioni non sono disponibili.

  • Non puoi copiare le voci di log dai bucket di log in cui sono configurate chiavi di crittografia gestite dal cliente (CMEK).

Prima di iniziare

Prima di iniziare a copiare le voci di log, segui questi passaggi:

  • Per ottenere le autorizzazioni necessarie per copiare le voci di log, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto che contiene il bucket di log da cui stai copiando:

  • Per ottenere le autorizzazioni necessarie per scrivere voci di log in Cloud Storage, chiedi all'amministratore di concederti il ruolo IAM Storage Object Creator (roles/storage.objectCreator) nel progetto che contiene il bucket Cloud Storage.

Copia delle voci di log

Logging copia solo le voci di log archiviate nel bucket di log all'avvio dell'operazione di copia. Le voci di log archiviate nei bucket di log dopo l'avvio dell'operazione di copia non vengono copiate in Cloud Storage.

Per copiare le voci di log in Cloud Storage, devi conoscere le seguenti informazioni:

  • L'ID e la località del bucket di log da cui stai copiando. Per recuperare l'ID bucket di log e la relativa località, utilizza il comando gcloud CLI gcloud logging buckets list.
  • Il nome del bucket Cloud Storage in cui stai eseguendo la copia. Per informazioni su come recuperare il nome del bucket Cloud Storage, consulta Recupero delle informazioni sul bucket Cloud Storage.
  • Un filtro per le voci di log che vuoi copiare.

Per copiare le voci di log, esegui il comando gcloud logging copy:

gcloud logging copy LOG_BUCKET_ID storage.googleapis.com/CLOUD_STORAGE_BUCKET_NAME \
--location=LOCATION --log-filter='FILTER' --project=PROJECT_ID

Prima di eseguire il comando precedente, segui questi passaggi:

  • Sostituisci LOG_BUCKET_ID con il nome del tuo bucket di log.
  • Sostituisci CLOUD_STORAGE_BUCKET_NAME con il nome del tuo bucket Cloud Storage.
  • Sostituisci LOCATION con la località del bucket di log.
  • (Facoltativo): sostituisci FILTER con il filtro che definisce le voci di log copiate.

    Se ometti il flag --log-filter, tutte le voci di log nel bucket di log vengono copiate nel bucket Cloud Storage.

  • Sostituisci PROJECT_ID con l'ID progetto Google Cloud . Puoi omettere questo flag se la configurazione gcloud CLI attiva è impostata sul progetto Google Cloud corretto.

Comando di esempio:

gcloud logging copy my-log-bucket storage.googleapis.com/my-gcs-bucket \
--location=global --log-filter='timestamp > "2024-07-18T10:00:00.0Z"' \
--project=my-project

Questo comando crea un'operazione a lunga esecuzione da eseguire in background e restituisce il nome dell'operazione di copia e la posizione del bucket di log:

name: projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID

La località dell'operazione di copia è la stessa del bucket di log da cui stai copiando.

Visualizza e gestisci le operazioni di copia

Puoi visualizzare e gestire le operazioni di copia utilizzando i comandi gcloud logging operations, che ti consentono di elencare, visualizzare e annullare le operazioni.

I seguenti comandi richiedono di specificare la località dell'operazione. Utilizza la località del bucket di log. Per informazioni su come trovare la località del bucket di log, consulta Visualizza i dettagli di un bucket.

Elenca le operazioni di copia

Puoi elencare le operazioni di copia recenti, incluse quelle pianificate, in esecuzione, completate, non riuscite e annullate. Le operazioni di copia recenti vengono visualizzate nei risultati per un massimo di 30 giorni dopo l'ora di fine.

Per elencare le operazioni di copia, esegui questo comando:

gcloud logging operations list --location=LOCATION \
--operation-filter=request_type=CopyLogEntries \
--project=PROJECT_ID

Prima di eseguire il comando precedente, segui questi passaggi:

  • Sostituisci LOCATION con la località del bucket di log da cui stai copiando.
  • Sostituisci PROJECT_ID con l'ID progetto Google Cloud .

Il comando restituisce informazioni sull'operazione a lunga esecuzione, incluso l'ID operazione:

projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID

Visualizza lo stato di un'operazione di copia

Puoi recuperare lo stato e altri metadati relativi alle operazioni di copia, tra cui:

  • startTime: il timestamp che indica la creazione dell'operazione.
  • endTime: il timestamp che indica il completamento dell'operazione.
  • state: lo stato dell'operazione (pianificata, in esecuzione, annullata, non riuscita o riuscita).
  • cancellation: indica se l'utente ha richiesto l'annullamento dell'operazione.
  • progress: avanzamento stimato dell'operazione (0-100%).
  • destination: il nome del bucket Cloud Storage in cui l'operazione copia le voci di log.
  • filter: il filtro che specifica le voci di log da copiare.
  • name: il nome del bucket di log da cui l'operazione copia le voci di log.
  • logEntriesCopiedCount: il numero di voci di log copiate correttamente nel bucket Cloud Storage dall'operazione.

Tieni presente che non tutti i campi dei metadati elencati si applicano a ogni operazione di copia. Ad esempio, se un'operazione di copia è ancora in esecuzione, i metadati endTime non si applicano all'operazione. Un altro esempio: se il flag --log-filter=FILTER non è stato utilizzato durante l'esecuzione del comando gcloud logging copy, i metadati filter non si applicano all'operazione.

Per recuperare informazioni su un'operazione di copia, esegui questo comando:

gcloud logging operations describe OPERATION_ID \
--location=LOCATION --project=PROJECT_ID

Prima di eseguire il comando precedente, segui questi passaggi:

  • Sostituisci OPERATION_ID con l'ID dell'operazione.
  • Sostituisci LOCATION con la località del bucket di log da cui stai copiando.
  • Sostituisci PROJECT_ID con l'ID progetto Google Cloud .

Il comando restituisce i metadati relativi all'operazione di copia. Ad esempio, ecco un output per un'operazione in corso:

done: false
metadata:
  `@type`: type.googleapis.com/google.logging.v2.CopyLogEntriesMetadata
  progress: 75
  destination: storage.googleapis.com/CLOUD_STORAGE_BUCKET_NAME
  source: projects/PROJECT_ID/locations/LOCATION/buckets/LOG_BUCKET_ID
  verb: copy
  startTime: `2024-05-23T10:52:40.039751Z`
  state: OPERATION_STATE_RUNNING
name: projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID

Annulla un'operazione di copia

Puoi annullare un'operazione di copia in corso. Se annulli un'operazione di copia, tutte le voci di log copiate prima dell'annullamento dell'operazione rimangono nel bucket Cloud Storage.

Dopo aver annullato un'operazione di copia, Logging completa tutti i processi in corso prima di completare l'annullamento. Ciò potrebbe comportare la copia di alcune voci di log in Cloud Storage anche dopo l'annullamento dell'operazione.

Per annullare un'operazione di copia, esegui questo comando:

gcloud logging operations cancel OPERATION_ID \
--location=LOCATION --project=PROJECT_ID

Prima di eseguire il comando precedente, segui questi passaggi:

  • Sostituisci OPERATION_ID con l'ID dell'operazione.
  • Sostituisci LOCATION con la località del bucket di log da cui stai copiando.
  • Sostituisci PROJECT_ID con l'ID progetto Google Cloud .

Visualizza le voci di log in Cloud Storage

Per informazioni su come visualizzare e comprendere le voci di log che hai copiato in Cloud Storage, consulta Visualizza le voci di log indirizzate a Cloud Storage.

Quote e limiti

Tutte le operazioni di copia richiedono almeno un'ora per essere completate, indipendentemente dalla quantità di dati copiati.

Per copiare un volume elevato, ad esempio petabyte, suddividi la copia in più operazioni di copia utilizzando il campo timestamp nel flag --log-filter.

Il comando di copia non può copiare le voci di log la cui conservazione è scaduta.

Risoluzione dei problemi

Questa sezione descrive come risolvere gli errori durante la copia delle voci di log.

Impossibile scrivere i dati di esportazione

Quando visualizzi lo stato di un'operazione di copia utilizzando gcloud logging operations describe, l'operazione potrebbe mostrare il seguente errore:

done: true
error:
  code: 7
  message: Failed to write export data to the destination Cloud Storage bucket.

Questo errore si verifica quando Logging non riesce a scrivere o finalizzare i file di log nel bucket Cloud Storage di destinazione. La scrittura dei file esportati durante l'operazione può non riuscire per diversi motivi:

  • Un perimetro di servizio dei Controlli di servizio VPC blocca le richieste al bucket Cloud Storage di destinazione.
  • Le autorizzazioni IAM dell'account che ha avviato l'operazione di copia sono state modificate o revocate durante l'esecuzione dell'operazione.
  • L'operazione di copia è durata abbastanza a lungo da far scadere le credenziali di autorizzazione.
  • Il bucket Cloud Storage di destinazione utilizza CMEK e la chiave Cloud Key Management Service è disabilitata o l'agente di servizio Cloud Storage non dispone delle autorizzazioni di crittografia.
  • Un nuovo tentativo di scrittura tenta di sovrascrivere un file esistente che non può essere sostituito. Ad esempio, se un batch di esportazione viene ritentato dopo un ritardo temporaneo o se un'operazione di copia viene riavviata, il nuovo tentativo potrebbe tentare di sovrascrivere un file già creato. Se il file è protetto da un blocco di oggetti attivo o da una policy di conservazione bloccata, Cloud Storage rifiuta la sovrascrittura.
  • Il bucket di destinazione è stato eliminato, è entrato in uno stato di blocco o il progetto ha superato la quota di risorse.

Per risolvere il problema, segui questi passaggi:

  1. Esamina i Controlli di servizio VPC: se la tua organizzazione utilizza i Controlli di servizio VPC, esamina Cloud Audit Logs per verificare la presenza di rifiuti del perimetro (cloudaudit.googleapis.com/data_access). Il perimetro del bucket Cloud Storage di destinazione deve consentire l'accesso dal progetto che esegue l'operazione di copia oppure configurare una regola in entrata e in uscita.

  2. Verifica i ruoli IAM del bucket di destinazione: l'account che ha avviato l'operazione di copia deve disporre del ruolo Storage Object Creator (roles/storage.objectCreator) nel bucket di destinazione.

  3. Verifica le chiavi di crittografia gestite dal cliente (CMEK): se il bucket di destinazione utilizza CMEK per la crittografia predefinita, verifica che la chiave Cloud KMS sia abilitata e che l'agente di servizio Cloud Storage abbia il ruolo Cloud KMS CryptoKey Encrypter/Decrypter (roles/cloudkms.cryptoKeyEncrypterDecrypter) sulla chiave.

  4. Suddividi le operazioni di copia di grandi dimensioni in intervalli di tempo più brevi: per evitare timeout o la scadenza delle credenziali durante la copia di grandi volumi di voci di log, dividi l'operazione in batch più piccoli. Per suddividere le voci di log in batch, utilizza il campo timestamp nel flag --log-filter.

  5. Verifica che non esistano conflitti di conservazione o blocchi degli oggetti: verifica che il bucket di destinazione non contenga oggetti nel percorso di destinazione protetti da un blocco degli oggetti attivo o da una policy di conservazione bloccata.