Audyt na poziomie bazy danych i serwera

Mamy dwa poziomy audytu jaki możemy przeprowadzić w SQL Server, tj.
- na samej instancji, zbieranie info z serwera
- na bazie i zbieranie logów z konkretnej bazy danych

1. Audyt na bazie danych

1.1) Polega na stworzeniu konfiguracji Audytu, a następnie Specyfikacji Audytu per baza
1.2) Tworzymy Audyt. Rozwijamy drzewko instancji, wybieramy Security/Audits/New Audit...
1.3) Wpisujemy gdzie logować zebrane dane, u mnie do pliku 20GB nadpisujący się.

Tworzenie audytu
Tworzenie nowego audytu




















1.4) Tworzymy specyfikację audytu dla bazy.
1.5) Rozwijamy drzewo instancji, wybieramy konkretną bazę danych, dalej Security/Database Audit Specifications/New Database Audit Specification...
1.6) Wpisujemy co chcemy logować, tj.

- Audit Action Type (typ akcji), u mnie instrukcja SELECT
- Object Class (klasa obiektu), u mnie to będzie typ SCHEMA
- Object Name (nazwa obiektu), u mnie to będzie dbo ze SCHEMA
- Principal Name (główny powiązany), u mnie to będzie każdy kto leży do grupy public, a więc wszyscy

w polu Audit wybieramy nasz wcześniej stworzony obiekt Audit, i koniec. Audyt jeszcze nie działa włączamy go na poziomie obiektu Audit.

 
Specyfikacja audytu dla bazy
Specyfikacja audytu na bazę


 

 

 

 

 

 

 

 

 

2. Audyt na serwerze

Podobnie jak w pkt 1, tworzymy konfigurację Audytu, tj. gdzie będziemy logować, ja wykorzystam tu ten sam obiekt

2.1) Tworzymy specyfikację audytu dla serwera. Rozwijamy drzewo instancji i dalej Security/Audits/Server Audit Specification/New Server Audit Specification...

Wpisujemy co chcemy logować, tj.

- Audit Action Type (typ akcji), u mnie instrukcja SUCCESSFUL_LOGIN_GROUP (czyli kto się zalogował)
- Object Class (klasa obiektu), brak, tu typ akcji nie pozwala na wybranie obiektu
- Object Name (nazwa obiektu),  brak, tu typ akcji nie pozwala na wybranie obiektu
- Principal Name (główny powiązany),  brak, tu typ akcji nie pozwala na wybranie obiektu

w polu Audit wybieramy nasz wcześniej stworzony obiekt Audit, i koniec. Audyt jeszcze nie działa włączamy go na poziomie obiektu Audit. 

PS: Dokładne opisy wszystkich akcji jakie możemy logować są na MSDN

https://learn.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-action-groups-and-actions?view=sql-server-ver16

w tabelach per db: Database-level audit action groups
w tabeli per serwer: Server-level audit action groups

Specyfikacja audytu na serwer








 

 


3. Czytanie logów

Mając już logowanie, możemy czytać te logi bezpośrednio funkcją systemową sys.fn_get_audit_file, ew. zapakować to w widok na bazie master i czytać już globalnie i filtrować przez kolumnę database_name

SELECT *
FROM sys.fn_get_audit_file(
    'Y:\AuditLogs\*.sqlaudit',
    DEFAULT,
    DEFAULT
);
GO