Sdílet prostřednictvím


Audit SQL Serveru (databázový stroj)

platí pro:SQL Serverazure SQL Managed Instance

audit instance databázového stroje SQL Serveru nebo jednotlivé databáze zahrnuje sledování a protokolování událostí, ke kterým dochází v databázovém stroji. Audit SQL Serveru umožňuje vytvářet audity serverů, které můžou obsahovat specifikace auditu serveru pro události na úrovni serveru a specifikace auditu databáze pro události na úrovni databáze. Auditované události se dají zapsat do protokolů událostí nebo do souborů auditu.

Důležitý

Na Azure SQL Managed Instancemá tato T-SQL funkce určité změny chování. Podrobnosti o všech změnách chování jazyka T-SQL najdete v tématu Rozdíly ve službě Azure SQL Managed Instance T-SQL od SQL Serveru.

V závislosti na požadavcích na státní správu nebo standardy pro vaši instalaci existuje několik úrovní auditování SQL Serveru. Sql Server Audit poskytuje nástroje a procesy, které musíte povolit, uložit a zobrazit audity na různých serverových a databázových objektech.

Skupiny akcí auditování serveru můžete zaznamenat na úrovni jednotlivých instancí a buď skupiny akcí auditování databáze, nebo akce auditu databáze pro jednotlivé databáze. K události auditu dochází při každém výskytu auditovatelné akce.

Všechny edice SQL Serveru podporují audity na úrovni serveru. Všechny edice podporují audity na úrovni databáze počínaje SQL Serverem 2016 (13.x) SP1. Před tím se auditování na úrovni databáze omezilo na edice Enterprise, Developer a Evaluation. Další informace najdete v tématu Funkce podporované edicemi SQL Serveru 2016.

Poznámka

Toto téma se týká SQL Serveru. Informace o sql Database najdete v tématu Začínáme s auditování databáze SQL.

Součásti auditu SQL Serveru

audit je kombinace několika prvků do jednoho balíčku pro konkrétní skupinu akcí serveru nebo databázových akcí. Komponenty auditu SQL Serveru se kombinují a produkují výstup, který se nazývá audit, stejně jako definice sestavy v kombinaci s grafikou a datovými prvky vytvářejí sestavu.

Audit SQL Serveru využívá Extended Events k pomoci při vytváření auditu. Další informace o rozšířených událostech naleznete v tématu rozšířené události.

Audit SQL Serveru

Objekt sql Server Audit shromažďuje jednu instanci akcí na úrovni serveru nebo databáze a skupiny akcí, které se mají monitorovat. Audit je na úrovni instance SQL Serveru. Pro každou instanci SQL Serveru můžete mít více auditů.

Při definování auditu zadáte umístění výstupu výsledků. Toto je cíl auditu. Audit se vytvoří ve vypnutém stavu a neumožňuje automatickou kontrolu žádných akcí. Po povolení auditu obdrží cíl auditu data z auditu.

Specifikace auditu serveru

Server Audit Specification objekt patří do auditu. Pro každý audit můžete vytvořit jednu specifikaci auditu serveru, protože obě jsou vytvořeny v oboru instance SQL Serveru.

Specifikace auditu serveru shromažďuje mnoho skupin akcí na úrovni serveru vyvolaných funkcí Rozšířených událostí. Do specifikace auditu serveru můžete zahrnout skupiny akcí auditu. Skupiny akcí auditu jsou předdefinované skupiny akcí, což jsou atomické události, ke kterým dochází v databázovém stroji. Tyto akce se odešlou do auditu, který je zaznamenává v cíli.

Skupiny akcí auditu na úrovni serveru jsou popsány v článku skupiny akcí auditování SQL Serveru a akce.

Specifikace auditu databáze

Objekt Database Audit Specification patří také k auditování SQL Serveru. Pro každou databázi SQL Serveru můžete vytvořit jednu auditní specifikaci databáze.

Specifikace auditu databáze shromažďuje akce auditu na úrovni databáze vyvolané funkcí Rozšířené události. Do specifikace auditu databáze můžete přidat skupiny akcí auditu nebo události auditu. Auditní události jsou atomické akce, které může modul SQL Serveru auditovat. Skupiny akcí auditování jsou předdefinované skupiny akcí. Oba jsou v oboru databáze SQL Serveru. Tyto akce se odešlou do auditu, který je zaznamenává v cílovém systému. Do specifikace auditu uživatelské databáze nezahrnujte objekty v oboru serveru, jako jsou například systémová zobrazení.

Skupiny akcí auditu na úrovni databáze a akce auditu jsou popsány v článku skupiny akcí auditování SQL Serveru a akce.

Cíl

Výsledky auditu se odesílají do cíle, což může být soubor, protokol událostí zabezpečení systému Windows nebo protokol událostí aplikace systému Windows. Protokoly je potřeba pravidelně kontrolovat a archivovat, aby se zajistilo, že cíl má dostatek místa pro zápis více záznamů.

Důležitý

Každý ověřený uživatel může číst a zapisovat do protokolu událostí aplikace systému Windows. Protokol událostí aplikace vyžaduje nižší oprávnění než protokol událostí zabezpečení systému Windows a je méně zabezpečený než protokol událostí zabezpečení systému Windows.

Zápis do protokolu zabezpečení systému Windows vyžaduje přidání účtu služby SQL Server do zásady Generování auditů zabezpečení. Místní systém, místní služba a síťová služba jsou ve výchozím nastavení součástí této zásady. Toto nastavení lze nakonfigurovat pomocí modulu zásad zabezpečení snap-in (secpol.msc). Kromě toho musí být zásada zabezpečení auditování přístupu k objektům povolená pro úspěch iselhání . Toto nastavení lze nakonfigurovat pomocí nástroje snap-in pro zásady zabezpečení (secpol.msc). V systému Windows Vista nebo Windows Server 2008 (a vyšší) můžete z příkazového řádku nastavit podrobnější zásady vygenerované aplikací pomocí programu zásad auditu (AuditPol.exe). Další informace o krocích povolení zápisu do protokolu zabezpečení systému Windows naleznete v tématu Zápis událostí auditu SYSTÉMU SQL Server do protokolu zabezpečení. Další informace o programu Auditpol.exe naleznete v článku znalostní báze Knowledge Base 921469, Použití zásad skupiny ke konfiguraci podrobného auditování zabezpečení. Protokoly událostí Windows jsou globální pro operační systém Windows. Další informace o protokolech událostí systému Windows naleznete v tématu Přehled prohlížeče událostí. Pokud potřebujete přesnější nastavení oprávnění pro audit, použijte cílový binární soubor.

Pokud ukládáte informace o auditu do souboru, abyste zabránili manipulaci, můžete omezit přístup k umístění souboru následujícími způsoby:

  • Účet služby SQL Serveru musí mít oprávnění ke čtení i zápisu.

  • Správci auditu obvykle vyžadují oprávnění ke čtení a zápisu. Předpokládá se, že správci auditu jsou účty systému Windows pro správu souborů auditu, jako je například jejich kopírování do různých sdílených složek, jejich zálohování atd.

  • Čtenáři auditu, kteří jsou oprávněni číst auditní soubory, musí mít povolení k jejich čtení.

I když databázový stroj zapisuje do souboru, můžou si ho ostatní uživatelé Systému Windows přečíst, pokud mají oprávnění. Databázový stroj nemá výhradní zámek, který brání operacím čtení.

Vzhledem k tomu, že databázový stroj má přístup k souboru, přihlašovací údaje SQL Serveru, které mají oprávnění CONTROL SERVER, mohou k přístupu k souborům auditu použít databázový stroj. Chcete-li zaznamenat libovolného uživatele, který čte soubor auditu, definujte audit na master.sys.fn_get_audit_file. Tato akce zaznamenává přihlášení s oprávněním CONTROL SERVER, která získala přístup k souboru auditu prostřednictvím SQL Serveru.

Pokud správce auditu zkopíruje soubor do jiného umístění (pro účely archivace atd.), měly by se seznamy řízení přístupu (ACL) v novém umístění snížit na následující oprávnění:

  • Správce auditu – čtení a zápis

  • Čtenář auditu – číst

Doporučujeme generovat sestavy auditu z samostatné instance SQL Serveru, například instance SQL Serveru Express, ke které mají přístup pouze správci auditu nebo čtenáři auditu. Pomocí samostatné instance databázového systému pro vytváření sestav můžete zabránit neoprávněným uživatelům v tom, aby získali přístup k záznamu auditu.

Můžete nabídnout dodatečnou ochranu před neoprávněným přístupem tím, že zašifrujete složku, ve které je soubor auditu uložený pomocí nástroje Windows BitLocker Drive Encryption nebo systému souborů Windows Encrypting.

Další informace o záznamech auditu, které jsou zapisovány do cíle, naleznete v tématu záznamy auditu SQL Server.

Přehled používání auditu SQL Serveru

K definování auditu můžete použít SQL Server Management Studio nebo Transact-SQL. Po vytvoření a povolení auditu obdrží cíl položky.

Protokoly událostí systému Windows můžete číst pomocí nástroje prohlížeče událostí ve Windows. Pro čtení cílového souboru můžete použít buď Prohlížeč souborů protokolu v aplikaci SQL Server Management Studio, nebo funkci fn_get_audit_file.

Obecný proces vytváření a používání auditu je následující.

  1. Vytvořte audit a definujte cíl.

  2. Vytvořte specifikaci auditu serveru nebo specifikaci auditu databáze, která odpovídá auditu. Povolte specifikaci auditu.

  3. Povolte audit.

  4. Události auditu si můžete přečíst pomocí prohlížeče událostí windows , Prohlížeč souborů protokolunebo funkce fn_get_audit_file.

Další informace naleznete v tématu Vytvoření auditu serveru a specifikace auditu serveru a Vytvoření auditu serveru a specifikace auditu databáze.

Úvahy

V případě selhání během zahájení auditu se server nespustí. V tomto případě je možné server spustit pomocí možnosti -f na příkazovém řádku.

Pokud selhání auditu způsobí, že se server vypne nebo se nespustí, protože ON_FAILURE=SHUTDOWN je pro audit zadán, zapíše se událost MSG_AUDIT_FORCED_SHUTDOWN do protokolu. Vzhledem k tomu, že k vypnutí dojde při prvním výskytu tohoto nastavení, událost se zapíše jednou. Tato událost se zapíše po chybové zprávě auditu, která způsobuje vypnutí systému. Správce může obejít vypnutí vyvolané auditem spuštěním SQL Serveru v režimu jednoho uživatele pomocí příznaku -m. Pokud se spustíte v režimu jednoho uživatele, budete downgradovat všechny audity, u kterých ON_FAILURE=SHUTDOWN je zadáno pro spuštění v této relaci jako ON_FAILURE=CONTINUE. Při spuštění SQL Serveru pomocí příznaku -m se zpráva MSG_AUDIT_SHUTDOWN_BYPASSED zapíše do protokolu chyb.

Další informace o možnostech spuštění služby naleznete v tématu Možnosti spouštění služby databázového stroje.

Připojení databáze s definovaným auditem

Připojení databáze, která má specifikaci auditu a určuje identifikátor GUID, který na serveru neexistuje, způsobí osiřelou specifikaci auditu. Protože v instanci serveru neexistuje audit s odpovídajícím identifikátorem GUID, nezaznamenávají se žádné události auditu. Chcete-li tuto situaci opravit, použijte příkaz ALTER DATABASE AUDIT SPECIFICATION pro připojení opuštěné specifikace auditu k existujícímu serverovému auditu. Nebo pomocí příkazu CREATE SERVER AUDIT vytvořte nový audit serveru se zadaným identifikátorem GUID.

Databázi, která má definovanou specifikaci auditu, můžete připojit k jiné edici SQL Serveru, která nepodporuje audit SQL Serveru, například SQL Server Express, ale nebude zaznamenávat události auditu.

Zrcadlení databáze a audit SQL Serveru

Databáze, která má definovanou specifikaci auditu databáze a která používá zrcadlení databáze, bude obsahovat specifikaci auditu databáze. Pokud chcete správně pracovat se zrcadlenou instancí SQL, musí být nakonfigurované následující položky:

  • Zrcadlový server musí mít audit se stejným identifikátorem GUID, aby specifikace auditu databáze mohla zapisovat záznamy auditu. To lze nakonfigurovat pomocí příkazu CREATE AUDIT WITH GUID =<GUID ze zdrojového serveru Audit>.

  • Pro cíle binárních souborů musí mít účet služby zrcadlového serveru příslušná oprávnění k umístění, kam se zapisuje auditní stopa.

  • V případě cílů protokolu událostí systému Windows musí zásady zabezpečení v počítači, kde je umístěn zrcadlový server, umožnit přístup účtu služby k protokolu událostí zabezpečení nebo aplikačnímu protokolu událostí.

Správci auditování

Členové pevné role sysadmin správce systému jsou v každé databázi identifikováni jako uživatel dbo. Pokud chcete auditovat akce správců, auditujte akce dbo uživatele.

Vytváření a správa auditů pomocí Transact-SQL

K implementaci všech aspektů auditu SQL Serveru můžete použít příkazy DDL, zobrazení dynamické správy a funkce a zobrazení katalogu.

Příkazy jazyka definice dat

Pomocí následujících příkazů DDL můžete vytvářet, měnit a odstraňovat specifikace auditu:

Příkazy DDL Popis
Změnit oprávnění Změní vlastnictví zabezpečitelného.
ALTER DATABASE AUDIT SPECIFIKACE Změní objekt specifikace auditu databáze pomocí funkce Audit SQL Serveru.
ZMĚNIT SERVER AUDIT Změní objekt auditu serveru pomocí funkce auditování SQL Serveru.
ZMĚNIT SPECIFIKACI AUDITU SERVERU Změní objekt specifikace auditu serveru pomocí funkce Audit SQL Serveru.
VYTVOŘTE SPECIFIKACI AUDITU DATABÁZE Vytvoří objekt specifikace auditu databáze pomocí funkce auditování SQL Serveru.
VYTVOŘIT AUDIT SERVERU Vytvoří objekt auditu serveru pomocí auditu SQL Serveru.
VYTVOŘIT SPECIFIKACI AUDITU SERVERU Vytvoří objekt specifikace auditu serveru pomocí funkce Audit SQL Serveru.
ODSTRANIT SPECIFIKACI AUDITU DATABÁZE Zahodí objekt specifikace auditu databáze pomocí funkce Audit SQL Serveru.
DROP SERVER AUDIT Zahodí objekt auditování serveru pomocí funkce auditování SQL Serveru.
SPECIFIKACE AUDITOVÁNÍ SERVERU Zahodí objekt specifikace auditu serveru pomocí funkce Audit SQL Serveru.

Dynamická zobrazení a funkce

V následující tabulce jsou uvedena dynamická zobrazení a funkce, které můžete použít pro auditování SQL Serveru.

Dynamická zobrazení a funkce Popis
sys.dm_audit_actions Vrátí řádek pro každou akci auditu, která se dá hlásit v protokolu auditování, a všechny skupiny akcí auditu, které lze konfigurovat jako součást auditování SQL Serveru.
sys.dm_server_audit_status Poskytuje informace o aktuálním stavu auditu.
sys.dm_audit_class_type_map Vrátí tabulku, která mapuje pole class_type v protokolu auditu na pole class_desc v sys.dm_audit_actions.
fn_get_audit_file Vrátí informace ze souboru auditu vytvořeného auditem serveru.

Zobrazení katalogu

Následující tabulka uvádí zobrazení katalogu, která můžete použít pro auditování SQL Serveru.

Zobrazení katalogu Popis
Specifikace auditu databáze v systému Obsahuje informace o specifikacích auditu databáze v auditování SQL Serveru v instanci serveru.
sys.database_audit_specification_details Obsahuje informace o specifikacích auditu databáze v auditování SQL Serveru na instanci serveru pro všechny databáze.
sys.server_audits Obsahuje jeden řádek pro každý audit SQL Serveru v instanci serveru.
sys.server_audit_specifications Obsahuje informace o specifikacích auditu na úrovni serveru v auditu SQL Serveru v instanci serveru.
sys.server_audit_specifications_details Obsahuje informace o podrobnostech specifikace auditu serveru (akcí) v auditování SQL Serveru v instanci serveru.
sys.server_file_audits Obsahuje uložené rozšířené informace o typu auditu souboru v auditování SQL Serveru v instanci serveru.

Dovolení

Každá funkce a příkaz pro audit SQL Serveru má jednotlivé požadavky na oprávnění.

Aby bylo možné vytvořit, změnit nebo odstranit audit serveru nebo specifikaci auditu serveru, vyžadují uživatelé s oprávněními serveru oprávnění ALTER ANY SERVER AUDIT nebo CONTROL SERVER. K vytvoření, změně nebo odstranění specifikace auditu databáze vyžadují objekty zabezpečení databáze oprávnění ALTER ANY DATABASE AUDIT nebo oprávnění ALTER nebo CONTROL na databázi. Kromě toho musí mít správci oprávnění k připojení k databázi, nebo oprávnění ALTER ANY SERVER AUDIT, nebo CONTROL SERVER.

Oprávnění VIEW ANY DEFINITION poskytuje přístup k zobrazení zobrazení auditování na úrovni serveru a VIEW DEFINITION poskytuje přístup k zobrazení zobrazení auditu na úrovni databáze. Odepření těchto oprávnění znemožní možnost zobrazit zobrazení katalogu, i když má objekt zabezpečení oprávnění ALTER ANY SERVER AUDIT nebo ALTER ANY DATABASE AUDIT.

Další informace o tom, jak udělit práva a oprávnění, naleznete v tématu GRANT (Transact-SQL).

Opatrnost

Uživatelé s rolí správce systému mohou zasahovat do jakékoli komponenty auditu a ti s rolí vlastníka databáze mohou zasahovat do specifikací auditu v databázi. Audit SQL Serveru ověří, že přihlášení, které vytváří nebo mění specifikaci auditu, má alespoň oprávnění ALTER ANY DATABASE AUDIT. Při připojení databáze se ale neprovádí žádné ověření. Měli byste předpokládat, že všechny specifikace auditu databáze jsou jen tak důvěryhodné jako ty objekty v roli správce systému nebo roli db_owner.

Vytvořit audit serveru a specifikaci auditování serveru

Vytvoření specifikace auditování serveru a databáze

Zobrazení protokolu auditování SQL Serveru

zápis událostí auditu SQL Serveru do protokolu zabezpečení

Vlastnosti serveru (Stránka zabezpečení)
Vysvětluje, jak zapnout auditování přihlášení pro SQL Server. Záznamy auditu jsou uloženy v protokolu aplikací systému Windows.

možnost konfigurace serveru v režimu auditu c2
Vysvětluje režim auditování dodržování předpisů zabezpečení C2 na SQL Serveru.

Kategorie události auditu zabezpečení (SQL Server Profiler)
Vysvětluje události auditu, které můžete použít v SQL Server Profileru. Další informace naleznete v tématu SQL Server Profiler.

trasování SQL
Vysvětluje, jak se dá trasování SQL použít z vlastních aplikací k ručnímu vytváření trasování místo použití SQL Server Profileru.

Spouště DDL
Vysvětluje, jak můžete pomocí triggerů DDL (Data Definition Language) sledovat změny vašich databází.

Microsoft TechNet: SQL Server TechCenter: Zabezpečení a ochrana SQL Server 2005
Poskytuje informace o datech zabezpečení SQL Serveru up-to.