Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Applies to:SQL Server
Azure SQL Managed Instance
Auditing instance SQL Server databázového stroje nebo jednotlivé databáze zahrnuje monitorování a protokolování událostí, které probíhají v databázovém stroji. audit SQL Server 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.
V závislosti na požadavcích na státní správu nebo standardy pro instalaci existuje několik úrovní auditování pro SQL Server. 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.
Tento článek se týká SQL Server a Azure SQL Managed Instance.
- Všechny edice SQL Server podporují audity na úrovni serveru. V SQL Server 2016 (13.x) s aktualizací Service Pack 1 a novějšími verzemi podporují všechny edice audity na úrovni databáze. Před SQL Server 2016 (13.x) bylo auditování na úrovni databáze omezené na edice Enterprise, Developer a Evaluation. Další informace najdete v tématu Editions a podporované funkce SQL Server 2016.
- V Azure SQL Managed Instance se podporuje audit SQL Serveru a existují rozdíly mezi databázemi Azure SQL Managed Instance a databázemi v SQL Server.
- Informace o službě SQL Database najdete v tématu Auditing pro Azure SQL Database.
komponenty auditu SQL Server
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 společně vytvářejí výstup, který se nazývá audit, stejně jako definice sestavy ve spojení s grafickými a datovými prvky vytváří sestavu.
SQL Server audit používá Extended Events k pomoci při vytváření auditu. Další informace o rozšířených událostech naleznete v tématu Přehled rozšířených událostí.
auditování SQL Server
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 Server. Pro každou instanci SQL Server 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
Objekt Server Audit Specification 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 Server.
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 Database Engine. Tyto akce se odesílají do auditu, který je zaznamenává do cílového systému.
Skupiny akcí auditu na úrovni serveru jsou popsané v článku SQL Server Skupiny akcí a akce auditu.
Poznámka
Kvůli omezením výkonu se tempdb a dočasné tabulky neauditují. Zatímco dávková dokončená skupina akcí zachycuje příkazy proti dočasným tabulkám, nemusí správně naplnit názvy objektů. Zdrojová tabulka se ale vždy audituje a zajišťuje, aby se zaznamenávaly všechny vložení ze zdrojové tabulky do dočasných tabulek.
Specifikace auditu databáze
Objekt Database Audit Specification patří také do SQL Server auditu. Pro každou SQL Server databázi na audit můžete vytvořit jednu specifikaci auditu 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. události Audit jsou atomické akce, které může modul SQL Server auditovat. Skupiny akcí auditování jsou předdefinované skupiny akcí. Oba jsou v oboru databáze SQL Server. Tyto akce se odesílají do auditu, který je zaznamenává do cílového 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 popsané v článku SQL Server Skupiny akcí a akce auditu.
Cíl
Výsledky auditu se odesílají do cíle, což může být soubor, protokol událostí Windows Security nebo protokol událostí Windows aplikace. 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 Windows. Protokol událostí aplikace vyžaduje nižší oprávnění než protokol událostí Windows Security a je méně zabezpečený než protokol událostí Windows Security.
Zápis do protokolu Windows Security vyžaduje přidání účtu služby SQL Server do zásady Generování bezpečnostních auditů. 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 i Selhání. Toto nastavení lze nakonfigurovat pomocí modulu zásad zabezpečení snap-in (secpol.msc). V Windows Vista nebo Windows Server 2008 (a novějších) můžete nastavit podrobnější vygenerované zásady z příkazového řádku pomocí programu zásad auditu (AuditPol.exe). Další informace o krocích pro povolení zápisu do protokolu zabezpečení Windows najdete v Zapisy událostí auditu 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í Windows najdete v tématu Event Viewer Overview. 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 Server 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 Windows určené pro správu souborů auditu, jako například jejich kopírování na různá sdílená umístění, 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ž Database Engine zapisuje do souboru, ostatní uživatelé Windows můžou soubor auditu číst, pokud mají oprávnění. Database Engine nemá výhradní zámek, který brání operacím čtení.
Vzhledem k tomu, že Database Engine má přístup k souboru, můžou SQL Server přihlášení s oprávněním CONTROL SERVER používat Database Engine pro přístup k souborům auditu. V SQL Server 2022 (16.x) a novějších verzích stačí oprávnění VIEW SERVER SECURITY AUDIT ke čtení souborů auditu pomocí fn_get_audit_file. Chcete-li zaznamenat libovolného uživatele, který čte soubor auditu, definujte audit na master.sys.fn_get_audit_file. Toto zaznamenává přihlášení s oprávněním CONTROL SERVER, která přistupovala k auditnímu souboru prostřednictvím SQL Server. Další informace o fn_get_audit_file oprávněních najdete v tématu sys.fn_get_audit_file.
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 Server, jako je například instance SQL Server Express, ke které mají přístup pouze správci auditu nebo čtenáři auditu. Pomocí samostatné instance databázového systému Database Engine pro vytváření sestav můžete aktivně zabránit neoprávněným uživatelům v získání přístupu 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í Windows nástroje BitLocker Drive Encryption nebo Windows Encrypting File System.
Další informace o záznamech auditu, které jsou zapsány do cíle, najdete v tématu SQL Server Záznamy auditu.
Přehled použití nástroje SQL Server Audit
K definování auditu můžete použít SQL Server Management Studio nebo Transact-SQL. Po vytvoření a povolení auditu cílový systém obdrží záznamy.
Protokoly událostí Windows můžete číst pomocí nástroje Event Viewer v Windows. Pro cíle souborů můžete ke čtení cílového souboru použít funkci Log File Viewer v SQL Server Management Studio nebo funkci fn_get_audit_file.
Obecný proces vytváření a používání auditu je následující.
- Vytvořte audit a definujte cíl.
- Vytvořte specifikaci auditu serveru nebo specifikaci auditu databáze, která odpovídá auditu. Povolte specifikaci auditu.
- Povolte audit.
- Události auditu si můžete přečíst pomocí prohlížeče souborů Windows Event Viewer, Log File Viewer nebo funkce
fn_get_audit_file.
Další informace najdete v tématu Vytvoření specifikace auditu serveru a auditu serveru a vytvoření specifikace auditování serveru a databáze.
Úvahy
V případě selhání při zahájení auditu se server nespustí. V takovém případě lze server spustit pomocí -f možnosti na příkazovém řádku.
Pokud selhání auditu způsobí, že se server vypne nebo se nespustí, protože ON_FAILURE = SHUTDOWN je určen pro audit, MSG_AUDIT_FORCED_SHUTDOWN událost se zapíše 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é auditováním spuštěním SQL Server v režimu jednoho uživatele pomocí příznaku -m. Pokud spustíte režim pro jednoho uživatele, snížíte úroveň všech auditů, u kterých je ON_FAILURE = SHUTDOWN zadáno ke spuštění v této relaci jako ON_FAILURE = CONTINUE. Při spuštění SQL Server příznakem -m se do protokolu chyb zapíše zpráva MSG_AUDIT_SHUTDOWN_BYPASSED.
Další informace o možnostech spuštění služby najdete v tématu Database Engine Možnosti spuštění služby.
Interní operace v Azure SQL Managed Instance
- V Azure SQL Database a Azure SQL Managed Instance jsou události iniciované
SQLDBControlPlaneFirstPartyAppAzure interní funkcí řídicí roviny Azure SQL Database. Události iniciovanéSQLDBControlPlaneFirstPartyAppjsou součástí interní synchronizační operace mezi modulem SQL a Azure Resource Manager. Tyto události jsou normální součástí správy prostředků a jsou vyžadovány pro správné znázornění a provoz prostředků v Azure.
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. Pokud chcete tuto situaci opravit, použijte ALTER DATABASE AUDIT SPECIFICATION příkaz k připojení osamocené specifikace auditu k existujícímu serverovému auditu. Nebo pomocí CREATE SERVER AUDIT příkazu 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 Server, která nepodporuje auditování SQL Server, například SQL Server Express, ale nezaznamená události auditu.
Zrcadlení databáze a auditování SQL Server
Databáze, která má definovanou specifikaci auditu databáze a která používá zrcadlení databáze, zahrnuje 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-from-source-server-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.
Pro Windows cíle protokolu událostí musí zásady zabezpečení v počítači, kde je umístěn mirror server, umožňovat přístup účtu služby pro přístup k protokolu událostí zabezpečení nebo protokolu aplikací.
Aktivita správce auditu
Č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.
Dovolení
Každá funkce a příkaz pro SQL Server Audit má požadavky na jednotlivá oprávnění.
K vytvoření, změně nebo vyřazení auditu serveru nebo specifikace auditu serveru vyžadují hlavní objekty serveru oprávnění ALTER ANY SERVER AUDIT nebo CONTROL SERVER. K vytvoření, změně nebo zrušení specifikace auditu databáze vyžadují databázoví principálové oprávnění ALTER ANY DATABASE AUDIT nebo oprávnění ALTER či CONTROL k databázi. Kromě toho musí mít uživatelé oprávnění pro připojení k databázi, nebo ALTER ANY SERVER AUDIT, nebo CONTROL SERVER oprávnění.
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í vyloučí schopnost zobrazit zobrazení katalogu, i když má subjekt ALTER ANY SERVER AUDIT nebo ALTER ANY DATABASE AUDIT oprávnění.
Pokud chcete číst data auditu pomocí fn_get_audit_file, SQL Server 2019 (15.x) a starších verzí vyžadují oprávnění CONTROL SERVER na serveru, zatímco SQL Server 2022 (16.x) a novější verze vyžadují oprávnění VIEW SERVER SECURITY AUDIT. Další informace najdete v tématu sys.fn_get_audit_file.
Další informace o tom, jak udělit práva a oprávnění, naleznete v tématu GRANT.
Opatrnost
Objekty zabezpečení v roli správce systému můžou manipulovat s libovolnou komponentou auditu a objekty zabezpečení v db_owner roli mohou manipulovat se specifikacemi auditu v databázi. SQL Server Audit 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 důvěryhodné pouze jako objekty zabezpečení v roli správce systému nebo db_owner.
Vytváření a správa auditů pomocí Transact-SQL
K implementaci všech aspektů SQL Server Audit můžete použít příkazy DDL, zobrazení dynamické správy a funkce a zobrazení katalogu.
Příkazy jazyka DDL (Data Definition Language)
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 objektu. |
| ALTER DATABASE AUDIT SPECIFIKACE | Změní objekt specifikace auditu databáze pomocí funkce SQL Server Audit. |
| ZMĚNIT SERVER AUDIT | Změní objekt auditu serveru pomocí funkce SQL Server Audit. |
| ZMĚNIT SPECIFIKACI AUDITU SERVERU | Změní objekt specifikace auditu serveru pomocí funkce SQL Server Audit. |
| VYTVOŘTE SPECIFIKACI AUDITU DATABÁZE | Vytvoří objekt specifikace auditu databáze pomocí funkce auditování SQL Server. |
| VYTVOŘIT AUDIT SERVERU | Vytvoří objekt auditu serveru pomocí SQL Server Audit. |
| VYTVOŘIT SPECIFIKACI AUDITU SERVERU | Vytvoří objekt specifikace auditu serveru pomocí funkce SQL Server Audit. |
| ODSTRANIT SPECIFIKACI AUDITU DATABÁZE | Zahodí objekt specifikace auditu databáze pomocí funkce SQL Server Audit. |
| ODEBRÁNÍ AUDITU SERVERU | Zahodí objekt auditování serveru pomocí funkce SQL Server Audit. |
| SPECIFIKACE AUDITOVÁNÍ SERVERU | Zahodí objekt specifikace auditu serveru pomocí funkce SQL Server Audit. |
Dynamická zobrazení a funkce
V následující tabulce jsou uvedena dynamická zobrazení a funkce, které můžete použít pro auditování SQL Server.
| Dynamická zobrazení a funkce | Popis |
|---|---|
| sys.dm_audit_actions | Vrátí řádek pro každou akci auditu, kterou je možné hlásit v protokolu auditování, a všechny skupiny akcí auditu, které je možné nakonfigurovat jako součást SQL Server Audit. |
| 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 Server.
| Zobrazení katalogu | Popis |
|---|---|
| Specifikace auditu databáze v systému | Obsahuje informace o specifikacích auditu databáze v SQL Server auditu v instanci serveru. |
| sys.database_audit_specification_details | Obsahuje informace o specifikacích auditu databáze v auditu SQL Server na instanci serveru pro všechny databáze. |
| sys.server_audits | Obsahuje jeden řádek pro každý SQL Server audit v instanci serveru. |
| specifikace auditu serveru sys | Obsahuje informace o specifikacích auditu v auditu SQL Server na instanci serveru. |
| sys.server_audit_specifications_details | Obsahuje informace o podrobnostech specifikace auditu serveru (akcí) v auditu SQL Serveru na instanci serveru. |
| sys.server_file_audits | Obsahuje rozšířené informace o typu auditování souboru v auditu serveru SQL Server na instanci tohoto serveru. |