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 } ]
    [ , RETENTION_DAYS = integer ]
}

<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. Az SQL Server 2019 (15.x) és a korábbi verziók nem tartalmazhatnak szóközöket az audit nevében.

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

Meghatározza a naplózási cél helyét. A beállítások egy bináris fájl, a Windows-alkalmazásnapló vagy a Windows biztonsági naplója. 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. Amikor megadja UNLIMITED, 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 naplózás nem kerül át az első fájlra a korlát elérésekor. MAX_FILES A korlát elérésekor minden olyan művelet, amely további naplózási eseményeket okoz, hibával 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

Csak a felügyelt Azure SQL-példányra vonatkozik.

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.

RETENTION_DAYS = egész szám

Csak a felügyelt Azure SQL-példányra és az Azure SQL Database-re vonatkozik.

A naplófájl tárolására használt napok számát jelzi.

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őt szűrheti, kivéve file_namea , audit_file_offsetés event_timea .

Bár a mezők és class_type a action_id mezők varcharsys.fn_get_audit_filetípusúak, csak akkor használhatja őket számokkal, ha azok a szűrés predikátumforrásai. A használni class_typekívánt értékek listájának lekéréséhez futtassa 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];

szám

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ények nem hajtanak végre implicit sztringtípus-átalakítást. Ha nem a megfelelő típust adja át, az hibát eredményez.

Remarks

A kiszolgálói naplózás letiltott állapotban jön létre.

A CREATE SERVER AUDIT nyilatkozat egy tranzakció része. Ha visszaállítja a tranzakciót, az utasítás is vissza lesz állítva.

Permissions

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

Amikor naplóadatokat ment egy fájlba, korlátozza a fájl helyéhez való hozzáférést, hogy megelőzze a illetéktelen módosítást.

Examples

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

Az alábbi példa egy bináris fájllal elnevezett HIPAA_Audit kiszolgálónaplót hoz létre 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ói auditot, amely a Windows-alkalmazásnapló célkészletével van elnevezve 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

Hozza létre a kiszolgálói naplózást az master adatbázisban:

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

Hozza létre az adatbázis naplózási specifikációját az TestDB adatbázisban:

USE TestDB;
GO

CREATE DATABASE AUDIT SPECIFICATION [FilterForSensitiveData]
    FOR SERVER AUDIT [AuditDataAccess]
    ADD (SELECT ON SCHEMA::[DataSchema] BY [public])
    WITH(STATE = ON);
GO

A naplózási esemény aktiválása a táblákból való kijelöléssel:

SELECT ID,
       DataField
FROM DataSchema.GeneralData;

SELECT ID,
       DataField
FROM DataSchema.SensitiveData;
GO

Ellenőrizze a szűrt tartalom naplózását:

SELECT *
FROM fn_get_audit_file('C:\SQLAudit\AuditDataAccess_*.sqlaudit', DEFAULT, DEFAULT);
GO

Transact-SQL hivatkozás