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 copiare tra diversi Google Cloud progetti.
Le operazioni di copia indirizzano retroattivamente le voci di log esistenti utilizzando il gcloud CLI. Al contrario, i sink indirizzano automaticamente le voci di log corrispondenti in tempo reale man mano che arrivano, ma non possono indirizzare le voci di log archiviate prima della creazione del sink.
Limitazioni
Si applicano le seguenti limitazioni quando copi le voci di log:
Puoi copiare le voci di log solo nei bucket Cloud Storage; altre destinazioni non sono disponibili.
Non puoi copiare le voci di log dai bucket di log con chiavi di crittografia gestite dal cliente (CMEK) configurate.
Prima di iniziare
Prima di iniziare a copiare le voci di log:
- Verifica di utilizzare l'ultima versione di gcloud CLI. Per istruzioni su come installare o aggiornare gcloud CLI, consulta Gestire i componenti di Google Cloud CLI.
-
Per ottenere le autorizzazioni che ti servono per copiare le voci di log, chiedi all'amministratore di concederti i seguenti ruoli IAM sul progetto che contiene il bucket di log da cui stai copiando:
-
Per eseguire un'operazione di copia:
Logging Admin (
roles/logging.admin) -
Per visualizzare e gestire lo stato di un'operazione di copia:
Writer configurazione log (
roles/logging.configWriter)
-
Per eseguire un'operazione di copia:
Logging Admin (
-
Per ottenere le autorizzazioni necessarie per scrivere le voci di log in Cloud Storage, chiedi all'amministratore di concederti il ruolo IAM Storage Object Creator (
roles/storage.objectCreator) sul 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 copiando. Per informazioni su come recuperare il nome del bucket Cloud Storage, consulta Recuperare le informazioni sul bucket Cloud Storage.
- Un filtro per le voci di log che vuoi copiare.
Per copiare le voci di log, esegui il
gcloud logging copy comando:
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:
- Sostituisci LOG_BUCKET_ID con il nome del 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 da copiare.
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' Google Cloud ID progetto. Puoi omettere questo flag quando la configurazione gcloud CLI attiva è impostata sul progetto corretto Google Cloud .
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 località 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.
Visualizzare e gestire le operazioni di copia
Puoi visualizzare e gestire le operazioni di copia utilizzando i
gcloud logging operations
comandi, 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 Visualizzare i dettagli di un bucket.
Elencare 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 il comando seguente:
gcloud logging operations list --location=LOCATION \
--operation-filter=request_type=CopyLogEntries \
--project=PROJECT_ID
Prima di eseguire il comando precedente:
- Sostituisci LOCATION con la località del bucket di log da cui stai copiando da.
- Sostituisci PROJECT_ID con l' Google Cloud ID progetto.
Il comando restituisce informazioni sull'operazione a lunga esecuzione, incluso l'ID operazione:
projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
Visualizzare lo stato di un'operazione di copia
Puoi recuperare lo stato e altri metadati sulle 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 di annullare l'operazione.progress: l'avanzamento stimato dell'operazione (0-100%).destination: il nome del bucket Cloud Storage in cui l'operazione sta copiando 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 sta copiando 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
--log-filter=FILTER flag non è stato utilizzato durante l'esecuzione del
gcloud logging copy comando, i metadati filter non si applicano
all'operazione.
Per recuperare informazioni su un'operazione di copia, esegui il comando seguente:
gcloud logging operations describe OPERATION_ID \
--location=LOCATION --project=PROJECT_ID
Prima di eseguire il comando precedente:
- Sostituisci OPERATION_ID con l'ID dell'operazione.
- Sostituisci LOCATION con la località del bucket di log da cui stai copiando da.
- Sostituisci PROJECT_ID con l' Google Cloud ID progetto.
Il comando restituisce i metadati relativi all'operazione di copia. Di seguito è riportato 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
Annullare 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 rimangono nel bucket Cloud Storage.
Dopo aver annullato un'operazione di copia, Logging completa tutti i processi in corso prima di completare l'annullamento. Di conseguenza, alcune voci di log potrebbero essere ancora copiate in Cloud Storage dopo l'annullamento dell'operazione.
Per annullare un'operazione di copia, esegui il comando seguente:
gcloud logging operations cancel OPERATION_ID \
--location=LOCATION --project=PROJECT_ID
Prima di eseguire il comando precedente:
- Sostituisci OPERATION_ID con l'ID dell'operazione.
- Sostituisci LOCATION con la località del bucket di log da cui stai copiando da.
- Sostituisci PROJECT_ID con l' Google Cloud ID progetto.
Visualizzare 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 Visualizzare 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 è in grado di 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 è stata eseguita per un periodo di tempo sufficiente alla scadenza delle credenziali di autorizzazione.
- Il bucket Cloud Storage di destinazione utilizza CMEK e la chiave Cloud Key Management Service è disabilitata o il service agent Cloud Storage non dispone delle autorizzazioni di crittografia.
- Un tentativo di ripetizione della scrittura tenta di sovrascrivere un file esistente che non può essere sostituito. Ad esempio, se viene ritentato un batch di esportazione dopo un ritardo temporaneo o se viene riavviata un'operazione di copia, il tentativo potrebbe tentare di sovrascrivere un file già creato. Se il file è protetto da un blocco oggetto attivo o da un criterio di conservazione bloccato, Cloud Storage rifiuta la sovrascrittura.
- Il bucket di destinazione è stato eliminato, è passato a uno stato bloccato o il progetto ha superato la quota di risorse.
Per risolvere il problema:
Esamina i Controlli di servizio VPC: se la tua organizzazione utilizza i Controlli di servizio VPC, esamina Cloud Audit Logs per le negazioni 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 configura una regola in entrata e in uscita.Verifica i ruoli IAM del bucket di destinazione: l'account che ha avviato l'operazione di copia deve avere il ruolo Storage Object Creator (
roles/storage.objectCreator) nel bucket di destinazione.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 il service agent Cloud Storage abbia il ruoloCloud KMS CryptoKey Encrypter/Decrypter(
roles/cloudkms.cryptoKeyEncrypterDecrypter) sulla chiave.Dividi le operazioni di copia di grandi dimensioni in intervalli di tempo più brevi: per evitare timeout o scadenza delle credenziali durante la copia di grandi volumi di voci di log, dividi l'operazione in batch più piccoli. Per dividere le voci di log in batch, utilizza il campo
timestampnel flag--log-filter.Verifica che non esistano blocchi oggetto o conflitti di conservazione: verifica che il bucket di destinazione non contenga oggetti nel percorso di destinazione di destinazione protetti da un blocco oggetto attivo o da un criterio di conservazione bloccato.