Introduzione agli audit log in BigQuery

I log sono record di testo generati in risposta a particolari eventi o azioni. Ad esempio, BigQuery crea voci di log per azioni come la creazione o l'eliminazione di una tabella, l'acquisto di slot o l'esecuzione di un job di caricamento.

Google Cloud scrive inoltre log, inclusi audit log che forniscono insight su problemi operativi relativi all'utilizzo dei servizi Google Cloud. Per saperne di più su come Google Cloud gestisce il logging, consulta la documentazione di Cloud Logging e la panoramica di Cloud Audit Logs.

Log di controllo e INFORMATION_SCHEMA viste

I progetti Google Cloud contengono audit log solo per le risorse che si trovano direttamente all'interno del progetto Google Cloud. Altre risorse Google Cloud, come cartelle, organizzazioni e account di fatturazione, contengono i propri audit log.

Gli audit log ti aiutano a rispondere alla domanda "Chi ha fatto cosa, dove e quando?" all'interno delle tue risorse Google Cloud. Gli audit log sono la fonte definitiva di informazioni sulle attività del sistema in base ai pattern di accesso e utenti e dovrebbero essere la fonte principale per le domande di controllo o di sicurezza.

Le viste di INFORMATION_SCHEMA in BigQuery sono un'altra fonte di insight che puoi utilizzare insieme alle metriche e ai log. Queste viste contengono metadati relativi a job, set di dati, tabelle e altre entità BigQuery. Ad esempio, puoi ottenere metadati in tempo reale su quali job BigQuery sono stati eseguiti durante un orario specifico. Successivamente, puoi raggruppare o filtrare i risultati per progetto, utente, tabelle di riferimento e altre dimensioni.

Le viste INFORMATION_SCHEMA forniscono informazioni per eseguire un'analisi più dettagliata sui carichi di lavoro BigQuery, ad esempio:

  • Qual è l'utilizzo medio degli slot per tutte le query negli ultimi sette giorni per un determinato progetto?
  • Quali errori di flussi di dati si sono verificati negli ultimi 30 minuti, raggruppati per codice di errore?

Gli audit log di BigQuery contengono voci di log per le chiamate API, ma non descrivono l'impatto delle chiamate API. Un sottoinsieme di chiamate API crea job (come query e caricamento) le cui informazioni vengono acquisite dalle viste INFORMATION_SCHEMA. Ad esempio, puoi trovare informazioni su orari e slot utilizzati da una query specifica nelle viste INFORMATION_SCHEMA, ma non negli audit log.

Per ottenere insight sulle prestazioni dei tuoi carichi di lavoro BigQuery in particolare, consulta metadati dei job, metadati dei flussi di dati e metadati delle prenotazioni.

Per ulteriori informazioni sui tipi di audit log scritti dai servizi Google Cloud, consulta Tipi di audit log.

Formato degli audit log

I servizi Google Cloud scrivono audit log in formato JSON strutturato. Il tipo di dati di base per le voci di log di Google Cloud è la struttura LogEntry. Questa struttura contiene il nome del log, la risorsa che ha generato la voce di log, il timestamp (UTC) e altre informazioni di base.

I log includono i dettagli dell'evento registrato in un campo secondario chiamato campo del payload. Per gli audit log, il campo del payload è denominato protoPayload. Il tipo di questo campo (protoPayload.@type) è impostato su type.googleapis.com/google.cloud.audit.AuditLog, a indicare che il campo utilizza la struttura del log AuditLog.

Per le operazioni su set di dati, tabelle e job, BigQuery scrive gli audit log in due formati diversi, anche se entrambi i formati condividono il tipo di base AuditLog.

Il formato precedente include i seguenti campi e valori:

  • Il valore del campo resource.type è bigquery_resource.
  • BigQuery scrive i dettagli di un'operazione nel campo protoPayload.serviceData. Il valore di questo campo utilizza la struttura di log AuditData.

Il formato più recente include i seguenti campi e valori:

  • Il valore del campo resource.type è bigquery_project o bigquery_dataset. La risorsa bigquery_project ha voci di log relative ai job, mentre la risorsa bigquery_dataset ha voci di log relative all'archiviazione.
  • BigQuery scrive i dettagli di un'operazione nel campo protoPayload.metadata. Il valore di questo campo utilizza la struttura BigQueryAuditMetadata.

Ti consigliamo di utilizzare i log nel formato più recente. Per ulteriori informazioni, consulta la guida alla migrazione degli audit log.

Di seguito è riportato un esempio abbreviato di una voce di log che mostra un'operazione non riuscita:

{
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "status": {
      "code": 5,
      "message": "Not found: Dataset myproject:mydataset was not found in location US"
    },
    "authenticationInfo": { ... },
    "requestMetadata":  { ... },
    "serviceName": "bigquery.googleapis.com",
    "methodName": "google.cloud.bigquery.v2.JobService.InsertJob",
    "metadata": {
  },
  "resource": {
    "type": "bigquery_project",
    "labels": { .. },
  },
  "severity": "ERROR",
  "logName": "projects/myproject/logs/cloudaudit.googleapis.com%2Fdata_access",
  ...
}

Per le operazioni sulle prenotazioni BigQuery, il campo protoPayload utilizza la struttura AuditLog, mentre i campi protoPayload.request e protoPayload.response contengono ulteriori informazioni. Puoi trovare le definizioni dei campi nell'API BigQuery Reservation. Per saperne di più, consulta Monitoraggio delle prenotazioni BigQuery.

Per una comprensione più approfondita del formato degli audit log, consulta Informazioni sui log di controllo.

Limitazioni

I messaggi di log hanno un limite di dimensione di 100.000 byte. Per ulteriori informazioni, consulta Voce di log troncata.

Visibilità e controllo dell'accesso

Gli audit log di BigQuery possono includere informazioni che gli utenti potrebbero considerare sensibili, come testo SQL, definizioni di schema e identificatori per risorse come tabelle e set di dati. Per saperne di più sulla gestione dell'accesso a queste informazioni, consulta la documentazione sul controllo dell'accesso di Cloud Logging.

Passaggi successivi