Controllo dei dati del database SQL Server

Questa pagina descrive il controllo del database in Cloud SQL utilizzando la funzionalità di audit di SQL Server.

Panoramica

In Cloud SQL, le funzionalità di audit di SQL Server includono:

  • Creazione di specifiche di audit del server
  • Monitoraggio e registrazione degli eventi a livello di server e di database

Per ulteriori informazioni sulle funzionalità di audit di SQL Server, consulta Audit di SQL Server (motore di database).

Prima di iniziare

Prima di abilitare l'audit del database, esamina i prerequisiti in questa sezione.

Bucket Cloud Storage per i file di audit

I file di audit (audit log) vengono caricati in un bucket Cloud Storage. Pertanto, potrebbe essere necessario creare un bucket di proprietà del tuo Google Cloud account.

In alternativa, puoi utilizzare un bucket di proprietà di un altro account. Quando abiliti l'audit, se disponi delle autorizzazioni necessarie, il roles/storage.objectAdmin ruolo viene concesso automaticamente per il caricamento dei file di audit nel bucket del service account specificato. Se non disponi delle autorizzazioni necessarie, devi concederle in un secondo momento per il account di servizio.

Utente valido per l'abilitazione dell'audit

Per abilitare l'audit e creare specifiche di audit, deve essere disponibile l'utente sqlserver predefinito. Quando hai creato un'istanza Cloud SQL per SQL Server, è stato creato automaticamente l'utente sqlserver predefinito.

Abilitare l'audit

Quando abiliti l'audit, è necessario un percorso di Cloud Storage. I seguenti sono facoltativi:

  • Il periodo di conservazione dei log sull'istanza
  • L'intervallo di caricamento (frequenza di caricamento)

Console

  1. Nella Google Cloud console, vai alla pagina Istanze Cloud SQL.

    Vai a Istanze Cloud SQL

  2. Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.
  3. Fai clic su Modifica.
  4. Nella sezione Personalizza la tua istanza, fai clic Flag e parametri.
  5. Seleziona la casella di controllo accanto ad Abilita audit di SQL Server.
  6. Specifica un bucket Cloud Storage come percorso in cui vengono caricati i file di audit.
  7. Fai clic su Opzioni avanzate.
  8. (Facoltativo) Specifica un numero di giorni per la conservazione dei log su disco (da 1 a 7 giorni; 7 giorni è il valore predefinito).
  9. (Facoltativo) Specifica la frequenza di caricamento dei log (file di audit) in minuti (da 1 a 720 minuti; 10 minuti è il valore predefinito).
  10. Fai clic su Salva per applicare le modifiche.

gcloud

Il seguente comando abilita l'audit:

gcloud sql instances patch INSTANCE_NAME --audit-bucket-path=gs://my-bucket --audit-retention-interval=24h --audit-upload-interval=10m

La seguente tabella riassume i parametri gcloud di questa operazione:

Parametro Descrizione Valori consentiti Valore predefinito
--audit-bucket-path Obbligatorio. Il percorso, come bucket Cloud Storage, in cui vengono caricati i file di audit. Vuoto se l'audit è disabilitato. In caso contrario, un percorso del bucket che inizia con: gs:// Vuoto, perché per impostazione predefinita l'audit è disabilitato.
--audit-retention-interval (Facoltativo) Il numero di giorni per la conservazione degli audit log su disco. Da 1 a 7 giorni. Sono consentiti solo i giorni. 7 giorni.
--audit-upload-interval (Facoltativo) La frequenza di caricamento degli audit log (file di audit). Da 1 a 720 minuti. 10 minuti.

REST v1

Utilizzando l'API REST, puoi abilitare l'audit per un'istanza. Come mostrato nel seguente prototipo di richiesta, puoi specificare un bucket Cloud Storage, un numero di giorni per la conservazione dei file di audit e una frequenza per il caricamento dei file di audit. È obbligatorio solo il percorso del bucket. Per ulteriori informazioni, consulta SqlServerAuditConfig:

{
   "databaseVersion":"database-version",
   "name":"instance-id",
   "region":"region",
   "rootPassword":"password",
   "settings":{
      "tier":"machine-type",
      "sqlServerAuditConfig":{
         "bucket":"gs://mybucket",
         "retentionInterval":"24h",
         "uploadInterval":"10m"
      }
   }
}

REST v1beta4

Utilizzando l'API REST, puoi abilitare l'audit per un'istanza. Come mostrato nel seguente prototipo di richiesta, puoi specificare un bucket Cloud Storage, un numero di giorni per la conservazione dei file di audit e una frequenza per il caricamento dei file di audit. È obbligatorio solo il percorso del bucket. Per ulteriori informazioni, consulta SqlServerAuditConfig:

{
   "databaseVersion":"database-version",
   "name":"instance-id",
   "region":"region",
   "rootPassword":"password",
   "settings":{
      "tier":"machine-type",
      "sqlServerAuditConfig":{
         "bucket":"gs://mybucket",
         "retentionInterval":"24h",
         "uploadInterval":"10m"
      }
   }
}

Disabilitare l'audit

Questa sezione contiene le opzioni per disabilitare l'audit. Quando disabiliti l'audit, tutti i file di audit, inclusi quelli non ancora caricati, vengono eliminati dall'istanza. Inoltre, tutti gli audit del server vengono disabilitati e devono essere riabilitati se l'audit deve riprendere. Gli audit log caricati nel bucket Cloud Storage potrebbero rimanere, a seconda delle impostazioni di conservazione del bucket.

Di seguito sono riportate le opzioni per disabilitare l'audit.

Console

  1. Nella Google Cloud console, vai alla pagina Istanze Cloud SQL.

    Vai a Istanze Cloud SQL

  2. Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.
  3. Fai clic su Modifica.
  4. Nella sezione Personalizza la tua istanza, fai clic Flag e parametri.
  5. Deseleziona la casella di controllo accanto ad Abilita audit di SQL Server.
  6. Fai clic su Salva per applicare le modifiche.

gcloud

Il seguente comando, che omette un valore per il --audit-bucket-path parametro, disabilita l'audit:

gcloud sql instances patch INSTANCE_NAME --audit-bucket-path=

REST v1

Il seguente, che omette i campi dell'oggetto sqlServerAuditConfig, è un prototipo di richiesta per disabilitare l'audit:

{
   "databaseVersion":"database-version",
   "name":"instance-id",
   "region":"region",
   "rootPassword":"password",
   "settings":{
      "tier":"machine-type",
      "sqlServerAuditConfig":{
      }
   }
}

REST v1beta4

Il seguente, che omette i campi dell'oggetto sqlServerAuditConfig, è un prototipo di richiesta per disabilitare l'audit:

{
   "databaseVersion":"database-version",
   "name":"instance-id",
   "region":"region",
   "rootPassword":"password",
   "settings":{
      "tier":"machine-type",
      "sqlServerAuditConfig":{
      }
   }
}

Caricamento automatico dei file di audit

Dopo aver abilitato l'audit, i file di audit generati vengono caricati automaticamente nel bucket Cloud Storage specificato.

I file di audit generati vengono archiviati anche con l'istanza fino alla scadenza del periodo di conservazione (intervallo) configurato. Trascorso questo periodo, i file di audit vengono eliminati definitivamente, anche quelli che non è stato possibile caricare.

Creare audit del server

Dopo aver abilitato l'audit, l'utente sqlserver predefinito dispone delle autorizzazioni per creare, modificare ed eliminare gli audit del server.

Utilizza il comando CREATE SERVER AUDIT per definire nuovi audit del server. Puoi anche utilizzare l'interfaccia utente di SQL Server Management Studio (SSMS) per creare audit del server.

Le seguenti categorie di parametri vengono applicate a tutti gli audit del server:

Categoria di parametri Valori consentiti
In caso di errore dell'audit log Continua o non riuscire
Destinazione dell'audit File
Percorso /var/opt/mssql/audit
Dimensione massima del file Da 2 a 50 MB
Numero massimo di file di rollover Deve essere: non configurato
Numero massimo di file Deve essere: non configurato
Riserva spazio su disco Off

Leggere gli audit

Le sezioni seguenti illustrano diversi modi per leggere gli audit.

Leggere gli audit da un'istanza

Per recuperare i dati da un file di audit creato da un audit del server, puoi utilizzare la seguente stored procedure: msdb.dbo.gcloudsql_fn_get_audit_file. La procedura msdb.dbo.gcloudsql_fn_get_audit_file accetta gli stessi parametri della funzione sys.fn_get_audit_file.

Pertanto, per informazioni sull'utilizzo di questa stored procedure, consulta sys.fn_get_audit_file.

Ecco un esempio di utilizzo della procedura msdb.dbo.gcloudsql_fn_get_audit_file per recuperare i dati di audit:

SELECT event_time, statement FROM msdb.dbo.gcloudsql_fn_get_audit_file('/var/opt/mssql/audit/*', NULL, NULL) WHERE statement LIKE '%INSERT%'

Questa stored procedure è più adatta per volumi di dati da piccoli a moderati. Se vuoi leggere gli audit log per volumi di dati molto grandi, ti consigliamo di leggere gli audit log da Cloud Storage utilizzando un'istanza Compute Engine.

Leggere gli audit da un bucket

Per leggere gli audit da un bucket Cloud Storage, puoi scaricare i file dal bucket in un'istanza SQL Server. Questa istanza SQL Server potrebbe essere:

  • Un'istanza Windows di Compute Engine
  • Un'istanza Linux di Compute Engine
  • Un altro tipo di istanza che esegue SQL Server

I file di audit del bucket devono essere trasferiti in una posizione accessibile all'istanza, ad esempio il disco locale. Quindi, per restituire le informazioni dai file di audit, esegui la funzione sys.fn_get_audit_file utilizzando un membro del ruolo server fisso serveradmin. Ad esempio, da un'istanza Windows, se hai trasferito i file di audit in D:\Audit, puoi utilizzare un comando simile al seguente:

SELECT event_time, statement FROM sys.fn_get_audit_file('D:\Audit\*.*', NULL, NULL) WHERE statement LIKE '%INSERT%'

Monitorare le metriche

Puoi monitorare le operazioni correlate all'audit nell'ambito delle metriche di Cloud SQL, disponibili tramite Esplora metriche:

  • database/sqlserver/audits_upload_count. Questa metrica indica il totale dei tentativi di caricamento dei file di audit, sia riusciti che non riusciti. Controlla questa metrica per monitorare se i caricamenti sono andati a buon fine.
  • database/sqlserver/audits_size. Questa metrica indica la quantità di spazio su disco utilizzata dai file di audit archiviati nell'istanza al momento di una misurazione. Questa metrica fornisce le dimensioni totali dei file di audit sull'istanza, in byte.

Best practice

  • Per evitare di trasferire file di grandi dimensioni tra le regioni, valuta la possibilità di:
    • Creare bucket Cloud Storage multiregionali
    • Configurare il bucket Cloud Storage di destinazione nella stessa regione dell'istanza
  • Prima di utilizzare la funzionalità di audit di SQL Server, valuta la possibilità di abilitare gli aumenti automatici dello spazio di archiviazione. I file di audit, a seconda delle dimensioni totali e degli intervalli di conservazione, potrebbero richiedere una quantità significativa di spazio su disco.
  • Dopo aver abilitato l'audit, verifica che l'istanza possa caricare i file di audit nel bucket Cloud Storage. Se il richiedente che ha configurato l'audit non disponeva delle autorizzazioni necessarie per caricare i file nel bucket Cloud Storage, le autorizzazioni non vengono concesse automaticamente. Per ulteriori informazioni sulle autorizzazioni, consulta le seguenti risorse:
  • Configura una policy di avviso basata su metriche per ricevere una notifica in caso di tentativi di caricamento non riusciti e utilizzo eccessivo del disco.
  • Per evitare di conservare troppi file di audit per troppo tempo, configura una policy di conservazione dei dati per il bucket Cloud Storage.