Controllo del database SQL Server

In questa pagina viene descritto il controllo dei database in Cloud SQL utilizzando la funzionalità di SQL Server Audit.

Panoramica

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

  • Creazione delle specifiche per il controllo del server
  • Monitoraggio e logging di eventi a livello di server e di database

Per ulteriori informazioni sulle funzionalità di SQL Server Audit, consulta SQL Server Audit (Database Engine).

Prima di iniziare

Prima di attivare il controllo dei database, esamina i prerequisiti in questa sezione.

Bucket Cloud Storage per i file di controllo

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

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

Utente valido per abilitare il controllo

Per abilitare il controllo e creare specifiche di controllo, è necessario che sia disponibile l'utente sqlserver predefinito. Quando hai creato un'istanza di Cloud SQL per SQL Server, è stato creato l'utente sqlserver predefinito.

Abilitazione del controllo in corso...

Quando attivi 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. In Google Cloud Console, vai alla pagina Istanze Cloud SQL.

    Vai alle istanze di 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 il controllo SQL Server.
  6. Specifica un bucket Cloud Storage come località in cui vengono caricati i file di controllo.
  7. Fai clic su Advanced options (Opzioni avanzate).
  8. (Facoltativo) Specifica un numero di giorni per la conservazione dei log (da 1 a 7 giorni; il valore predefinito è 7 giorni).
  9. (Facoltativo) Specifica la frequenza di caricamento dei log (file di controllo), espressa in minuti (1-720 minuti; il valore predefinito è 10 minuti).
  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 tabella seguente riassume i parametri gcloud di questa operazione:

Parametro Descrizione Valori consentiti Valore predefinito
--audit-bucket-path Obbligatorio. La località, come bucket Cloud Storage, in cui vengono caricati i file di controllo. Vuoto se il controllo è disattivato. In caso contrario, un percorso del bucket che inizia con: gs:// Vuoto, perché per impostazione predefinita la funzione di controllo è disabilitata.
--audit-retention-interval (Facoltativo) Il numero di giorni per la conservazione del log di controllo su disco. da 1 a 7 giorni Sono consentiti solo giorni specifici. 7 giorni.
--audit-upload-interval (Facoltativo) Frequenza di caricamento dei 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 seguente prototipo di richiesta, puoi specificare un bucket Cloud Storage, un numero di giorni per la conservazione del file di controllo e una frequenza per il caricamento dei file di controllo. È obbligatoria solo la località del bucket. Per maggiori 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 il controllo per un'istanza. Come mostrato nel seguente prototipo di richiesta, puoi specificare un bucket Cloud Storage, un numero di giorni per la conservazione del file di controllo e una frequenza per il caricamento dei file di controllo. È obbligatoria solo la località del bucket. Per maggiori 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"
      }
   }
}

Disattivazione del controllo in corso...

Questa sezione contiene le opzioni per la disattivazione del controllo. Se disabiliti 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 riabilitati se l'audit deve essere ripreso. Gli audit log che sono stati caricati nel bucket Cloud Storage potrebbero rimanere, a seconda delle impostazioni di conservazione per il bucket.

Di seguito sono riportate le opzioni per disattivare il controllo.

Console

  1. In Google Cloud Console, vai alla pagina Istanze Cloud SQL.

    Vai alle istanze di 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 Attiva controllo 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, disabilita il controllo:

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

REST v1

Di seguito, in che vengono omessi i campi dell'oggetto sqlServerAuditConfig, viene presentato un prototipo di richiesta per la disattivazione del controllo:

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

REST v1beta4

Di seguito, in che vengono omessi i campi dell'oggetto sqlServerAuditConfig, viene presentato un prototipo di richiesta per la disattivazione del controllo:

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

Caricamento automatico dei file di controllo

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

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

Creazione di controlli del server

Dopo aver abilitato il controllo, l'utente predefinito di sqlserver è autorizzato a creare, modificare e rilasciare controlli del server.

Usa il comando CREA SERVER SERVER per definire i controlli del nuovo server. Puoi anche utilizzare l'interfaccia utente di SQL Server Management Studio (SSMS) per creare controlli del server.

Le seguenti categorie di parametri sono applicate a tutti i controlli del server:

Categoria del parametro Valori consentiti
In caso di errore del log di controllo Continua o non superato
Destinazione del controllo File
Percorso /var/opt/mssql/audit
Massima dimensione del file 2-50 MB
Numero massimo di file rollover Deve essere: non configurato
Numero massimo di file Deve essere: non configurato
Riserva spazio su disco Disattivato

Controlli di lettura

Lettura dei controlli da un'istanza

Per recuperare i dati di un file di controllo creato da un controllo server, puoi utilizzare la seguente procedura archiviata: 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 tale stored procedure, consulta la pagina sys.fn_get_audit_file.

Di seguito è riportato un esempio di utilizzo della procedura msdb.dbo.gcloudsql_fn_get_audit_file per il recupero dei dati di controllo:

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

Lettura dei controlli da un bucket

Per leggere i controlli da un bucket Cloud Storage, puoi scaricare i file dal bucket a 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 dal bucket devono essere trasferiti in una posizione accessibile a tale istanza, ad esempio il suo disco locale. Quindi, per restituire le informazioni dai file di controllo, esegui la funzione sys.fn_get_audit_file utilizzando un membro del ruolo server server fisso. Ad esempio, da un'istanza Windows, se hai trasferito i file di controllo 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%'

Monitoraggio delle metriche

Puoi monitorare le operazioni relative ai controlli come parte delle metriche di 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 in più aree geografiche, puoi:
    • Creazione di bucket Cloud Storage in più aree geografiche
    • Configurazione del bucket Cloud Storage di destinazione nella stessa area geografica dell'istanza
  • Prima di utilizzare la funzionalità di controllo di 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 spazio su disco significativo.
  • Dopo aver abilitato l'audit, verifica che l'istanza possa caricare file di controllo nel bucket Cloud Storage. Se il richiedente che ha configurato il controllo non disponeva delle autorizzazioni necessarie per il caricamento dei file nel bucket Cloud Storage, le autorizzazioni non verranno concesse automaticamente.
  • Configura un criterio di avviso basato su metriche per ricevere notifiche sui tentativi di caricamento non riusciti e sull'utilizzo eccessivo del disco.
  • Per evitare di conservare troppi file di controllo per un periodo troppo lungo, configura un criterio di conservazione dei dati per il bucket Cloud Storage.