Sdílet prostřednictvím


VYTVOŘIT AUDIT SERVERU (Transact-SQL)

Platí pro:SQL ServerSpravovaná instance Azure SQL

Vytvoří objekt auditu serveru pomocí auditu SQL Serveru. Další informace naleznete v tématu Sql Server Audit (databázový stroj).

Transact-SQL konvence syntaxe

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 UNLIMITEDtaké .) 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_offseta 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)