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.
Platí pro:SQL Server
Spravovaná instance Azure SQL
Vytvoří objekt auditu serveru pomocí auditu SQL Serveru. Další informace naleznete v tématu Sql Server Audit (databázový stroj).
Syntaxe
CREATE SERVER AUDIT audit_name
{
TO { [ FILE (<file_options> [ , ...n ] ) ] | APPLICATION_LOG | SECURITY_LOG | URL | EXTERNAL_MONITOR }
[ WITH ( <audit_options> [ , ...n ] ) ]
[ WHERE <predicate_expression> ]
}
[ ; ]
<file_options>::=
{
FILEPATH = 'os_file_path'
[ , MAXSIZE = { max_size { MB | GB | TB } | UNLIMITED } ]
[ , { MAX_ROLLOVER_FILES = { integer | UNLIMITED } } | { MAX_FILES = integer } ]
[ , RESERVE_DISK_SPACE = { ON | OFF } ]
}
<audit_options> ::=
{
[ QUEUE_DELAY = integer ]
[ , ON_FAILURE = { CONTINUE | SHUTDOWN | FAIL_OPERATION } ]
[ , AUDIT_GUID = uniqueidentifier ]
[ , OPERATOR_AUDIT = { ON | OFF } ]
}
<predicate_expression> ::=
{
[ NOT ] <predicate_factor>
[ { AND | OR } [ NOT ] { <predicate_factor> } ]
[ , ...n ]
}
<predicate_factor>::=
event_field_name { = | < > | != | > | >= | < | <= | LIKE } { number | 'string' }
Argumenty
TO { FILE | APPLICATION_LOG | SECURITY_LOG | Adresa URL | EXTERNAL_MONITOR }
Určuje umístění cíle auditu. Možnosti jsou binární soubor, protokol aplikace systému Windows nebo protokol zabezpečení systému Windows. SQL Server nemůže zapisovat do protokolu zabezpečení systému Windows bez konfigurace dalších nastavení ve Windows. Další informace naleznete v tématu Zápis událostí auditu SQL Serveru do protokolu zabezpečení.
Cíl URL
není pro SQL Server podporovaný.
Důležité
Ve službě Azure SQL Managed Instance funguje SQL Audit na úrovni serveru. Umístění mohou být URL
pouze nebo EXTERNAL_MONITOR
.
FILEPATH = 'os_file_path'
Cesta protokolu auditu. Název souboru se vygeneruje na základě názvu auditu a identifikátoru GUID auditu. Pokud je tato cesta neplatná, audit se nevytvořil.
FILEPATH
Cíl se nepodporuje pro spravovanou instanci Azure SQL. Místo toho musíte použít PATH
.
MAXSIZE = max_size
Určuje maximální velikost, na kterou může soubor auditu růst. Hodnota max_size musí být celé číslo následované MB, GB, TB nebo UNLIMITED
. Minimální velikost, kterou můžete zadat pro max_size , je 2 MB a maximum je 2 147 483 647 TB. Po UNLIMITED
zadání se soubor rozrůstá, dokud nebude disk plný. (0
označuje UNLIMITED
také .) Zadání hodnoty nižší než 2 MB vyvolá chybu MSG_MAXSIZE_TOO_SMALL
. Výchozí hodnota je UNLIMITED
.
MAXSIZE
Cíl se nepodporuje pro spravovanou instanci Azure SQL.
MAX_ROLLOVER_FILES = { celé číslo | UNLIMITED }
Určuje maximální počet souborů, které se mají zachovat v systému souborů kromě aktuálního souboru. Hodnota MAX_ROLLOVER_FILES
musí být celé číslo nebo UNLIMITED
. Výchozí hodnota je UNLIMITED
. Tento parametr se vyhodnocuje vždy, když se audit restartuje (což se může stát, když se instance databázového stroje restartuje nebo když je audit vypnutý a pak znovu) nebo když je potřeba nový soubor, protože je MAXSIZE
dosažen. Když MAX_ROLLOVER_FILES
se vyhodnotí, pokud počet souborů překročí MAX_ROLLOVER_FILES
nastavení, nejstarší soubor se odstraní. V důsledku toho se při nastavení MAX_ROLLOVER_FILES
0 vytvoří nový soubor při MAX_ROLLOVER_FILES
každém vyhodnocení nastavení. Při vyhodnocování nastavení se automaticky odstraní MAX_ROLLOVER_FILES
jenom jeden soubor, takže při zmenšení hodnoty MAX_ROLLOVER_FILES
se počet souborů nezmenší, pokud se staré soubory neodstraní ručně. Maximální počet souborů, které lze zadat, je 2 147 483 647.
MAX_ROLLOVER_FILES
azure SQL Managed Instance se nepodporuje.
MAX_FILES = celé číslo
Určuje maximální počet souborů auditu, které lze vytvořit. Při dosažení limitu se nepřevádí na první soubor. Po dosažení limitu MAX_FILES
jakákoli akce, která způsobí vygenerování více událostí auditu, selže s chybou.
RESERVE_DISK_SPACE = { ON | VYPNUTO }
Tato možnost předem přiděluje soubor na disku k hodnotě MAXSIZE
. Platí pouze v případě, že MAXSIZE
se nerovná UNLIMITED
. Výchozí hodnota je OFF
.
RESERVE_DISK_SPACE
Cíl se nepodporuje pro spravovanou instanci Azure SQL.
QUEUE_DELAY = celé číslo
Určuje čas v milisekundách, který může uplynout před vynuceným zpracováním akcí auditu. Hodnota 0 označuje synchronní doručení. Minimální nastavená hodnota zpoždění dotazu je 1000
(1 sekunda), což je výchozí hodnota. Maximum je 2147483647
(2 147 483,647 sekund nebo 24 dní, 20 hodin, 31 minut, 23,647 sekund). Zadání neplatného čísla vyvolá MSG_INVALID_QUEUE_DELAY
chybu.
ON_FAILURE = { CONTINUE | VYPNUTÍ | FAIL_OPERATION }
Určuje, jestli má instance zápisu do cíle selhat, pokračovat nebo zastavit SQL Server, pokud cíl nemůže zapisovat do protokolu auditu. Výchozí hodnota je CONTINUE
.
POKRAČOVAT
Operace SQL Serveru budou pokračovat. Záznamy auditu se nezachovají. Audit se nadále pokouší protokolovat události a pokračuje v případě, že je vyřešena podmínka selhání. Výběrem možnosti pokračovat můžete povolit neauditovanou aktivitu, která by mohla narušit vaše zásady zabezpečení. Tuto možnost použijte, pokud je pokračování provozu databázového stroje důležitější než údržba kompletního auditu.
VYPNUTÍ
Vynutí, aby se instance SQL Serveru vypnula, pokud SQL Server z nějakého důvodu nedokáže zapisovat data do cíle auditu. Přihlašovací jméno, které CREATE SERVER AUDIT
příkaz spouští, musí mít SHUTDOWN
oprávnění v rámci SQL Serveru. Chování vypnutí přetrvává i v případě SHUTDOWN
, že se oprávnění později odvolá z prováděcího přihlášení. Pokud uživatel toto oprávnění nemá, příkaz selže a audit se nevytvořil. Tuto možnost použijte, pokud by selhání auditu mohlo ohrozit zabezpečení nebo integritu systému. Další informace naleznete v tématu VYPNUTÍ.
FAIL_OPERATION
Databázové akce selžou, pokud způsobují auditované události. Akce, které nezpůsobí, že auditované události můžou pokračovat, ale nedochází k žádným auditovaným událostem. Audit se nadále pokouší protokolovat události a pokračuje v případě, že je vyřešena podmínka selhání. Tuto možnost použijte při údržbě kompletního auditu důležitější než úplný přístup k databázovému stroji.
AUDIT_GUID = uniqueidentifier
Aby bylo možné podporovat scénáře, jako je zrcadlení databáze nebo databáze, které se účastní skupiny dostupnosti AlwaysOn, potřebuje audit konkrétní identifikátor GUID, který odpovídá identifikátoru GUID nalezeného v zrcadlené databázi. Identifikátor GUID nelze po vytvoření auditu upravit.
OPERATOR_AUDIT
Platí pro: Pouze spravovaná instance Azure SQL
Označuje, jestli auditování zaznamenává operace techniků podpory Microsoftu, když potřebují přístup k vašemu serveru během žádosti o podporu.
predicate_expression
Určuje predikát výraz použitý k určení, jestli má být událost zpracována nebo ne. Predikát výrazy jsou omezené na délku 3 000 znaků, což omezuje řetězcové argumenty.
event_field_name
Název pole události, které identifikuje zdroj predikátu. Pole auditu jsou popsaná v sys.fn_get_audit_file. Všechna pole mohou být filtrována s výjimkou file_name
, audit_file_offset
a event_time
.
Poznámka:
action_id
Zatímco pole class_type
jsou typu varchar in sys.fn_get_audit_file
, lze je použít pouze s čísly, pokud jsou predikát zdrojem pro filtrování. Pokud chcete získat seznam hodnot, se kterými se má použít class_type
, spusťte následující dotaz:
SELECT spt.[name], spt.[number] FROM [master].[dbo].[spt_values] spt WHERE spt.[type] = N'EOD' ORDER BY spt.[name];
číslo
Libovolný číselný typ včetně desetinných míst. Omezení jsou nedostatek dostupné fyzické paměti nebo čísla, které je příliš velké, aby bylo reprezentováno jako 64bitové celé číslo.
Řetězec
Buď řetězec ANSI nebo Unicode vyžadovaný porovnáním predikátu. Pro porovnávané funkce predikátu se neprovádí žádný implicitní převod typu řetězce. Předání nesprávného typu způsobí chybu.
Poznámky
Když se vytvoří audit serveru, je v zakázaném stavu.
Příkaz CREATE SERVER AUDIT
je v oboru transakce. Pokud je transakce vrácena zpět, příkaz se také vrátí zpět.
Povolení
K vytvoření, změně nebo vyřazení auditu serveru vyžadují ALTER ANY SERVER AUDIT
objekty zabezpečení nebo CONTROL SERVER
oprávnění.
Když ukládáte informace o auditu do souboru, abyste zabránili manipulaci, omezte přístup k umístění souboru.
Příklady
A. Vytvoření auditu serveru s cílem souboru
Následující příklad vytvoří audit serveru volaný HIPAA_Audit
s binárním souborem jako cílem a žádné možnosti.
CREATE SERVER AUDIT HIPAA_Audit TO FILE (
FILEPATH = '\\SQLPROD_1\Audit\'
);
B. Vytvoření auditu serveru s cílem protokolu aplikací systému Windows s možnostmi
Následující příklad vytvoří audit serveru volaný HIPAA_Audit
s cílovou sadou pro protokol aplikací systému Windows. Fronta se zapíše každou sekundu a vypne modul SQL Serveru při selhání.
CREATE SERVER AUDIT HIPAA_Audit TO APPLICATION_LOG
WITH (QUEUE_DELAY = 1000, ON_FAILURE = SHUTDOWN);
C. Vytvoření auditu serveru obsahující klauzuli WHERE
Následující příklad vytvoří databázi, schéma a dvě tabulky pro příklad. Pojmenovaná DataSchema.SensitiveData
tabulka obsahuje důvěrná data a přístup k tabulce musí být zaznamenán v auditu. Pojmenovaná DataSchema.GeneralData
tabulka neobsahuje důvěrná data. Specifikace auditu databáze audituje přístup ke všem objektům ve schématu DataSchema
. Audit serveru se vytvoří s klauzulí WHERE, která omezuje audit serveru pouze na SensitiveData
tabulku. Audit serveru předpokládá, že složka auditu existuje na adrese C:\SQLAudit
.
CREATE DATABASE TestDB;
GO
USE TestDB;
GO
CREATE SCHEMA DataSchema;
GO
CREATE TABLE DataSchema.GeneralData
(
ID INT PRIMARY KEY,
DataField VARCHAR (50) NOT NULL
);
GO
CREATE TABLE DataSchema.SensitiveData
(
ID INT PRIMARY KEY,
DataField VARCHAR (50) NOT NULL
);
GO
-- Create the server audit in the master database
USE master;
GO
CREATE SERVER AUDIT AuditDataAccess TO FILE (FILEPATH = 'C:\SQLAudit\')
WHERE object_name = 'SensitiveData';
GO
ALTER SERVER AUDIT AuditDataAccess WITH (STATE = ON);
GO
-- Create the database audit specification in the TestDB database
USE TestDB;
GO
CREATE DATABASE AUDIT SPECIFICATION [FilterForSensitiveData]
FOR SERVER AUDIT [AuditDataAccess]
ADD (SELECT ON SCHEMA::[DataSchema] BY [public])
WITH(STATE = ON);
GO
-- Trigger the audit event by selecting from tables
SELECT ID,
DataField
FROM DataSchema.GeneralData;
SELECT ID,
DataField
FROM DataSchema.SensitiveData;
GO
-- Check the audit for the filtered content
SELECT *
FROM fn_get_audit_file('C:\SQLAudit\AuditDataAccess_*.sqlaudit', DEFAULT, DEFAULT);
GO
referenční informace k Transact-SQL
-
ALTER SERVER AUDIT (Transact-SQL) -
DROP SERVER AUDIT (Transact-SQL) -
CREATE SERVER AUDIT SPECIFICATION (Transact-SQL) -
ALTER SERVER AUDIT SPECIFICATION (Transact-SQL) -
DROP SERVER AUDIT SPECIFICATION (Transact-SQL) - CREATE DATABASE AUDIT SPECIFICATION (Transact-SQL)
-
ALTER DATABASE AUDIT SPECIFICATION (Transact-SQL) -
DROP DATABASE AUDIT SPECIFICATION (Transact-SQL) - ZMĚNIT AUTORIZACI (Transact-SQL)
Související obsah
-
sys.fn_get_audit_file (Transact-SQL) - sys.server_audits (Transact-SQL)
- sys.server_file_audits (Transact-SQL)
-
sys.server_audit_specifications (Transact-SQL) - sys.server_audit_specification_details (Transact-SQL)
-
sys.database_audit_specifications (Transact-SQL) -
sys.database_audit_specification_details (Transact-SQL) - sys.dm_server_audit_status (Transact-SQL)
-
sys.dm_audit_actions (Transact-SQL) -
sys.dm_audit_class_type_map (Transact-SQL) - Vytvoření specifikace auditu serveru a auditu serveru