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 gli audit log che forniscono informazioni sui problemi operativi relativi all'utilizzo dei servizi Google Cloud. Per ulteriori informazioni su come Google Cloud gestisce la registrazione, consulta la documentazione di Cloud Logging e la panoramica degli audit log di Cloud.

Audit log rispetto alle visualizzazioni INFORMATION_SCHEMA

I progetti Google Cloud contengono audit log solo per le risorse che si trovano direttamente al loro interno. 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 per utente e sui pattern di accesso e devono essere la tua fonte principale per domande di controllo o 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 sui job BigQuery eseguiti durante un periodo di tempo specificato. Poi, puoi raggruppare o filtrare i risultati per progetto, utente, tabelle a cui viene fatto riferimento e altre dimensioni.

Le visualizzazioni 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?

I log di controllo 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 caricamenti) le cui informazioni vengono acquisite dalle visualizzazioni INFORMATION_SCHEMA. Ad esempio, puoi trovare informazioni sull'ora e sugli slot utilizzati da una query specifica nelle visualizzazioni INFORMATION_SCHEMA, ma non nei log di controllo.

Per informazioni sul rendimento dei carichi di lavoro BigQuery in particolare, consulta i metadati dei job, i metadati di streaming e i metadati delle prenotazioni.

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

Formato degli audit log

I servizi Google Cloud scrivono gli audit log in un formato JSON strutturato. Il tipo di dati di base per le voci dei 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 sottocampo denominato campo del payload. Per i log di controllo, 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 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 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 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 allo spazio di 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 dei log di controllo.

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 e i campi protoPayload.request e protoPayload.response contengono ulteriori informazioni. Puoi trovare le definizioni dei campi nell'API BigQuery Reservation. Per ulteriori informazioni, consulta Monitoraggio delle prenotazioni BigQuery.

Per una comprensione più approfondita del formato del log di controllo, vedi Informazioni sui log di controllo.

Limitazioni

I messaggi di log hanno un limite di dimensione di 100.000 byte. Per ulteriori informazioni, consulta la sezione Voce del 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 dello schema e identificatori per risorse come tabelle e set di dati. Per informazioni sulla gestione dell'accesso a queste informazioni, consulta la documentazione sul controllo dell'accesso di Cloud Logging.

Passaggi successivi