SQL Server Audit in Cloud SQL per SQL Server consente di creare specifiche di audit del server per monitorare e registrare gli eventi a livello di server e di database. Questo controllo ti aiuta a monitorare l'accesso ai dati sensibili, rilevare attività sospette e mantenere la conformità legale.
Per controllare le operazioni di amministrazione e manutenzione sulla tua istanza Cloud SQL per SQL Server, consulta Cloud Audit Logs. 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, consulta le best practice e i prerequisiti in questa sezione. In molti casi, potrebbe essere necessario abilitare gli aumenti automatici dello spazio di archiviazione per l'archiviazione dei file di controllo. Le esigenze di spazio su disco variano in base ai tipi di audit e agli intervalli di conservazione.
Bucket Cloud Storage per i file di controllo
I file di controllo (audit log) vengono caricati in una posizione del bucket Cloud Storage. Pertanto, potrebbe essere necessario creare un bucket di proprietà del tuo account Google Cloud .
In alternativa, puoi utilizzare una località bucket di proprietà di un altro account. Quando attivi l'audit, se disponi delle autorizzazioni necessarie, il ruolo roles/storage.objectAdmin viene concesso automaticamente per caricare i file di audit nella posizione del bucket del service account specificato. Se non disponi delle autorizzazioni necessarie, devi concederle al account di servizio in un secondo momento.
Utente valido per l'abilitazione del controllo
Per attivare il controllo e creare le specifiche di controllo, deve essere disponibile l'utente sqlserver predefinito. Quando hai creato un'istanza Cloud SQL per SQL Server, è stato creato l'utente sqlserver predefinito.
Abilita i controlli
Quando abiliti l'audit, è obbligatorio indicare una località di Cloud Storage. I seguenti sono facoltativi:
- Il periodo di conservazione dei log nell'istanza
- L'intervallo di caricamento (frequenza di caricamento)
Console
-
Nella console Google Cloud , vai alla pagina Istanze Cloud SQL.
- Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.
- Fai clic su Modifica.
- Nella sezione Personalizza la tua istanza, fai clic su Flag e parametri.
- Seleziona la casella di controllo accanto ad Abilita audit SQL Server.
- Specifica un bucket Cloud Storage come posizione in cui caricare i file di controllo.
- Fai clic su Opzioni avanzate.
- Facoltativamente, specifica un numero di giorni per la conservazione dei log su disco (da 1 a 7 giorni; 7 giorni è il valore predefinito).
- Facoltativamente, specifica la frequenza di caricamento dei log (file di controllo) in minuti (1-720 minuti; 10 minuti è l'impostazione predefinita).
- Fai clic su Salva per applicare le modifiche.
gcloud
Il seguente comando attiva 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. La località, sotto forma di 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 l'audit è disattivato. |
--audit-retention-interval |
Facoltativo. Il numero di giorni di conservazione dell'audit log sul disco. | Da 1 a 7 giorni. Sono consentiti solo i giorni. | 7 giorni. |
--audit-upload-interval |
Facoltativo. Frequenza di caricamento degli audit log (file di controllo). | 1-720 minuti. | 10 minuti. |
REST v1
Utilizzando l'API REST, puoi attivare 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 dei file di controllo e una frequenza per il caricamento dei file di controllo. È obbligatoria solo la località del bucket. Per saperne di più, 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 attivare 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 dei file di controllo e una frequenza per il caricamento dei file di controllo. È obbligatoria solo la località del bucket. Per saperne di più, consulta SqlServerAuditConfig:
{ "databaseVersion":"database-version", "name":"instance-id", "region":"region", "rootPassword":"password", "settings":{ "tier":"machine-type", "sqlServerAuditConfig":{ "bucket":"gs://mybucket", "retentionInterval":"24h", "uploadInterval":"10m" } } }
Disattiva i controlli
Questa sezione contiene le opzioni per disabilitare 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 disattivati e devono essere riattivati per riprendere il controllo. 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 l'audit.
Console
-
Nella console Google Cloud , vai alla pagina Istanze Cloud SQL.
- Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.
- Fai clic su Modifica.
- Nella sezione Personalizza la tua istanza, fai clic su Flag e parametri.
- Deseleziona la casella di controllo accanto ad Abilita audit SQL Server.
- Fai clic su Salva per applicare le modifiche.
gcloud
Il seguente comando, che omette un valore per il parametro --audit-bucket-path, disattiva l'audit:
gcloud sql instances patch INSTANCE_NAME --audit-bucket-path=
REST v1
Di seguito è riportato un prototipo di richiesta per la disattivazione dell'audit, 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 la disattivazione dell'audit, 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 l'audit, i file di audit 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, inclusi quelli che non è stato possibile caricare.
Crea audit del server
Dopo aver attivato 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 per tutti i controlli del server:
| Categoria di parametro | Valori consentiti |
| In caso di errore dell'audit log | Continua o non riuscire |
| Destinazione audit | File |
| Percorso | /var/opt/mssql/audit
|
| Massima dimensione del file | 2-50 MB |
| Numero massimo di file di rollover | Deve essere: non configurato |
| Numero massimo di file | Deve essere: non configurato |
| Prenota spazio su disco | Off |
Leggi i controlli
Le sezioni seguenti illustrano i diversi modi per leggere gli audit.
Leggi gli audit di un'istanza
Per recuperare i dati da un file di controllo 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 controllo:
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 di piccole e medie dimensioni. 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.
Leggi gli audit log 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 controllo, esegui la funzione sys.fn_get_audit_file utilizzando un membro del ruolo server predefinito serveradmin. 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%'
Monitora le metriche
Puoi monitorare le operazioni relative ai controlli 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 controllo, sia quelli riusciti sia quelli 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 utilizzato dai file di controllo archiviati nell'istanza al momento di una misurazione. Questa metrica fornisce le dimensioni totali dei file di controllo nell'istanza, in byte.
Best practice
- Per evitare di trasferire file di grandi dimensioni tra regioni, tieni presente 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 controllo di SQL Server, valuta la possibilità di attivare 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 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 notifiche sui tentativi di caricamento non riusciti e sull'utilizzo eccessivo del disco.
- Per evitare di conservare troppi file di controllo per troppo tempo, configura una policy sulla conservazione dei dati per il bucket Cloud Storage.