V předchozí části jsem nastínil jak vytvořit nový Audit, který je však sám o sobě k ničemu. Je třeba určit jaké události budou zaznamenávány. Právě o tom je dnešní část. Přesněji půjde o události na úrovni serveru.
K tomuto účelu slouží Server Audit Specification. Pro každý Audit lze vytvořit pouze jeden objekt Server Audit Specification.

Seznam skupin událostí, které lze ve specifikaci auditu použít, společně s jejich popisem, lze najít na stránkách technet.microsoft.com. V SQL Server Management Studiu je uvedena i možnost FULLTEXT_GROUP, která ve zmíněném seznamu chybí.

Vytvoření Server Audit Specification

Nejprve opět pomocí SQL Server Management Studio

Nabídka složky Server Audit Specification Novou specifikaci vytvoříme první volbou v kontextové nabídce složky Server Audit Specification. Opět ve složce Security na serverové úrovni.

Ze seznamu vytvořených auditů vybereme ten, kterému chceme specifikaci přiřadit a navolíme si skupiny událostí, které chceme sledovat. V mém případě to jsou:

  • DATABASE_CHANGE_GROUP - vytvoření, úprava nebo zrušení databáze
  • DATABASE_ROLE_MEMBER_CHANGE_GROUP - přidání či odebrání uživatele z databázové role (platí pro všechny databáze)
  • FAILED_LOGIN_GROUP - neúspěšné přihlášení k SQL serveru

Nový objekt Server Audit Specification

Povolení Server Audit Specification Specifikace Auditu, stejně jako Audit, je po svém vytvoření neaktivní a tak je třeba jí povolit. Pokud budeme chtít specifikaci upravit, musíme ji nejdříve znovu zakázat.

Nyní by měl náš audit zaznamenávat události spjaté s výše uvedenými skupinami. Jednoduše jsem to otestoval modifikací vlastností databáze 'pokus', odebráním role db_owner uživateli testLogin a na konec pokusem o přihlášení k serveru pomocí špatného hesla.

Že byly události zapsány do logu lze ověřit po jeho zobrazení. Tuto možnost najdeme v kontextové nabídce konkrétního auditu.
Zobrazit Audit logAudit log

Objekt Server Audit Specification lze samozřejmě vytvořit i pomocí Transact-SQL

SQL:
USE master;
GO

CREATE SERVER AUDIT SPECIFICATION [ServerAuditSpecification-pokus]
FOR SERVER AUDIT [Audit-pokus]
ADD (DATABASE_CHANGE_GROUP),
ADD (DATABASE_ROLE_MEMBER_CHANGE_GROUP),
ADD (FAILED_LOGIN_GROUP);
GO

ALTER SERVER AUDIT SPECIFICATION [ServerAuditSpecification-pokus]
WITH (STATE = ON);
GO

Povolit danou specifikaci lze i rovnou při vytváření.

SQL:
CREATE SERVER AUDIT SPECIFICATION [ServerAuditSpecification-pokus]
FOR SERVER AUDIT [Audit-pokus]
ADD (DATABASE_CHANGE_GROUP),
ADD (DATABASE_ROLE_MEMBER_CHANGE_GROUP),
ADD (FAILED_LOGIN_GROUP)
WITH (STATE = ON);
GO

Pokud se rozhodneme specifikaci upravit, je třeba ji nejprve zakázat.

SQL:
ALTER SERVER AUDIT SPECIFICATION [ServerAuditSpecification-pokus]
WITH (STATE = OFF);
GO

ALTER SERVER AUDIT SPECIFICATION [ServerAuditSpecification-pokus]
DROP (DATABASE_ROLE_MEMBER_CHANGE_GROUP)
WITH (STATE = ON);
GO