Audit logging di Spanner Omni

Spanner Omni scrive audit log che registrano le attività amministrative e gli accessi ai dati all'interno dei deployment di Spanner Omni.

Gli audit log ti aiutano a rispondere alla domanda "Chi ha fatto cosa, dove e quando?". Utilizza gli audit log per aiutare le tue entità di sicurezza, controllo e conformità a monitorare i dati e i sistemi di Spanner Omni per individuare possibili vulnerabilità o uso improprio dei dati esterni.

Prima di iniziare

Configura il deployment di Spanner Omni con la crittografia TLS o mutual TLS (mTLS). Se crei un deployment senza crittografia TLS o mTLS, non vengono generati audit log. Per istruzioni sulla creazione di un deployment con crittografia TLS o mTLS, consulta le seguenti sezioni:

Tipi di audit log

Spanner Omni supporta i seguenti tipi di audit log.

Audit log delle attività di amministrazione

Gli audit log delle attività di amministrazione registrano le chiamate API che modificano la configurazione o i metadati del deployment. Ad esempio, Spanner Omni scrive audit log delle attività di amministrazione quando un utente crea un database.

Gli audit log delle attività di amministrazione vengono generati per impostazione predefinita per i deployment configurati con la crittografia TLS e mTLS. Non puoi configurarli, escluderli o disabilitarli.

Per un elenco dei metodi che scrivono audit log delle attività di amministrazione, consulta Metodi per tipo di autorizzazione.

Audit log degli accessi ai dati

Gli audit log degli accessi ai dati registrano le chiamate API che leggono la configurazione o i metadati del deployment, nonché le chiamate API che creano, modificano o leggono i dati utente. Ad esempio, Spanner Omni scrive audit log degli accessi ai dati quando un utente descrive un database, esegue una query SQL o esegue un'istruzione DML (Data Manipulation Language).

Gli audit log degli accessi ai dati sono disabilitati per impostazione predefinita perché possono essere di grandi dimensioni. Per registrare gli eventi di accesso ai dati, abilitali e configurali esplicitamente. Gli audit log degli accessi ai dati aiutano l'assistenza Google a risolvere i problemi, pertanto ti consigliamo di abilitarli.

Per istruzioni sulla configurazione di questi log, consulta Configura gli audit log degli accessi ai dati. Per un elenco dei metodi che scrivono audit log degli accessi ai dati, consulta Metodi per tipo di autorizzazione.

Audit log degli eventi di sistema

Gli audit log degli eventi di sistema registrano quando il sistema modifica la configurazione delle risorse di Spanner Omni senza l'azione diretta dell'utente. Ad esempio, Spanner Omni scrive un audit log degli eventi di sistema quando il sistema ottimizza automaticamente un database appena ripristinato o crea un backup pianificato.

Gli audit log degli eventi di sistema vengono generati per impostazione predefinita per i deployment configurati con la crittografia TLS e mTLS. Non puoi configurarli, escluderli o disabilitarli.

Per ulteriori informazioni sugli eventi di sistema che generano questi log, consulta Eventi di sistema.

Configura gli audit log degli accessi ai dati

Per abilitare gli audit log degli accessi ai dati, configura il criterio Identity and Access Management (IAM) per il deployment utilizzando l'interfaccia a riga di comando di Spanner Omni o l'API. Puoi abilitare la registrazione per tipi di autorizzazione specifici ed esentare utenti specifici dalla registrazione.

Autorizzazioni obbligatorie

Per configurare gli audit log degli accessi ai dati, devi avere l'autorizzazione spanner.instances.setIamPolicy.

Per visualizzare le configurazioni degli audit log degli accessi ai dati, devi avere l'autorizzazione spanner.instances.getIamPolicy.

Tipi di autorizzazioni

I metodi API controllano le autorizzazioni IAM e ogni autorizzazione ha un tipo di autorizzazione associato. Quando configuri gli audit log degli accessi ai dati, specifica i tipi di autorizzazione da registrare. I tipi di autorizzazione sono suddivisi nelle seguenti categorie:

Tipi di autorizzazione di accesso ai dati:

  • ADMIN_READ: registra i metodi API che leggono i metadati o le informazioni di configurazione. Ad esempio, la descrizione di un database.
  • DATA_READ: registra i metodi API che leggono i dati utente. Ad esempio, l'esecuzione di una query SQL.
  • DATA_WRITE: registra i metodi API che scrivono i dati utente. Ad esempio, l'esecuzione di un'istruzione DML.

Tipo di autorizzazione per le attività di amministrazione:

  • ADMIN_WRITE: controllato per i metodi API che scrivono metadati o informazioni di configurazione (ad esempio, la creazione di un database). Questi generano audit log delle attività di amministrazione e non possono essere configurati.

Per una spiegazione dettagliata dei tipi di autorizzazione, consulta Tipi di autorizzazione nella documentazione di Cloud Audit Logs.

Configura utilizzando l'interfaccia a riga di comando di Spanner Omni

Per configurare gli audit log degli accessi ai dati utilizzando l'interfaccia a riga di comando di Spanner Omni, crea un file di policy JSON che elenca i tipi di log da abilitare e tutti i membri esentati, quindi applica la policy.

  1. Crea un file di policy denominato policy.json:

    {
      "auditConfigs": [
        {
          "auditLogConfigs": [
            {
              "logType": "ADMIN_READ",
              "exemptedMembers": [
                "USER_NAME"
              ]
            },
            {
              "logType": "DATA_WRITE"
            },
            {
              "logType": "DATA_READ"
            }
          ],
          "service": "spanner.googleapis.com"
        }
      ]
    }
    
  2. Applica la policy utilizzando il comando spanner instances set-iam-policy:

    spanner instances set-iam-policy default policy.json
    

Per visualizzare la configurazione corrente degli audit log degli accessi ai dati, esegui il comando seguente:

spanner instances get-iam-policy default

Per altri esempi di casi d'uso di configurazione comuni, consulta Configura gli audit log degli accessi ai dati nella documentazione di Cloud Audit Logs.

Eventi di sistema

Spanner Omni genera audit log degli eventi di sistema per la maggior parte degli eventi di sistema supportati dalla versione gestita di Spanner. Per ulteriori informazioni, consulta Eventi di sistema nella documentazione di Spanner.

Spanner Omni supporta gli eventi di sistema CreateScheduledBackup e OptimizeRestoredDatabase. Tuttavia, Spanner Omni non supporta l'evento di sistema AutoscaleInstance perché la scalabilità automatica non è disponibile in Spanner Omni.

File di audit log e conservazione

Spanner Omni scrive gli audit log nel file system locale dei server Spanner Omni.

Trova i file di audit log utilizzando il seguente percorso e la seguente convenzione di denominazione: BASE_DIR/logs/PROCESS/audit.log.BUCKET.TIMESTAMP.PROCESS_ID

  • BASE_DIR: la directory di base specificata all'avvio del deployment di Spanner Omni. Per i deployment Kubernetes, il valore predefinito è /spanner.

  • PROCESS: Spanner Omni esegue più processi per server, ad esempio server, zone_services, zonal_zone_services, zonal_server, e base_services. Gli audit log vengono scritti nella directory corrispondente al processo che li ha generati.

  • BUCKET: gli audit log delle attività di amministrazione e degli eventi di sistema vengono scritti nel bucket required, mentre gli audit log degli accessi ai dati vengono scritti nel bucket default.

  • TIMESTAMP: il timestamp della creazione del file.

  • PROCESS_ID: l'ID del processo che scrive l'audit log.

Spanner Omni crea un nuovo file di audit log quando il file corrente supera i 50 MiB o quando viene riavviato un processo server. Gestisce anche automaticamente un link simbolico da BASE_DIR/logs/PROCESS/audit.log.BUCKET al file di audit log in scrittura.

L'accesso ai file di audit log locali è controllato dagli elenchi di controllo dell'accesso (ACL) del file system. Chiunque abbia l'autorizzazione per accedere al server e accedere a questi file può visualizzare gli audit log.

Ti consigliamo di limitare l'accesso alle VM Spanner Omni (ad esempio, limitando l'accesso SSH e configurando gli ACL del file system) in modo che solo il personale autorizzato possa visualizzare i log. Per l'archiviazione, il controllo e la conformità a lungo termine, utilizza un agente di logging (ad esempio Fluentd) per raccogliere ed esportare gli audit log in un sistema di logging esterno, come AWS CloudWatch, Grafana Loki, Elasticsearch, Datadog, Splunk o Cloud Monitoring.

Conservazione dei file

Spanner Omni applica policy di conservazione basate sia sulle dimensioni sia sull'età per i file di audit log locali:

  • Limite di dimensioni: i file di audit log vengono conservati finché l'utilizzo totale del disco non supera 1 GB. Se per la directory dei log viene utilizzato un disco separato, ai file di audit log viene assegnata una quota del 25% dello spazio totale su quel disco.

  • Limite di età: i file di audit log vengono conservati per un massimo di 14 giorni, a condizione che non venga superato il limite di dimensioni.

Quando viene raggiunto uno dei due limiti, Spanner Omni elimina prima i file di log meno recenti. Se devi conservare gli audit log per più di 14 giorni, esportali in un sistema di logging esterno.

Struttura della voce di log di controllo

Le voci di audit log di Spanner Omni sono formattate come JSON e utilizzano la stessa definizione strutturale di Spanner. Per ulteriori informazioni, consulta Struttura della voce di log di controllo nella documentazione di Cloud Audit Logs.

Nome log

A differenza della versione gestita multi-tenant di Spanner, Spanner Omni viene eseguito come deployment single-tenant su server dedicati. Poiché su questi server non sono presenti altri tenant o progetti, tutte le voci di audit log utilizzano l'identificatore di progetto default.

projects/default/logs/cloudaudit.googleapis.com/activity
projects/default/logs/cloudaudit.googleapis.com/data_access
projects/default/logs/cloudaudit.googleapis.com/system_event

Identità del chiamante

Gli audit log registrano l'identità dell'utente che ha eseguito l'operazione registrata. L'identità del chiamante viene memorizzata nel campo AuthenticationInfo dell'oggetto AuditLog.

In Spanner Omni, l'identità del chiamante è il nome utente dell'utente autenticato che ha eseguito la chiamata API. Per informazioni sulla creazione e la gestione degli utenti, consulta Autenticazione e autorizzazione.

Indirizzo IP del chiamante

Spanner Omni non supporta la registrazione dell'indirizzo IP del chiamante negli audit log.

Metodi per tipo di autorizzazione

Quando chiami un metodo API, Spanner Omni genera un audit log in base al tipo di autorizzazione richiesto per eseguire il metodo. I metodi che richiedono le autorizzazioni ADMIN_READ, DATA_READ o DATA_WRITE generano audit log degli accessi ai dati, mentre i metodi che richiedono le autorizzazioni ADMIN_WRITE generano audit log delle attività di amministrazione.

Spanner Omni supporta la maggior parte dei metodi API Cloud Spanner. Per la classificazione dei metodi di audit logging condivisi da Spanner e Spanner Omni, consulta Metodi per tipo di autorizzazione nella documentazione di Spanner.

Spanner Omni introduce anche metodi API univoci che generano audit log. I metodi contrassegnati come operazioni a lunga esecuzione (LRO) in genere generano due voci di audit log: una all'inizio dell'operazione e un'altra al termine. Per ulteriori informazioni, consulta Operazioni a lunga esecuzione in Cloud Audit Logs documentation.

Tipo di autorizzazione Metodi
ADMIN_READ google.spanner.omni.v1.OmniAdmin.GetLocation
google.spanner.omni.v1.OmniAdmin.ListLocation
google.spanner.omni.v1.OmniAdmin.GetLocationDistance
google.spanner.omni.v1.OmniAdmin.ListLocationDistance
google.spanner.omni.v1.OmniAdmin.GetZone
google.spanner.omni.v1.OmniAdmin.ListZones
google.spanner.omni.v1.OmniAdmin.GetServer
google.spanner.omni.v1.OmniAdmin.ListServers
google.spanner.omni.v1.OmniAdmin.GetDeployment
google.spanner.omni.v1.OmniAdmin.ListBackupDescriptors
google.spanner.omni.v1.OmniAdmin.GetExternalStorage
google.spanner.omni.v1.OmniAdmin.ListExternalStorages
google.spanner.omni.v1.OmniAdmin.GetIamPolicy
google.spanner.omni.v1.UsersService.GetUser
google.spanner.omni.v1.UsersService.ListUsers
google.spanner.omni.v1.UsersService.GetRole
google.spanner.omni.v1.UsersService.ListRoles
ADMIN_WRITE google.spanner.omni.v1.OmniAdmin.CreateLocation
google.spanner.omni.v1.OmniAdmin.DeleteLocation
google.spanner.omni.v1.OmniAdmin.CreateLocationDistance
google.spanner.omni.v1.OmniAdmin.UpdateLocationDistance
google.spanner.omni.v1.OmniAdmin.DeleteLocationDistance
google.spanner.omni.v1.OmniAdmin.CreateZone
google.spanner.omni.v1.OmniAdmin.DeleteZone
google.spanner.omni.v1.OmniAdmin.CreateServer
google.spanner.omni.v1.OmniAdmin.DeleteServer
google.spanner.omni.v1.OmniAdmin.CreateExternalStorage
google.spanner.omni.v1.OmniAdmin.DeleteExternalStorage
google.spanner.omni.v1.OmniAdmin.SetIamPolicy
google.spanner.omni.v1.OmniAdmin.ImportBackup (LRO)
google.spanner.omni.v1.UsersService.CreateUser
google.spanner.omni.v1.UsersService.DeleteUser
google.spanner.omni.v1.UsersService.UpdateUser
DATA_READ google.spanner.omni.v1.ImportExportService.ExportDatabase (LRO)
DATA_WRITE google.spanner.omni.v1.ImportExportService.ImportDatabase (LRO)

Metodi che non generano audit log

Spanner Omni esclude gli stessi metodi dall'audit logging di Spanner. Questi metodi vengono esclusi perché sono metodi ad alto volume che comportano costi significativi per la generazione e l'archiviazione dei log, hanno un basso valore di controllo o perché un altro audit log o log della piattaforma fornisce già la copertura del metodo. Per un elenco completo di questi metodi esclusi, consulta Metodi esenti nella documentazione di Spanner.

Inoltre, il metodo google.spanner.omni.v1.LoginService.Login non genera audit log perché precede i controlli di autenticazione e autorizzazione.

Elaborazione durata in corso…

Il campo della durata dell'elaborazione in un audit log registra la durata dell'elaborazione dell'API, ad esempio la durata dell'esecuzione di una query SQL, non il ritardo nella scrittura dell'audit log. Per ulteriori informazioni, consulta Durata dell'elaborazione in Spanner documentation.

Confronto con la versione gestita di Spanner

Sebbene l'audit logging in Spanner Omni condivida concetti e formattazione di base con Spanner, esistono diverse differenze fondamentali nel modo in cui i log vengono archiviati, configurati e gestiti.

Differenze

  • Destinazione dei log: Spanner Omni scrive gli audit log direttamente nel file system locale dei server Spanner Omni, anziché esportarli in Cloud Logging.

  • Configurazione: in Spanner, configuri gli audit log degli accessi ai dati a livello di progetto utilizzando la Google Cloud console, Google Cloud CLI o l'API Identity and Access Management. In Spanner Omni, configuri gli audit log degli accessi ai dati utilizzando l'interfaccia a riga di comando di Spanner Omni o l'API Spanner Omni.

  • Crittografia TLS e mTLS: Spanner applica la crittografia TLS per impostazione predefinita e non può essere disabilitata. In Spanner Omni, se scegli di eseguire il deployment senza crittografia TLS o mTLS, non vengono generati audit log.

  • Conservazione: gli audit log di Spanner vengono conservati in Logging in base alle impostazioni di conservazione di Logging. Spanner Omni conserva i file di audit log locali per un massimo di 14 giorni o fino al raggiungimento dei limiti di dimensioni del disco e si basa sull'esportazione dei log in un sistema esterno per l'archiviazione a lungo termine.

Analogie

  • Formato dei log: entrambi i prodotti scrivono audit log in formato JSON seguendo la struttura Google Cloud AuditLog standard.

  • Configurazione dell'accesso ai dati: entrambi i prodotti consentono di abilitare gli audit log degli accessi ai dati in modo granulare per tipo di autorizzazione (ADMIN_READ, DATA_READ, DATA_WRITE) e supportano l'esenzione di utenti specifici dalla registrazione.

Passaggi successivi