È importante avere un ambiente sicuro, applicando il principio del minimo privilegio nei vostri server e database, ma questo può essere difficile da raggiungere in ambienti di grandi dimensioni, dove molte persone hanno privilegi elevati o diverse persone hanno il permesso di eseguire attività sui vostri dati o schemi.

Come misura aggiuntiva, un log di audit dovrebbe essere implementato in questi scenari e rivederli spesso.

QL Server fornisce la funzionalità per implementare log di audit a livello di server e database. A partire da SQL Server 2008, tutte le edizioni di SQL Server supportano gli audit a livello di server. Gli audit a livello di database sono supportati a partire da SQL Server 2016 (13.x) SP1. Prima di allora, l’auditing a livello di database era limitato alle edizioni Enterprise, Developer e Evaluation.

In questo post vi mostrerò come configurare e visualizzare i log di audit:

Implement Audit Log

In sicurezza, vai su Audits e seleziona New audit…

Specifica un nome per l’audit e seleziona una destinazione dell’audit (personalmente preferisco un percorso di file).
Seleziona i parametri desiderati e clicca OK.

L’audit è ora creato, per farlo funzionare basta abilitare l’audit.
NOTA: prima di apportare qualsiasi modifica alla configurazione dell’audit, è necessario disabilitarlo.

Implement Server Level Audit

Abbiamo creato la nostra posizione di audit, ora procederemo a creare le azioni che vogliamo controllare a livello di server.

Nella cartella Security, individua Server Audit Specifications, clicca col tasto destro e seleziona New Server Audit Specification…

Nella finestra successiva, specifica un nome per l’audit (puoi averne più di uno) e seleziona l’audit creato nel passo precedente.

Scegli l’azione o le azioni da controllare. Per controllare cosa è incluso in ogni azione, leggete qui dalla documentazione Microsoft.

Una volta che avete finito cliccate su OK per creare la specifica di audit.
Per questo esempio ho solo incluso l’azione DBCC da sottoporre ad audit (come vedremo più avanti in questo post)

La specifica Audit è anche creata disabilitata, per farla funzionare, abilitatela come mostrato nell’immagine.

NOTA: prima di fare qualsiasi modifica alla specifica di audit, è necessario disabilitarla.

Implement Database Level Audit

Il processo è relativamente lo stesso per creare una specifica di audit a livello di database, la differenza principale è che l’opzione si trova sotto la cartella Security su ogni database.

Fai clic destro sulla cartella Database Audit Specification e poi New Database Audit Specification…

Seleziona il nome del Database Audit e la destinazione di audit (la stessa creata nel primo passo per questo esempio).
Un’altra delle differenze chiave per i Database Audit è che dobbiamo selezionare l’oggetto o lo schema che vogliamo controllare.
Seleziona le azioni da controllare (puoi vedere la descrizione di ciascuna qui), e poi clicca Ok.

Per questo esempio controllerò il comando SELECT su una tabella chiamata Corso in un database Scuola.

Dopo aver creato la specifica dell’audit, devi abilitarla all’esecuzione.

NOTA: prima di fare qualsiasi modifica alla configurazione dell’audit, devi prima disabilitarla.

Rivedere i log dell’audit

Avere gli audit configurati e in esecuzione è solo la metà del lavoro, non vale niente se non si rivedono spesso i log in modo proattivo.
Ci sono 2 opzioni per rivedere i log, usando SSMS e T-SQL

Per questo esempio ho eseguito alcune frasi per attivare gli audit di server e database configurati sopra in modo da poter vedere alcuni dati.

SSMS

Per controllare i log degli eventi usando Management Studio, basta selezionare l’Audit creato, fare clic destro su di esso e selezionare l’opzione View Audit Logs

Il log di audit verrà visualizzato in un tipo di log SQL Server, e puoi vedere alcuni esempi che ho attivato

T-SQL

Per utilizzare questa opzione, si usa il sys.fn_get_audit_file, specificando la posizione del file, e per il nome del file usare *.sqlaudit per includere tutti i file.

Questa è la query che uso per questo esempio:

SELECT event_time,action_id,statement,database_name,server_principal_name 
FROM sys.fn_get_audit_file ('C:\temp\TestAudit_*.sqlaudit',default,default);

L’output della query appare così:

Ho segnato in giallo le azioni che sono state catturate nella specifica del database.

Con queste informazioni siete pronti per andare a configurare i vostri audit per i vostri server Mission critical e rivederli spesso, inoltre potreste implementare un allarme o una logica di segnalazione automatica per essere informati su attività sospette.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.