Sdílet prostřednictvím


Záznamy auditu SQL Serveru

platí pro:SQL Server

Funkce Audit SQL Serveru umožňuje auditovat skupiny událostí a událostí na úrovni serveru a databáze. Další informace naleznete v tématu Sql Server Audit (databázový stroj). SQL Server.

Audity se skládají z nulových nebo více položek akcí auditu, které se zaznamenávají do cíle auditu. Cílem auditu může být binární soubor, protokol událostí aplikace systému Windows nebo protokol událostí zabezpečení systému Windows. Záznamy odeslané do cíle mohou obsahovat prvky popsané v následující tabulce:

Název sloupce Description Typ Vždy k dispozici
event_time Datum a čas, kdy se aktivuje auditovatelná akce. datetime2 Ano
sequence_number Sleduje posloupnost záznamů v rámci jednoho záznamu auditu, který byl příliš velký, aby se vešl do vyrovnávací paměti zápisu pro audity. Int Ano
action_id ID akce

Tip: Chcete-li použít action_id jako predikát , musí být převeden z řetězce znaků na číselnou hodnotu. Další informace najdete v tématu Filtrování auditu SQL Serveru na action_id / class_type predikát.
varchar(4) Ano
uspěl Určuje, jestli akce, která aktivovala událost, byla úspěšná. U všech událostí kromě událostí přihlášení to jenom hlásí, jestli byla kontrola oprávnění úspěšná nebo neúspěšná, ne operace.
- 1 = Úspěch
- 0 = selhání
bit Ano
permission_bitmask V některých akcích se jedná o oprávnění udělená, zamítnutá nebo odvolaná. varbinary(16) Ne
is_column_permission Příznak označující, jestli se jedná o oprávnění na úrovni sloupce. Vrátí hodnotu 0, když permission_bitmask = 0.
- 1 = Pravda
- 0 = Nepravda
bit Ne
session_id ID relace, na které došlo k události. smallint Ano
server_principal_id ID přihlašovacího kontextu, ve které se akce provádí. Int Ano
database_principal_id ID kontextu uživatele databáze, ve které se akce provádí. Vrátí hodnotu 0, pokud se to nepoužije. Například operace serveru. Int Ne
target_server_principal_id Objekt zabezpečení serveru, na který se provádí operace GRANT/DENY/REVOKE. Vrátí hodnotu 0, pokud není k dispozici. Int Ano
target_database_principal_id Objekt zabezpečení databáze, na které se provádí operace GRANT/DENY/REVOKE. Vrátí hodnotu 0, pokud není k dispozici. Int Ne
object_id ID entity, na které došlo k auditu. To zahrnuje:
serverové objekty
databáze
databázové objekty
Objekty schématu
Vrátí hodnotu 0, pokud je entita samotným serverem nebo pokud se audit neprovádí na úrovni objektu. Například ověřování.
Int Ne
class_type Typ auditovatelné entity, u které probíhá audit. varchar(2) Ano
session_server_principal_name Objekt zabezpečení serveru pro relaci. sysname Ano
server_principal_name Aktuální přihlášení. sysname Ano
server_principal_sid Aktuální identifikátor SID přihlášení. varbinary(85) Ano
database_principal_name Aktuální uživatel. sysname Ne
target_server_principal_name Cílové přihlášení akce. Vrátí hodnotu NULL, pokud není k dispozici. sysname Ne
target_server_principal_sid IDENTIFIKÁTOR SID cílového přihlášení. Vrátí hodnotu NULL, pokud není k dispozici. varbinary(85) Ne
target_database_principal_name Cílí na uživatele akce. Vrátí hodnotu NULL, pokud není k dispozici. sysname Ne
server_instance_name Název instance serveru, ve které došlo k auditu. Používá se standardní formát serveru\instance. sysname Ano
database_name Kontext databáze, ve kterém došlo k akci. Nullable. Vrátí hodnotu NULL pro audity, ke kterým dochází na úrovni serveru. sysname Ne
schema_name Kontext schématu, ve kterém došlo k akci. sysname Ne
object_name Název entity, na které došlo k auditu. To zahrnuje:
serverové objekty
databáze
databázové objekty
Objekty schématu
Nullable. Vrátí hodnotu NULL, pokud je entita sama o sobě nebo pokud se audit neprovádí na úrovni objektu. Například ověřování.
sysname Ne
výrok Příkaz TSQL, pokud existuje. Vrátí hodnotu NULL, pokud není k dispozici. nvarchar(4000) Ne
additional_information Jedinečné informace, které platí pouze pro jednu událost, se vrátí jako XML. Tento druh informací obsahuje několik auditovatelných akcí.

Jedna úroveň zásobníku TSQL se zobrazí ve formátu XML pro akce, které mají přiřazený zásobník TSQL. Formát XML bude:
<tsql_stack><frame nest_level = '%u' database_name = '%.*s' schema_name = '%.*s' object_name = '%.*s' /></tsql_stack>
Nest_level rámce označuje aktuální úroveň vnoření rámce. Název modulu je reprezentován ve třech částech formátu (database_name, schema_name a object_name). Název modulu bude analyzován tak, aby řídicí neplatné znaky XML jako '\<', '>', '/', '_x'. Budou utekli jako _xHHHH\_. HHHH znamená čtyřmístný šestnáctkový kód UCS-2 pro znak.
Nullable. Vrátí hodnotu NULL, pokud událost neobsahuje žádné další informace.
nvarchar(4000) Ne
file_name Cesta a název souboru protokolu auditu, ze kterého záznam pochází. varchar(260) Ano
audit_file_offset Platí pro: Pouze SQL Server

Posun vyrovnávací paměti v souboru, který obsahuje záznam auditu.
bigint Ne
user_defined_event_id Platí pro: SQL Server 2012 (11.x) a novější, Azure SQL Database a SQL Managed Instance

ID události definované uživatelem předané jako argument sp_audit_writeNULL pro systémové události (výchozí) a nenulové pro uživatelem definovanou událost. Další informace najdete v tématu sp_audit_write (Transact-SQL).
smallint Ne
user_defined_information Platí pro: SQL Server 2012 (11.x) a novější, Azure SQL Database a SQL Managed Instance

Používá se k zaznamenání dalších informací, které chce uživatel zaznamenat v protokolu auditu pomocí sp_audit_write uložené procedury.
nvarchar(4000) Ne
audit_schema_version Vždy 1 Int Ano
sequence_group_id Platí pro: Pouze SQL Server

Jedinečný identifikátor
varbinary(85) Ne
transaction_id Platí pro: Pouze SQL Server (od verze 2016)

Jedinečný identifikátor pro identifikaci více událostí auditu v jedné transakci
bigint Ne
client_ip Platí pro: Azure SQL Database + SQL Server (od roku 2017)

Zdrojová IP adresa klientské aplikace
nvarchar(128) Ne
application_name Platí pro: Azure SQL Database + SQL Server (od roku 2017)

Název klientské aplikace, která spustila příkaz, který způsobil událost auditu
nvarchar(128) Ne
duration_milliseconds Platí pro: Azure SQL Database a SQL Managed Instance

Doba trvání provádění dotazů v milisekundách
bigint Ne
response_rows Platí pro: Azure SQL Database a SQL Managed Instance

Počet řádků vrácených v sadě výsledků
bigint Ne
affected_rows Platí pro: Pouze Azure SQL Database

Počet řádků ovlivněných příkazem, které byl proveden.
bigint Ne
connection_id Platí pro: Azure SQL Database a SQL Managed Instance

ID připojení na serveru
Identifikátor guid Ne
data_sensitivity_information Platí pro: Pouze Azure SQL Database

Typy informací a popisky citlivosti vrácené auditovaným dotazem na základě klasifikovaných sloupců v databázi. Další informace o zjišťování a klasifikaci dat Azure SQL Database
nvarchar(4000) Ne
host_name Název hostitele připojení klienta nvarchar(128) Ne
session_context Informace o kontextu relace pro připojení nvarchar(4000) Ne
client_tls_version Platí pro: SQL Server 2022 a novější

Číslo verze protokolu TLS používané připojením klienta
Int Ne
client_tls_version_name Platí pro: SQL Server 2022 a novější

Název verze protokolu TLS používaný připojením klienta
nvarchar(128) Ne
database_transaction_id Identifikátor databázové transakce bigint Ne
ledger_start_sequence_number Platí pro: SQL Server 2022 a novější

Pořadové číslo hlavní knihy pro operace hlavní knihy
bigint Ne
external_policy_permissions_checked Oprávnění externích zásad, která byla zkontrolována během operace nvarchar(4000) Ne

Poznámky

Některé akce nenaplní hodnotu sloupce, protože nemusí být pro akci použitelné.

Sql Server Audit ukládá 4 000 znaků dat pro pole znaků v záznamu auditu. Když additional_information a hodnoty příkazů vrácené z auditovatelné akce vrátí více než 4 000 znaků, použije se sequence_number sloupec k zápisu více záznamů do sestavy auditu pro jednu akci auditu, která tato data zaznamená. Proces je následující:

  • Sloupec příkazu je rozdělený na 4 000 znaků.

  • Audit SQL Serveru zapíše jako první řádek záznamu auditu s částečnými daty. Všechna ostatní pole se v každém řádku duplikují.

  • Hodnota sequence_number se zvýší.

  • Tento proces se opakuje, dokud se nezaznamenávají všechna data.

Data můžete propojit tak, že řádky přečtete postupně pomocí hodnoty sequence_number a event_Time, action_id a session_id sloupců k identifikaci akce.