CREATE SERVER AUDIT (Transact-SQL)
Gilt für: SQL Server Azure SQL Managed Instance
Erstellt ein Serverüberwachungsobjekt mithilfe von SQL Server Audit. Weitere Informationen finden Sie unter SQL Server Audit (Datenbank-Engine).
Transact-SQL-Syntaxkonventionen
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 ' }
Argumente
TO { DATEI | ANWENDUNGSPROTOKOLL | SICHERHEITSPROTOKOLL | URL | EXTERER_MONITOR }
Legt den Speicherort des Überwachungsziels fest. Die Optionen sind eine Binärdatei, das Windows-Anwendungsprotokoll oder das Windows-Sicherheitsprotokoll. SQL Server kann nicht in das Windows-Sicherheitsprotokoll schreiben, ohne zusätzliche Einstellungen in Windows zu konfigurieren. Weitere Informationen finden Sie unter Schreiben von SQL-Serverüberwachungsereignissen in das Sicherheitsprotokoll.
Das URL
-Ziel wird nicht für SQL Server unterstützt.
Wichtig
In Azure SQL Managed Instance funktioniert die SQL-Überwachung auf Serverebene. Als Speicherorte ist nur URL
oder EXTERNAL_MONITOR
möglich.
FILEPATH = 'os_file_path'
Der Pfad des Überwachungsprotokolls. Der Dateiname wird auf der Grundlage des Überwachungsnamens und des Überwachungs-GUID generiert. Wenn dieser Pfad ungültig ist, wird die Überwachung nicht erstellt.
Das FILEPATH
-Ziel wird für Azure SQL verwaltete Instanz nicht unterstützt. Stattdessen müssen Sie PATH
verwenden.
MAXSIZE = max_size
Gibt die maximale Größe an, die die Überwachungsdatei annehmen kann. Der Wert von max_size muss eine ganze Zahl gefolgt von MB, GB, TB oder UNLIMITED
sein. Die minimale Größe, die Sie für max_size angeben können, beträgt 2 MB, und die maximale Größe beträgt 2.147.483.647 TB. Wird UNLIMITED
angegeben, kann die Größe der Datei so lange zunehmen, bis auf dem Datenträger kein Speicherplatz mehr verfügbar ist. (0
steht ebenfalls für UNLIMITED
.) Die Angabe eines Werts kleiner als 2 MB löst den Fehler MSG_MAXSIZE_TOO_SMALL
aus. Der Standardwert ist UNLIMITED
.
Das MAXSIZE
-Ziel wird für Azure SQL verwaltete Instanz nicht unterstützt.
MAX_ROLLOVER_FILES = { integer | UNLIMITED }
Gibt die maximale Anzahl der Dateien an, die im Dateisystem zusätzlich zur aktuellen Datei beibehalten werden. Der MAX_ROLLOVER_FILES
-Wert muss eine ganze Zahl oderUNLIMITED
sein. Der Standardwert ist UNLIMITED
. Dieser Parameter wird ausgewertet, sobald die Überwachung neu gestartet wird (z.B. wenn die Instanz von Datenbank-Engine neu gestartet oder die Überwachung deaktiviert und wieder aktiviert wird) oder wenn eine neue Datei benötigt wird, da MAXSIZE
erreicht wurde. Wenn die Anzahl der Dateien bei der Auswertung des Werts von MAX_ROLLOVER_FILES
die Einstellung für MAX_ROLLOVER_FILES
überschreitet, wird die älteste Datei gelöscht. Wenn die Einstellung für MAX_ROLLOVER_FILES
0 lautet, wird folglich bei jeder Auswertung der Einstellung für MAX_ROLLOVER_FILES
eine neue Datei erstellt. Bei der Auswertung der Einstellung für MAX_ROLLOVER_FILES
wird nur eine Datei automatisch gelöscht. Wenn der Wert von MAX_ROLLOVER_FILES
also sinkt, verringert sich die Anzahl der Dateien nur dann, wenn alte Dateien manuell gelöscht werden. Der Maximalwert für die Anzahl der Dateien beträgt 2.147.483.647.
MAX_ROLLOVER_FILES
wird für Azure SQL Managed Instance nicht unterstützt.
MAX_FILES = integer
Gilt für: SQL Server 2012 (11.x) und höher.
Gibt die maximale Anzahl von Überwachungsdateien an, die erstellt werden können. Führt keinen Rollover zur ersten Datei aus, wenn die Grenze erreicht wird. Wenn die MAX_FILES
-Grenze erreicht wird, schlägt jede Aktion fehl, die zusätzliche Überwachungsereignisse nach sich zieht.
RESERVE_DISK_SPACE = { ON | OFF }
Diese Option ordnet der Datei auf dem Datenträger den MAXSIZE
-Wert zu. Sie gilt nur, wenn MAXSIZE
sie nicht gleich UNLIMITED
ist. Der Standardwert ist OFF
.
Das RESERVE_DISK_SPACE
-Ziel wird für Azure SQL verwaltete Instanz nicht unterstützt.
QUEUE_DELAY = integer
Gibt den Zeitraum in Millisekunden an, der verstreichen kann, bevor die Verarbeitung von Überwachungsaktionen erzwungen wird. Der Wert 0 steht für eine synchrone Übermittlung. Der minimale festlegbare Abfrageverzögerungswert ist 1000
(1 Sekunde), was auch der Standardwert ist. Der maximale Wert beträgt 2147483647
(2.147.483,647 Sekunden oder 24 Tage, 20 Stunden, 31 Minuten und 23.647 Sekunden). Wenn Sie eine ungültige Zahl angeben, wird der MSG_INVALID_QUEUE_DELAY
-Fehler ausgelöst.
ON_FAILURE = { CONTINUE | SHUTDOWN | FAIL_OPERATION }
Gibt an, ob die an das Ziel ausgebende Instanz SQL Server fehlschlagen lassen, fortsetzen oder beenden soll, wenn das Ziel keine Daten in das Überwachungsprotokoll schreiben kann. Der Standardwert ist CONTINUE
.
CONTINUE
SQL Server -Vorgänge werden fortgesetzt. Überwachungsdatensätze werden nicht beibehalten. Bei der Überwachung wird weiterhin versucht, Ereignisse zu protokollieren. Sie wird fortgesetzt, wenn die Fehlerbedingung aufgelöst wurde. Durch Auswählen der Continue-Option können unter Umständen nicht überwachte Aktivitäten ausgeführt werden, die gegen Ihre Sicherheitsrichtlinien verstoßen könnten. Verwenden Sie diese Option, wenn die weitere Verwendung von Datenbank-Engine wichtiger als die Beibehaltung einer vollständigen Überwachung ist.
SHUTDOWN
Erzwingt, dass die Instanz von SQL Server heruntergefahren wird, falls SQL Server aus irgendeinem Grund keine Daten in das Überwachungsziel schreiben kann. Die Anmeldung, bei der die CREATE SERVER AUDIT
-Anweisung ausgeführt wird, muss über die SHUTDOWN
-Berechtigung in SQL Server verfügen. Das Herunterfahren wird auch dann fortgesetzt, wenn die SHUTDOWN
-Berechtigung später von der ausführenden Anmeldung widerrufen wird. Wenn der Benutzer nicht über diese Berechtigung verfügt, schlägt die Anweisung fehl, und die Überwachung wird nicht erstellt. Verwenden Sie die Option, wenn ein Überwachungsfehler die Sicherheit oder die Integrität des Systems beeinträchtigen konnte. Weitere Informationen finden Sie unter SHUTDOWN.
FAIL_OPERATION
Gilt für: SQL Server 2012 (11.x) und höher.
Datenbankaktionen schlagen fehl, wenn sie überwachte Ereignisse verursachen. Aktionen, die keine überwachten Ereignisse verursachen, können fortgesetzt werden, es können jedoch keine überwachten Ereignisse auftreten. Bei der Überwachung wird weiterhin versucht, Ereignisse zu protokollieren. Sie wird fortgesetzt, wenn die Fehlerbedingung aufgelöst wurde. Verwenden Sie diese Option, wenn die Beibehaltung einer vollständigen Überwachung wichtiger als der Vollzugriff auf Datenbank-Engine ist.
AUDIT_GUID = uniqueidentifier
Um Szenarien, wie beispielsweise Datenbankspiegelung unterstützen zu können, benötigt eine Überwachung einen bestimmten GUID, der dem GUID in der gespiegelten Datenbank entspricht. Der GUID kann, nachdem die Überwachung erstellt wurde, nicht mehr geändert werden.
OPERATOR_AUDIT
Gilt mnur für: Azure SQL Managed Instance.
Gibt an, ob die Überwachung die Vorgänge von Microsoft-Supporttechnikern erfasst, wenn sie während einer Supportanfrage auf Ihren Server zugreifen müssen.
predicate_expression
Gilt für: SQL Server 2012 (11.x) und höhere Versionen.
Gibt den Prädikatausdruck an, mit dessen Hilfe bestimmt wird, ob ein Ereignis verarbeitet werden muss. Die Länge von Prädikatausdrücken ist auf 3.000 Zeichen beschränkt, wodurch die Länge von Zeichenfolgenargumenten eingeschränkt wird.
event_field_name
Gilt für: SQL Server 2012 (11.x) und höhere Versionen.
Der Name des Ereignisfelds, das die Prädikatquelle identifiziert. Überwachungsfelder werden in sys.fn_get_audit_file (Transact-SQL) beschrieben. Mit Ausnahme von file_name
, audit_file_offset
und event_time
können alle Felder gefiltert werden.
Hinweis
Während die Felder action_id
und class_type
den Datentyp varchar in sys.fn_get_audit_file
aufweisen, können sie nur mit Zahlen verwendet werden, wenn sie eine Prädikatquelle für die Filterung darstellen. Führen Sie die folgende Abfrage aus, um die Liste der mit class_type
zu verwendenden Werte abzurufen:
SELECT spt.[name], spt.[number] FROM [master].[dbo].[spt_values] spt WHERE spt.[type] = N'EOD' ORDER BY spt.[name];
Zahl
Gilt für: SQL Server 2012 (11.x) und höhere Versionen.
Jeder numerische Typ einschließlich decimal. Einschränkungen stellen der verfügbare physische Speicher oder eine Zahl dar, die zu groß ist, um als 64-Bit-Ganzzahl dargestellt werden zu können.
'Zeichenfolge'
Gilt für: SQL Server 2012 (11.x) und höhere Versionen.
Entweder eine ANSI- oder Unicode-Zeichenfolge, die vom Prädikatvergleich verlangt wird. Für die Prädikatvergleichsfunktionen wird keine implizite Zeichenfolgentypkonvertierung ausgeführt. Die Übergabe des falschen Typs führt zu einem Fehler.
Hinweise
Wenn eine Serverüberwachung erstellt wird, befindet sie sich im deaktivierten Zustand.
Die CREATE SERVER AUDIT
-Anweisung liegt im Bereich einer Transaktion. Wird ein Rollback für die Transaktion ausgeführt, so wird auch für die Anweisung ein Rollback durchgeführt.
Berechtigungen
Um eine Serverüberwachung zu erstellen, zu ändern oder zu löschen, benötigen Prinzipale die ALTER ANY SERVER AUDIT
T-Berechtigung oder die CONTROL SERVER
-Berechtigung.
Schränken Sie beim Speichern von Überwachungsinformationen in einer Datei den Zugriff auf deren Speicherort ein, um eine Manipulation zu verhindern.
Beispiele
A. Erstellen einer Serverüberwachung mit einem Dateiziel
Im folgenden Beispiel wird eine Serverüberwachung namens HIPAA_Audit
mit einer Binärdatei als Ziel und ohne weitere Optionen erstellt.
CREATE SERVER AUDIT HIPAA_Audit
TO FILE ( FILEPATH ='\\SQLPROD_1\Audit\' );
B. Erstellen einer Serverüberwachung mit einem Windows-Anwendungsprotokollziel und Optionen
Im folgenden Beispiel wird eine Serverüberwachung namens HIPAA_Audit
mit dem Windows-Ereignisprotokoll als Ziel erstellt. Die Warteschlange wird jede Sekunde geschrieben und fährt bei einem Fehler die SQL Server-Engine herunter.
CREATE SERVER AUDIT HIPAA_Audit
TO APPLICATION_LOG
WITH ( QUEUE_DELAY = 1000, ON_FAILURE = SHUTDOWN);
C. Erstellen einer Serverüberwachung, die eine WHERE-Klausel enthält
Im folgenden Beispiel werden eine Datenbank, ein Schema und zwei Tabellen für das Beispiel erstellt. Die Tabelle mit dem Namen DataSchema.SensitiveData
enthält vertrauliche Daten. Der Zugriff auf die Tabelle muss bei der Überwachung aufgezeichnet werden. Die Tabelle DataSchema.GeneralData
beinhaltet keine vertraulichen Daten. Die Datenbank-Überwachungsspezifikation überwacht den Zugriff auf alle Objekte im DataSchema
-Schema. Die Serverüberwachung wird mit einer WHERE-Klausel erstellt, die die Serverüberwachung ausschließlich auf die SensitiveData
-Tabelle beschränkt. Bei der Serverüberwachung wird angenommen, dass unter C:\SQLAudit
ein Überwachungsordner vorhanden ist.
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
Zugehöriger Inhalt
- 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)
- ALTER AUTHORIZATION (Transact-SQL)
- 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)
- Erstellen einer Serverüberwachung und einer Serverüberwachungsspezifikation