Controllo dei dati del database SQL Server

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

Panoramica

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

  • Creazione delle specifiche di controllo del server
  • Monitoraggio e registrazione di eventi a livello di server e di database

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

Prima di iniziare

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

Bucket Cloud Storage per i file di controllo

I file di controllo (audit log) vengono caricati in una posizione del bucket Cloud Storage. Pertanto, potresti dover creare un bucket di proprietà del tuo account Google Cloud .

In alternativa, puoi utilizzare una posizione del bucket di proprietà di un altro account. Quando attivi il controllo, se disponi delle autorizzazioni necessarie, il roles/storage.objectAdmin ruolo viene concesso automaticamente per il caricamento dei file di controllo nella posizione del bucket dell'account di servizio specificato. Se non disponi delle autorizzazioni necessarie, dovrai concederle in un secondo momento per il account di servizio.

Utente valido per l'attivazione del controllo

Per attivare il controllo e creare specifiche di controllo, l'utente sqlserver predefinito deve essere disponibile. Quando hai creato un'istanza Cloud SQL per SQL Server, è stato creato per te l'utente sqlserver predefinito.

Abilita il controllo

Quando abiliti il controllo, è necessaria una località 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 console Google Cloud , 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 su Flag e parametri.
  5. Seleziona la casella di controllo accanto ad Abilita audit SQL Server.
  6. Specifica un bucket Cloud Storage come posizione 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 (da 1 a 7 giorni; 7 giorni è il valore predefinito).
  9. (Facoltativo) Specifica la frequenza di caricamento dei log (file di controllo), in minuti (1-720 minuti; 10 minuti è il valore predefinito).
  10. Fai clic su Salva per applicare le modifiche.

gcloud

Il seguente comando abilita il controllo:

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. La posizione, come bucket Cloud Storage, in cui vengono caricati i file di controllo. Vuoto se il controllo è disabilitato. In caso contrario, un percorso del bucket che inizia con: gs:// Vuoto, perché per impostazione predefinita il controllo è disattivato.
--audit-retention-interval Facoltativo. Il numero di giorni per la conservazione dei log di controllo sul disco. Da 1 a 7 giorni. Sono consentiti solo giorni. 7 giorni.
--audit-upload-interval Facoltativo. Con quale frequenza caricare i log di controllo (file di controllo). 1-720 minuti. 10 minuti.

REST v1

Utilizzando l'API REST, puoi abilitare il controllo per un'istanza. Come mostrato nel prototipo di richiesta seguente, puoi specificare un bucket Cloud Storage, un numero di giorni per la conservazione dei file di controllo e una frequenza per il caricamento dei file di controllo. È obbligatoria solo la località del bucket. Per maggiori informazioni, vedi 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 il controllo per un'istanza. Come mostrato nel prototipo di richiesta seguente, puoi specificare un bucket Cloud Storage, un numero di giorni per la conservazione dei file di controllo e una frequenza per il caricamento dei file di controllo. È obbligatoria solo la località del bucket. Per maggiori informazioni, vedi SqlServerAuditConfig:

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

Disattivare il controllo

Questa sezione contiene le opzioni per disattivare il controllo. Quando disattivi il controllo, tutti i file di controllo, inclusi quelli non ancora caricati, vengono eliminati dall'istanza. Inoltre, tutti i controlli del server sono disabilitati e devono essere riattivati se il controllo 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 disattivare il controllo.

Console

  1. Nella console Google Cloud , 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 su Flag e parametri.
  5. Deseleziona la casella di controllo accanto ad Abilita audit SQL Server.
  6. Fai clic su Salva per applicare le modifiche.

gcloud

Il seguente comando, che omette un valore per il parametro --audit-bucket-path, disattiva il controllo:

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

REST v1

Di seguito è riportato un prototipo di richiesta per disattivare il controllo, che omette i campi dell'oggetto sqlServerAuditConfig:

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

REST v1beta4

Di seguito è riportato un prototipo di richiesta per disattivare il controllo, che omette i campi dell'oggetto sqlServerAuditConfig:

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

Caricamento automatico dei file di controllo

Dopo aver attivato il controllo, i file di controllo generati vengono caricati automaticamente nel bucket Cloud Storage specificato.

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

Crea audit del server

Dopo aver attivato il controllo, l'utente sqlserver predefinito dispone delle autorizzazioni per creare, modificare ed eliminare i controlli 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 parametro Valori consentiti
In caso di errore del log di controllo Continua o non riuscire
Destinazione dell'audit File
Percorso /var/opt/mssql/audit
Massima dimensione del file 2-50 MB
Numero massimo di rollover dei file Deve essere: non configurata
Numero massimo di file Deve essere: non configurata
Riserva spazio su disco Off

Leggere i controlli

Le sezioni seguenti descrivono diversi modi per leggere gli audit.

Leggi gli audit di un'istanza

Per recuperare i dati da un file di controllo creato da un controllo 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 a volumi di dati da piccoli a moderati. Se vuoi leggere i log di controllo per volumi di dati molto grandi, ti consigliamo di leggere i log di controllo 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. L'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 controllo del bucket devono essere trasferiti in una posizione accessibile all'istanza, ad esempio il disco locale. Poi, 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 controllo a 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 Cloud SQL, disponibili tramite Metrics Explorer:

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

Best practice

  • Per evitare di trasferire file di grandi dimensioni tra regioni, valuta quanto segue:
    • Creazione di bucket Cloud Storage multiregionali
    • Configurazione del bucket Cloud Storage di destinazione nella stessa regione dell'istanza
  • Prima di utilizzare la funzionalità di audit SQL Server, valuta la possibilità di abilitare gli aumenti automatici dello spazio di archiviazione. I file di controllo, a seconda delle dimensioni totali e degli intervalli di conservazione, potrebbero richiedere uno spazio su disco significativo.
  • Dopo aver attivato l'audit, verifica che la tua istanza possa caricare i file di audit nel bucket Cloud Storage. Se il richiedente che ha configurato il controllo 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 un criterio di avviso basato su metriche per ricevere notifiche 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 un criterio di conservazione dei dati per il bucket Cloud Storage.