Microsoft SQL Server
Protokolování z Microsoft SQL serveru funguje díky ukládání událostí do aplikačního logu systému Windows a jeho následnému přeposílání na Logmanager.
Pro správnou funkci je nutné splnit následující podmínky:
- na serveru, kde běží Microsoft SQL, je nutné mít nainstalován WES, více v kapitole Microsoft Windows Event Sender (WES) (Deprecated)
- nastavit auditování Microsoft SQL serveru
- používat podporovanou verzi SQL serveru
Pro správnou funkci protokolování je potřeba používat verzi SQL serveru, která podporuje server-level auditování.
Edice / verze | SQL Server 2008 a 2008 R2 | SQL Server 2012 a 2014 |
---|---|---|
Enterprise | server and database-level | server and database-level |
Evaluation | server and database-level | server and database-level |
Developer | server and database-level | server and database-level |
Datacenter | server and database-level | N/A |
Business Intellig. | nepodporuje | server-level |
Standard | nepodporuje | server-level |
Web | nepodporuje | server-level |
Express | nepodporuje | server-level |
Pro nastavení protokolování je nutné zadat sadu SQL příkazů. Tyto příkazy lze zadat například pomocí Microsoft SQL Server Management Studia.
-
Přihlaste se do Management Studia uživatelským účtem, který má oprávnění pro vytváření auditu.
-
Klikněte na tlačítko New Query a postupně zadávejte následující příkazy.
-
Přepněte se na master:
USE master;
-
Vytvořte server audit:
CREATE SERVER AUDIT lm_audit TO APPLICATION_LOG WITH (QUEUE_DELAY = 1000);
-
Vytvořte specifikaci serverového auditu:
CREATE SERVER AUDIT SPECIFICATION [lm_audit_specification] FOR SERVER AUDIT [lm_audit] ADD (APPLICATION_ROLE_CHANGE_PASSWORD_GROUP), ADD (AUDIT_CHANGE_GROUP), ADD (BROKER_LOGIN_GROUP), ADD (DATABASE_CHANGE_GROUP), ADD (DATABASE_LOGOUT_GROUP), ADD (DATABASE_MIRRORING_LOGIN_GROUP), ADD (DATABASE_OBJECT_ACCESS_GROUP), - vytezuje ADD (DATABASE_OBJECT_CHANGE_GROUP), ADD (DATABASE_OBJECT_OWNERSHIP_CHANGE_GROUP), ADD (DATABASE_OBJECT_PERMISSION_CHANGE_GROUP), ADD (DATABASE_OWNERSHIP_CHANGE_GROUP), ADD (DATABASE_PERMISSION_CHANGE_GROUP), ADD (DATABASE_PRINCIPAL_CHANGE_GROUP), ADD (DATABASE_ROLE_MEMBER_CHANGE_GROUP), ADD (FAILED_DATABASE_AUTHENTICATION_GROUP), ADD (FAILED_LOGIN_GROUP), ADD (LOGIN_CHANGE_PASSWORD_GROUP), ADD (LOGOUT_GROUP), ADD (SCHEMA_OBJECT_CHANGE_GROUP), ADD (SCHEMA_OBJECT_OWNERSHIP_CHANGE_GROUP), ADD (SCHEMA_OBJECT_PERMISSION_CHANGE_GROUP), ADD (SERVER_OBJECT_CHANGE_GROUP), ADD (SERVER_OBJECT_OWNERSHIP_CHANGE_GROUP), ADD (SERVER_OBJECT_PERMISSION_CHANGE_GROUP), ADD (SERVER_PERMISSION_CHANGE_GROUP), ADD (SERVER_PRINCIPAL_CHANGE_GROUP), ADD (SERVER_ROLE_MEMBER_CHANGE_GROUP), ADD (SERVER_STATE_CHANGE_GROUP), ADD (SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP), ADD (SUCCESSFUL_LOGIN_GROUP), ADD (USER_CHANGE_PASSWORD_GROUP) WITH (STATE = OFF);
Pro Vaši konfiguraci si zvolte vhodnou sadu skupin k logování tak, aby nedošlo k přetížení serveru. Přehled možností specifikace v kapitole Přehled možností auditu.DATABASE_OBJECT_ACCESS_GROUP může generovat velké množství logů v závislosti na využívání Microsoft SQL serveru. Pokud by docházelo k vytěžování serveru, lze podmínku později odebrat, více v kapitole Odebrání podmínek auditu. -
Povolte audit a jeho specifikaci:
ALTER SERVER AUDIT [lm_audit] WITH (STATE = ON) GO ALTER SERVER AUDIT SPECIFICATION [lm_audit_specification] WITH (STATE = ON) GO
-
Pro kontrolu nastavení můžete zadat následující příkazy:
Informace o serverovém auditu:
SELECT name, is_state_enabled, type_desc FROM sys.server_audits;
Popis hodnot:
- name: jméno auditu
- is_state_enabled: je audit zapnutý? Musí být ve stavu 1
- type_desc: kam se audit ukládá? Musí být ve stavu APPLICATION LOG, tzn. ukládání do Windows Event
Informace o stavu serverového auditu:
SELECT name, status_desc FROM sys.dm_server_audit_status;
Popis hodnot:
- name: jméno auditu
- status_desc: stav auditu, musí být uvedena hodnota STARTED
Informace o stavu specifikace serverového auditu:
SELECT * FROM sys.server_audit_specifications;
Popis hodnot:
- name: jméno specifikace auditu
- is_state_enabled: je specifikace zapnutá? Stav specifikace, musí být ve stavu 1
Pro přidání nové podmínky musí být nejprve audit vypnut, následně lze přidat podmínka a přidá se parametr opětovného zapnutí auditu.
Například pro přidání sledování podmínky USER_CHANGE_PASSWORD_GROUP zadejte následující příkazy:
ALTER SERVER AUDIT SPECIFICATION [lm_audit_specification]
WITH (STATE = OFF);
ALTER SERVER AUDIT SPECIFICATION [lm_audit_specification]
ADD (USER_CHANGE_PASSWORD_GROUP)
WITH (STATE = ON);
Pro odebrání podmínky z auditování musí být nejprve audit vypnut, následně lze odebrat podmínka a přidá se parametr opětovného zapnutí auditu.
Například pro odebrání sledování podmínky USER_CHANGE_PASSWORD_GROUP zadejte následující příkazy:
ALTER SERVER AUDIT SPECIFICATION [lm_audit_specification]
WITH (STATE = OFF);
ALTER SERVER AUDIT SPECIFICATION [lm_audit_specification]
DROP (USER_CHANGE_PASSWORD_GROUP)
WITH (STATE = ON);
Pro zrušení auditování se musí odebrat jak audit, tak jeho specifikace. Nejprve se musí provést vypnutí auditu a potom jeho odstranění.
/* odebrání auditu */
ALTER SERVER AUDIT [lm_audit]
WITH (STATE = OFF);
DROP SERVER AUDIT lm_audit;
/* odebrání specifikace */
ALTER SERVER AUDIT SPECIFICATION [lm_audit_specification]
WITH (STATE = OFF);
DROP SERVER AUDIT SPECIFICATION lm_audit_specification;
Audit umožňuje protokolovat řadu podmínek, které jsou popsány v následující tabulce.
Přehled možností auditu:
Název událostní skupiny | Popis |
---|---|
APPLICATION_ROLE_ CHANGE_PASSWORD_GROUP |
Tato událost je vyvolána vždy, když je změněno heslo pro aplikační roli. Je ekvivalentní s událostní třídou Audit App Role Change Password Event Class. |
AUDIT_CHANGE_GROUP | Tato událost je vyvolána vždy, když je vytvořena, upravena nebo smazána jakákoli revize (audit). Tato událost je vyvolána vždy, když je vytvořena, upravena nebo smazána jakákoli specifikace revize (auditu). Jakákoliv změna v revizi (auditu) je zaznamenána v tomto revizním záznamu. Je ekvivalentní s událostní třídou Audit Change Audit Event Class. |
BACKUP_RESTORE_GROUP | Tato událost je vyvolána vždy, když je vydán příkaz zálohování nebo obnovení. Je ekvivalentní s událostní třídou Audit Backup/Restore Event Class. |
BROKER_LOGIN_GROUP | Tato událost je vyvolána k hlášení auditních zpráv souvisejících se zabezpečením přenosu služebníka (Service Broker). Je ekvivalentní s událostní třídou Audit Broker Login Event Class. |
DATABASE_CHANGE_GROUP | Tato událost je vyvolána při vytvoření, změně nebo odstranění databáze. Tato událost je vyvolána vždy, když je vytvořena, změněna nebo odstraněna jakákoli databáze. Je ekvivalentní s událostní třídou Audit Database Management Event Class. |
DATABASE_LOGOUT_GROUP | Tato událost je vyvolána, když se uživatel s databázovým přístupem odhlásí z databáze. Je ekvivalentní s událostní třídou Audit Database Logout Event Class. |
DATABASE_MIRRORING_ LOGIN_GROUP |
Tato událost je vyvolána k hlášení auditních zpráv souvisejících se zabezpečením přenosu zrcadlení databáze. Je ekvivalentní s událostní třídou Audit Database Mirroring Login Event Class. |
DATABASE_OBJECT_ACCESS _GROUP |
Tato událost je vyvolána vždy, když jsou přistupovány k databázovým objektům, jako jsou typ zprávy, sestavení nebo smlouva. Tato událost je vyvolána pro jakýkoli přístup ke kterékoli databázi. Upozornění: Toto může potenciálně vést k velkým záznamům auditu. Je ekvivalentní s událostní třídou Audit Database Object Access Event Class. |
DATABASE_OBJECT_CHANGE _GROUP |
Tato událost je vyvolána při provedení příkazu CREATE, ALTER nebo DROP na databázových objektech, jako jsou schémata. Tato událost je vyvolána vždy, když je vytvořen, upraven nebo odstraněn jakýkoli databázový objekt. Upozornění: Toto může vést k velmi velkému množství záznamů auditu. Je ekvivalentní s událostní třídou Audit Database Object Management Event Class. |
DATABASE_OBJECT_ OWNERSHIP_CHANGE_GROUP |
Tato událost je vyvolána při změně vlastníka objektů v rámci databáze. Tato událost je vyvolána při jakékoliv změně vlastnictví objektu v libovolné databázi na serveru. Je ekvivalentní s událostní třídou Audit Database Object Take Ownership Event Class. |
DATABASE_OBJECT_PERMISSION _CHANGE_GROUP |
Tato událost je vyvolána, když je vydán příkaz GRANT, REVOKE nebo DENY pro databázové objekty, jako jsou sestavení a schémata. Tato událost je vyvolána pro jakoukoli změnu oprávnění objektu v libovolné databázi na serveru. Je ekvivalentní s událostní třídou Audit Database Object GDR Event Class. |
DATABASE_OPERATION_GROUP | Tato událost je vyvolána při operacích v databázi, jako je kontrolní bod (checkpoint) nebo odběr oznámení o dotazu (subscribe query notification). Tato událost je vyvolána při jakékoli operaci v databázi na jakékoli databázi. Je ekvivalentní s událostní třídou Audit Database Operation Event Class. |
DATABASE_OWNERSHIP_ CHANGE_GROUP |
Tato událost je vyvolána při použití příkazu ALTER AUTHORIZATION ke změně vlastníka databáze a jsou ověřeny oprávnění potřebné pro provedení této změny. Tato událost je vyvolána při jakékoli změně vlastnictví databáze v libovolné databázi na serveru. Je ekvivalentní s událostní třídou Audit Change Database Owner Event Class. |
DATABASE_PERMISSION_ CHANGE_GROUP |
Tato událost je vyvolána vždy, když je vydán příkaz GRANT, REVOKE nebo DENY pro oprávnění k příkazu jakýmkoli principálem v SQL Serveru (Toto se vztahuje na události pouze v rámci databáze, například udělování oprávnění v rámci databáze). Tato událost je vyvolána při jakékoli změně oprávnění (GDR) v rámci databáze v libovolné databázi na serveru. Je ekvivalentní s událostní třídou Audit Database Scope GDR Event Class. |
DATABASE_PRINCIPAL_ CHANGE_GROUP |
Tato událost je vyvolána při vytváření, úpravě nebo odstraňování principálů, jako jsou uživatelé, z databáze. Je ekvivalentní s událostní třídou Audit Database Principal Management Event Class. (Je také ekvivalentní s událostní třídou Audit Add DB Principal Event Class, která se vyskytuje u zastaralých uložených procedur sp_grantdbaccess, sp_revokedbaccess, sp_addPrincipal a sp_dropPrincipal.) Tato událost je vyvolána vždy, když je do databáze přidána nebo z ní odebrána rola pomocí uložených procedur sp_addrole, sp_droprole. Tato událost je vyvolána při vytváření, úpravě nebo odstraňování jakýchkoli databázových principálů z libovolné databáze. Je ekvivalentní s událostní třídou Audit Add Role Event Class. |
DATABASE_PRINCIPAL_ IMPERSONATION_GROUP |
Tato událost je vyvolána při operaci převzetí identity (impersonation) v rámci databáze, například při použití příkazu EXECUTE AS <principal> nebo SETPRINCIPAL. Tato událost je vyvolána při každém převzetí identity v jakékoli databázi. Je ekvivalentní s událostní třídou Audit Database Principal Impersonation Event Class. |
DATABASE_ROLE_MEMBER_ CHANGE_GROUP |
Tato událost je vyvolána vždy, když je přidán nebo odebrán přihlášený uživatel z databázové role. Tato událostní třída je vyvolána u uložených procedur sp_addrolemember, sp_changegroup a sp_droprolemember. Tato událost je vyvolána při jakékoli změně členství v databázové roli v jakékoli databázi. Je ekvivalentní s událostní třídou Audit Add Member to DB Role Event Class. |
DBCC_GROUP | Tato událost je vyvolána vždy, když principál vydá jakýkoli příkaz DBCC. Je ekvivalentní s událostní třídou Audit DBCC Event Class. |
FAILED_DATABASE_ AUTHENTICATION_GROUP |
Tato událost indikuje, že se principál pokusil přihlásit do uzavřené (contained) databáze a neúspěšně selhal. Události v této třídě jsou vyvolány novými spojeními nebo spojeními, která jsou znovu použita ze skupiny spojení (connection pool). Je ekvivalentní s událostní třídou Audit Login Failed Event Class. |
FAILED_LOGIN_GROUP | Tato událost indikuje, že se principál pokusil přihlásit do SQL Serveru a neúspěšně selhal. Události v této třídě jsou vyvolány novými spojeními nebo spojeními, která jsou znovu použita ze skupiny spojení (connection pool). Je ekvivalentní s událostní třídou Audit Login Failed Event Class. |
FULLTEXT_GROUP | Tato událost indikuje, že došlo k události plného textu (fulltext). Je ekvivalentní s událostní třídou Audit Fulltext Event Class. |
LOGIN_CHANGE_PASSWORD_ GROUP |
Tato událost je vyvolána vždy, když je heslo přihlašování změněno pomocí příkazu ALTER LOGIN nebo uložené procedury sp_password. Je ekvivalentní s událostní třídou Audit Login Change Password Event Class. |
LOGOUT_GROUP | Tato událost indikuje, že principál se odhlásil ze SQL Serveru. Události v této třídě jsou vyvolány novými spojeními nebo spojeními, která jsou znovu použita ze skupiny spojení (connection pool). Je ekvivalentní s událostní třídou Audit Logout Event Class. |
SCHEMA_OBJECT_ACCESS_GROUP | Tato událost je vyvolána vždy, když bylo použito oprávnění objektu ve schématu. Je ekvivalentní s událostní třídou Audit Schema Object Access Event Class. |
SCHEMA_OBJECT_CHANGE_GROUP | Tato událost je vyvolána při provádění operací CREATE, ALTER nebo DROP na schématu. Je ekvivalentní s událostní třídou Audit Schema Object Management Event Class. Tato událost je vyvolána na objektech schématu. Je ekvivalentní s událostní třídou Audit Object Derived Permission Event Class. Tato událost je vyvolána vždy, když se změní jakékoliv schéma jakékoliv databáze. Je ekvivalentní s událostní třídou Audit Statement Permission Event Class. |
SCHEMA_OBJECT_ OWNERSHIP_CHANGE_GROUP |
Tato událost je vyvolána při kontrole oprávnění pro změnu vlastníka objektu schématu (jako je tabulka, procedura nebo funkce). Toto se děje, když je použita instrukce ALTER AUTHORIZATION pro přiřazení vlastníka objektu. Tato událost je vyvolána pro jakoukoli změnu vlastnictví schématu pro jakoukoli databázi na serveru. Je ekvivalentní s událostní třídou Audit Schema Object Take Ownership Event Class. |
SCHEMA_OBJECT_ PERMISSION_CHANGE_GROUP |
Tato událost je vyvolána vždy, když je provedeno udělení, odepření nebo zrušení oprávnění pro objekt schématu. Je ekvivalentní s událostní třídou Audit Schema Object GDR Event Class. |
SERVER_OBJECT_CHANGE_GROUP | Tato událost je vyvolána při operacích CREATE, ALTER nebo DROP na objektech serveru. Je ekvivalentní s událostní třídou Audit Server Object Management Event Class. |
SERVER_OBJECT_ OWNERSHIP_CHANGE_GROUP |
Tato událost je vyvolána při změně vlastníka objektů v rozsahu serveru. Je ekvivalentní s událostní třídou Audit Server Object Take Ownership Event Class. |
SERVER_OBJECT_ PERMISSION_CHANGE_GROUP |
Tato událost je vyvolána při vydání příkazu GRANT, REVOKE nebo DENY pro oprávnění serverového objektu jakýmkoli principálem v SQL Serveru. Je ekvivalentní s událostní třídou Audit Server Object GDR Event Class. |
SERVER_OPERATION_GROUP | Tato událost je vyvolána při použití bezpečnostních auditních operací, jako je změna nastavení, zdrojů, externího přístupu nebo autorizace. Je ekvivalentní s událostní třídou Audit Server Operation Event Class. |
SERVER_PERMISSION_ CHANGE_GROUP |
Tato událost je vyvolána při vydání příkazu GRANT, REVOKE nebo DENY pro oprávnění v rozsahu serveru, například při vytváření přístupu. Je ekvivalentní s událostní třídou Audit Server Scope GDR Event Class. |
SERVER_PRINCIPAL_ CHANGE_GROUP |
Tato událost je vyvolána při vytváření, úpravě nebo odstraňování serverových přihlášek. Je ekvivalentní s událostní třídou Audit Server Principal Management Event Class. Tato událost je vyvolána, když hlavní subjekt použije uložené procedury sp_defaultdb nebo sp_defaultlanguage nebo příkaz ALTER LOGIN. Je ekvivalentní s událostní třídou Audit Addlogin Event Class. Tato událost je vyvolána při použití uložených procedur sp_addlogin a sp_droplogin. Je také ekvivalentní s událostní třídou Audit Login Change Property Event Class. Tato událost je vyvolána při použití uložených procedur sp_grantlogin, sp_revokelogin nebo sp_denylogin. Je ekvivalentní s událostní třídou Audit Login GDR Event Class. |
SERVER_PRINCIPAL_ IMPERSONATION_GROUP |
Tato událost je vyvolána při provádění impersonace v rámci serverového rozsahu, například pomocí příkazu EXECUTE AS <login>. Je ekvivalentní s událostní třídou Audit Server Principal Impersonation Event Class. |
SERVER_ROLE_MEMBER_ CHANGE_GROUP |
Tato událost je vyvolána při přidání nebo odebrání přihlášení z fixní serverové role. Tato událost je vyvolána při použití uložených SQL procedur sp_addsrvrolemember a sp_dropsrvrolemember. Je ekvivalentní s událostní třídou Audit Add Login to Server Role Event Class. |
SERVER_STATE_CHANGE_GROUP | Tato událost je vyvolána při modifikaci stavu služby SQL Server. Je ekvivalentní s událostní třídou Audit Server Starts and Stops Event Class. |
SUCCESSFUL_DATABASE_ AUTHENTICATION_GROUP |
Tato událost označuje úspěšné přihlášení principála do kontejnerové databáze. Je ekvivalentní s událostní třídou Audit Successful Database Authentication Event Class. |
SUCCESSFUL_LOGIN_GROUP | Tato událost označuje úspěšné přihlášení principála do SQL Serveru. Události této třídy jsou vyvolány novými spojeními nebo spojeními, která jsou opětovně použita ze skupiny připojení (connection pool). Je ekvivalentní s událostní třídou Audit Login Event Class. |
TRACE_CHANGE_GROUP | Tato událost je vyvolána všemi příkazy, které ověřují oprávnění ALTER TRACE. Je ekvivalentní s událostní třídou Audit Server Alter Trace Event Class. |
USER_CHANGE_PASSWORD_ GROUP |
Tato událost je vyvolána vždy, když je změněno heslo uživatele v obsažené databázi pomocí příkazu ALTER USER. |
USER_DEFINED_AUDIT_GROUP | Tato skupina monitoruje události vyvolané pomocí sp_audit_write (Transact-SQL). Obvykle jsou triggery nebo uložené procedury vyvolávány s použitím volání sp_audit_write k povolení auditování důležitých událostí. |