Introduzione agli audit log in BigQuery

I log sono record di testo generati in risposta a determinati 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 anche log, inclusi audit log che forniscono insight sui problemi operativi relativi all'utilizzo dei servizi Google Cloud. Per ulteriori informazioni su come Google Cloud gestisce il logging, consulta la documentazione di Cloud Logging e la panoramica di Cloud Audit Logs.

Confronto tra audit log e INFORMATION_SCHEMA vista

I tuoi 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 consentono di rispondere alla domanda "Chi ha fatto cosa, dove e quando?" all'interno delle tue risorse Google Cloud. I log di controllo sono la fonte definitiva di informazioni sulle attività del sistema in base agli utenti e ai pattern di accesso e dovrebbero essere la fonte principale per domande di controllo o di sicurezza.

Le viste INFORMATION_SCHEMA in BigQuery sono un'altra fonte di informazioni che puoi utilizzare insieme a metriche e log. Queste viste contengono metadati su 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 periodo di tempo specificato. Successivamente, puoi raggruppare o filtrare i risultati per progetto, utente, tabelle a cui viene fatto riferimento e altre dimensioni.

Le viste INFORMATION_SCHEMA forniscono informazioni per eseguire un'analisi più dettagliata dei 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 streaming si sono verificati negli ultimi 30 minuti, raggruppati per codice di errore?

Gli audit log di BigQuery contengono le 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 sul tempo e sugli slot utilizzati da una query specifica nelle viste INFORMATION_SCHEMA, ma non negli audit log.

Per ottenere insight sulle prestazioni dei carichi di lavoro BigQuery in particolare, vedi 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 gli 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 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, il che indica che il campo utilizza la struttura dei log di 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 del log di 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 contiene voci di log relative ai job, mentre la risorsa bigquery_dataset contiene 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 Monitorare le prenotazioni di BigQuery.

Per una comprensione più approfondita del formato dei log di controllo, 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 schemi e identificatori di risorse come tabelle e set di dati. Per informazioni sulla gestione dell'accesso a queste informazioni, consulta la documentazione sul controllo degli accessi di Cloud Logging.

Passaggi successivi