Megosztás a következőn keresztül:


KISZOLGÁLÓ NAPLÓZÁSÁNAK LÉTREHOZÁSA (Transact-SQL)

A következőkre vonatkozik:SQL ServerFelügyelt Azure SQL-példány

Létrehoz egy kiszolgálónapló-objektumot az SQL Server Audit használatával. További információ: SQL Server Audit (Adatbázismotor).

Transact-SQL szintaxis konvenciók

Syntax

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' }

Arguments

audit_name

Az audit neve. Nem tartalmazhat szóközöket az SQL Server 2019 (15.x) és korábbi verzióiban.

TO { FILE | APPLICATION_LOG | SECURITY_LOG | URL| EXTERNAL_MONITOR }

Meghatározza a naplózási cél helyét. A beállítások a bináris fájlok, a Windows-alkalmazásnapló vagy a Windows biztonsági napló. Az SQL Server nem tud írni a Windows biztonsági naplójába anélkül, hogy további beállításokat konfigurál a Windowsban. További információ: SQL Server auditesemények írása a biztonsági naplóba.

A URL cél nem támogatott az SQL Server esetében.

Important

A felügyelt Azure SQL-példányban az SQL Audit kiszolgálószinten működik. A helyek csak lehetnek URL vagy EXTERNAL_MONITOR.

FILEPATH = "os_file_path"

A napló elérési útja. A fájlnév a naplózás neve és a naplózás GUID azonosítója alapján jön létre. Ha ez az elérési út érvénytelen, a naplózás nem jön létre.

FILEPATH a cél nem támogatott a felügyelt Azure SQL-példány esetében. Ehelyett használnia PATH kell.

MAXSIZE = max_size

Megadja a maximális méretet, amelyre a naplózási fájl növekedhet. A max_size értéknek egész számnak kell lennie, amelyet MB, GB, TB vagy UNLIMITED. A max_size minimális mérete 2 MB, a maximális érték pedig 2 147 483 647 TB. Ha UNLIMITED meg van adva, a fájl addig nő, amíg meg nem telik a lemez. (0 azt is jelzi, UNLIMITEDhogy .) Ha 2 MB-nál kisebb értéket ad meg, akkor a hiba MSG_MAXSIZE_TOO_SMALLjelentkezik. Az alapértelmezett érték a UNLIMITED.

MAXSIZE a cél nem támogatott a felügyelt Azure SQL-példány esetében.

MAX_ROLLOVER_FILES = { egész szám | KORLÁTLAN }

Megadja a fájlrendszerben az aktuális fájlon kívül megtartandó fájlok maximális számát. Az MAX_ROLLOVER_FILES értéknek egész számnak vagy UNLIMITED. Az alapértelmezett érték a UNLIMITED. Ezt a paramétert akkor értékeli ki a rendszer, ha az audit újraindul (ami akkor fordulhat elő, ha az adatbázismotor példánya újraindul, vagy ha a naplózás ki van kapcsolva, majd újra be van kapcsolva), vagy amikor új fájlra van szükség, mert az MAXSIZE el lett érve. Ha MAX_ROLLOVER_FILES a kiértékelés során a fájlok száma meghaladja a MAX_ROLLOVER_FILES beállítást, a rendszer törli a legrégebbi fájlt. Ennek eredményeképpen, ha a beállítás MAX_ROLLOVER_FILES értéke 0, a rendszer minden alkalommal létrehoz egy új fájlt, amikor kiértékeli a MAX_ROLLOVER_FILES beállítást. A beállítás kiértékelésekor a rendszer csak egy fájlt töröl MAX_ROLLOVER_FILES automatikusan, így ha az érték MAX_ROLLOVER_FILES csökken, a fájlok száma csak akkor csökken, ha a régi fájlokat manuálisan törlik. A megadható fájlok maximális száma 2 147 483 647.

MAX_ROLLOVER_FILES az Azure SQL Managed Instance esetében nem támogatott.

MAX_FILES = egész szám

Meghatározza a létrehozható auditfájlok maximális számát. A korlát elérésekor nem lép át az első fájlra. Ha eléri a MAX_FILES korlátot, minden olyan művelet, amely több naplózási eseményt okoz, hibaüzenettel meghiúsul.

RESERVE_DISK_SPACE = { ON | KI }

Ez a beállítás előre áthelyezi a lemezen lévő fájlt az MAXSIZE értékre. Csak akkor érvényes, ha MAXSIZE nem egyenlő.UNLIMITED Az alapértelmezett érték a OFF.

RESERVE_DISK_SPACE a cél nem támogatott a felügyelt Azure SQL-példány esetében.

QUEUE_DELAY = egész szám

Ezredmásodpercben határozza meg, hogy mennyi idő telik el a naplózási műveletek feldolgozásának kényszerítése előtt. A 0 érték szinkron kézbesítést jelez. A lekérdezések minimális késleltetési 1000 értéke (1 másodperc), amely az alapértelmezett érték. A maximális érték 2147483647 (2 147 483,647 másodperc vagy 24 nap, 20 óra, 31 perc, 23,647 másodperc). Ha érvénytelen számot ad meg, az MSG_INVALID_QUEUE_DELAY hibát okoz.

ON_FAILURE = { FOLYTATÁS | LEÁLLÍTÁS | FAIL_OPERATION }

Azt jelzi, hogy a célnak írt példánynak sikertelennek kell-e lennie, folytatnia vagy le kell állítania az SQL Servert, ha a cél nem tud írni a naplóba. Az alapértelmezett érték a CONTINUE.

CONTINUE

Az SQL Server-műveletek folytatódnak. A naplórekordok nem maradnak meg. A naplózás továbbra is megpróbálja naplózni az eseményeket, és folytatódik, ha a hibafeltétel megoldódott. A folytatási lehetőség kiválasztásával engedélyezhető a nem auditált tevékenység, ami megsértheti a biztonsági szabályzatokat. Használja ezt a lehetőséget, ha az adatbázismotor működésének folytatása fontosabb, mint a teljes naplózás fenntartása.

SHUTDOWN

Kényszeríti az SQL Server-példány leállítását, ha az SQL Server bármilyen okból nem tud adatokat írni a naplózási célba. Az utasítást CREATE SERVER AUDIT végrehajtó bejelentkezésnek rendelkeznie kell az SHUTDOWN SQL Server engedélyével. A leállítási viselkedés akkor is megmarad, ha az SHUTDOWN engedélyt később visszavonják a végrehajtó bejelentkezésből. Ha a felhasználó nem rendelkezik ezzel az engedéllyel, az utasítás meghiúsul, és a naplózás nem jön létre. Akkor használja ezt a lehetőséget, ha egy naplózási hiba veszélyeztetheti a rendszer biztonságát vagy integritását. További információ: SHUTDOWN.

FAIL_OPERATION

Az adatbázisműveletek sikertelenek, ha naplózott eseményeket okoznak. A naplózott eseményeket nem okozó műveletek folytatódhatnak, de nem fordulhatnak elő naplózási események. A naplózás továbbra is megpróbálja naplózni az eseményeket, és folytatódik, ha a hibafeltétel megoldódott. Ezt a lehetőséget akkor használhatja, ha a teljes naplózás fenntartása fontosabb, mint az adatbázismotor teljes hozzáférése.

AUDIT_GUID = egyedi azonosító

Az olyan forgatókönyvek támogatásához, mint az adatbázis-tükrözés vagy az Always On rendelkezésre állási csoportban részt vevő adatbázisok, a naplózáshoz egy adott GUID szükséges, amely megfelel a tükrözött adatbázisban található GUID-nak. A GUID nem módosítható a naplózás létrehozása után.

OPERATOR_AUDIT

A következőkre vonatkozik: Csak felügyelt Azure SQL-példány.

Jelzi, hogy a naplózás rögzíti-e a Microsoft támogatási mérnökeinek műveleteit, amikor egy támogatási kérés során hozzá kell férniük a kiszolgálóhoz.

predicate_expression

Megadja azt a predikátumkifejezést, amely meghatározza, hogy egy eseményt fel kell-e dolgozni vagy sem. A predikátumkifejezések legfeljebb 3000 karakter hosszúságúak, ami korlátozza a sztringargumentumokat.

event_field_name

A predikátum forrását azonosító eseménymező neve. A naplózási mezőket a sys.fn_get_audit_file ismerteti. Az összes mező szűrhető, kivéve file_name, audit_file_offsetés event_time.

Note

Bár a mezők és action_id a class_type mezők varcharsys.fn_get_audit_filetípusúak, csak akkor használhatók számokkal, ha azok predikátumként szolgálnak a szűréshez. A használni class_typekívánt értékek listájának lekéréséhez hajtsa végre a következő lekérdezést:

SELECT spt.[name], spt.[number]
FROM   [master].[dbo].[spt_values] spt
WHERE spt.[type] = N'EOD'
ORDER BY spt.[name];

number

Bármilyen numerikus típus, beleértve a decimálist is. A korlátozás a rendelkezésre álló fizikai memória hiánya, vagy egy olyan szám, amely túl nagy ahhoz, hogy 64 bites egész számként jelenjen meg.

'string'

A predikátum összehasonlítása egy ANSI- vagy Unicode-sztringet igényel. A predikátum-összehasonlító függvényekhez nem történik implicit sztringtípus-átalakítás. Ha nem a megfelelő típust adja át, az hibát eredményez.

Remarks

A kiszolgálói naplózás létrehozásakor az le van tiltva.

Az CREATE SERVER AUDIT utasítás egy tranzakció hatókörébe tartozik. Ha a tranzakciót visszavonják, akkor a nyilatkozatot is visszavonják.

Permissions

Kiszolgálói naplózás létrehozásához, módosításához vagy elvetéséhez a tagoknak szükségük van az ALTER ANY SERVER AUDIT engedélyre vagy az engedélyre CONTROL SERVER .

Ha naplóadatokat ment egy fájlba, a módosítás megakadályozása érdekében korlátozza a fájl helyéhez való hozzáférést.

Examples

A. Kiszolgálói naplózás létrehozása fájlcéllal

Az alábbi példa létrehoz egy bináris fájllal meghívott HIPAA_Audit kiszolgálónaplót célként, és nincs lehetőség.

CREATE SERVER AUDIT HIPAA_Audit TO FILE (
    FILEPATH = '\\SQLPROD_1\Audit\'
);

B. Kiszolgálói naplózás létrehozása Windows-alkalmazásnapló-tárolóval a beállításokkal

Az alábbi példa létrehoz egy kiszolgálónaplót, amely a Windows-alkalmazásnapló célkészletével van meghívva HIPAA_Audit . Az üzenetsor minden másodpercben meg van írva, és leállítja az SQL Server-motort.

CREATE SERVER AUDIT HIPAA_Audit TO APPLICATION_LOG
WITH (QUEUE_DELAY = 1000, ON_FAILURE = SHUTDOWN);

C. WHERE záradékot tartalmazó kiszolgálói audit létrehozása

Az alábbi példa létrehoz egy adatbázist, sémát és két táblát a példához. A névvel ellátott DataSchema.SensitiveData tábla bizalmas adatokat tartalmaz, és a táblához való hozzáférést rögzíteni kell a naplózásban. A névvel ellátott DataSchema.GeneralData tábla nem tartalmaz bizalmas adatokat. Az adatbázis naplózási specifikációja a séma összes objektumához DataSchema való hozzáférést naplózi. A kiszolgálói naplózás egy WHERE záradékkal jön létre, amely csak a táblára korlátozza a kiszolgálói naplózást SensitiveData . A kiszolgálói naplózás feltételezi, hogy létezik egy naplózási mappa a következő helyen 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

Transact-SQL reference