SQL Server Audit (Database Engine)

  • 01/01/2020
  • 13 minutes to read
    • D
    • v
    • M
    • M
    • D
    • +8

Applies to: yesSQL Server (alle unterstützten Versionen) JaVerwaltete Azure SQL-Instanz

Das Überwachen einer Instanz des SQL Server-Datenbankmoduls oder einer einzelnen Datenbank umfasst das Verfolgen und Protokollieren von Ereignissen, die im Datenbankmodul auftreten. Mit SQL Server Audit können Sie Serveraudits erstellen, die Serverauditspezifikationen für Ereignisse auf Serverebene und Datenbankauditspezifikationen für Ereignisse auf Datenbankebene enthalten können. Auditierte Ereignisse können in die Ereignisprotokolle oder in Audit-Dateien geschrieben werden.

Wichtig

Auf einer verwalteten Azure SQL-Instanz weist dieses T-SQL-Feature bestimmte Verhaltensänderungen auf. Weitere Informationen zu allen Verhaltensänderungen von T-SQL finden Sie unter Azure SQL Managed Instance T-SQL differences from SQL Server.

Es gibt mehrere Ebenen der Überwachung für SQL Server, abhängig von staatlichen oder Standardanforderungen für Ihre Installation. SQL Server Audit stellt die Tools und Prozesse bereit, die Sie zum Aktivieren, Speichern und Anzeigen von Audits für verschiedene Server- und Datenbankobjekte benötigen.

Sie können Serverüberwachungsaktionsgruppen pro Instanz und entweder Datenbanküberwachungsaktionsgruppen oder Datenbanküberwachungsaktionen pro Datenbank aufzeichnen. Das Überwachungsereignis tritt jedes Mal auf, wenn die überprüfbare Aktion ausgeführt wird.

Alle Editionen von SQL Server unterstützen Audits auf Serverebene. Alle Editionen unterstützen Prüfungen auf Datenbankebene ab SQL Server 2016 (13.x) SP1. Zuvor war die Prüfung auf Datenbankebene auf die Editionen Enterprise, Developer und Evaluation beschränkt. Weitere Informationen finden Sie unter Von den Editionen von SQL Server 2016 unterstützte Features.

Hinweis

Dieses Thema gilt für SQL Server. Informationen zur SQL-Datenbank finden Sie unter Erste Schritte mit der SQL-Datenbanküberwachung.

SQL Server-Überwachungskomponenten

Ein Audit ist die Kombination mehrerer Elemente in einem einzigen Paket für eine bestimmte Gruppe von Serveraktionen oder Datenbankaktionen. Die Komponenten von SQL Server Audit erzeugen zusammen eine Ausgabe, die als Audit bezeichnet wird, genau wie eine Berichtsdefinition in Kombination mit Grafiken und Datenelementen einen Bericht erstellt.

SQL Server Audit verwendet erweiterte Ereignisse, um ein Audit zu erstellen. Weitere Informationen zu erweiterten Ereignissen finden Sie unter Erweiterte Ereignisse.

SQL Server Audit

Das SQL Server Audit-Objekt sammelt eine einzelne Instanz von Aktionen auf Server- oder Datenbankebene und Gruppen von Aktionen, die überwacht werden sollen. Die Prüfung erfolgt auf SQL Server-Instanzebene. Sie können mehrere Audits pro SQL Server-Instanz durchführen.

Wenn Sie ein Audit definieren, geben Sie den Speicherort für die Ausgabe der Ergebnisse an. Dies ist das Audit-Ziel. Die Prüfung wird in einem deaktivierten Zustand erstellt und überprüft keine Aktionen automatisch. Nachdem das Audit aktiviert wurde, empfängt das Auditziel Daten vom Audit.

Server-Audit-Spezifikation

Das Server-Audit-Spezifikationsobjekt gehört zu einem Audit. Sie können eine Serverauditspezifikation pro Audit erstellen, da beide im SQL Server-Instanzbereich erstellt werden.

Die Spezifikation Server Audit sammelt viele Aktionsgruppen auf Serverebene, die durch die erweiterte Ereignisfunktion ausgelöst werden. Sie können Überwachungsaktionsgruppen in eine Serverüberwachungsspezifikation aufnehmen. Überwachungsaktionsgruppen sind vordefinierte Gruppen von Aktionen, bei denen es sich um atomare Ereignisse handelt, die im Datenbankmodul auftreten. Diese Aktionen werden an das Audit gesendet, das sie im Ziel aufzeichnet.

Überwachungsaktionsgruppen auf Serverebene werden im Thema SQL Server-Überwachungsaktionsgruppen und -aktionen beschrieben.

Datenbank-Audit-Spezifikation

Das Datenbank-Audit-Spezifikationsobjekt gehört ebenfalls zu einer SQL Server-Prüfung. Sie können eine Datenbank-Audit-Spezifikation pro SQL Server-Datenbank pro Audit erstellen.

Die Spezifikation Database Audit sammelt Überwachungsaktionen auf Datenbankebene, die von der erweiterten Ereignisfunktion ausgelöst werden. Sie können einer Datenbanküberwachungsspezifikation entweder Überwachungsaktionsgruppen oder Überwachungsereignisse hinzufügen. Überwachungsereignisse sind die atomaren Aktionen, die von der SQL Server-Engine überprüft werden können. Auditaktionsgruppen sind vordefinierte Aktionsgruppen. Beide befinden sich im SQL Server-Datenbankbereich. Diese Aktionen werden an das Audit gesendet, das sie im Ziel aufzeichnet. Schließen Sie keine Objekte mit Serverbereich, z. B. die Systemansichten, in eine Benutzerdatenbanküberwachungsspezifikation ein.

Überwachungsaktionsgruppen und Überwachungsaktionen auf Datenbankebene werden im Thema SQL Server-Überwachungsaktionsgruppen und -aktionen beschrieben.

Ziel

Die Ergebnisse einer Prüfung werden an ein Ziel gesendet, bei dem es sich um eine Datei, das Windows-Sicherheitsereignisprotokoll oder das Windows-Anwendungsereignisprotokoll handeln kann. Protokolle müssen regelmäßig überprüft und archiviert werden, um sicherzustellen, dass das Ziel über genügend Speicherplatz zum Schreiben zusätzlicher Datensätze verfügt.

Wichtig

Jeder authentifizierte Benutzer kann das Windows-Anwendungsereignisprotokoll lesen und schreiben. Das Anwendungsereignisprotokoll erfordert geringere Berechtigungen als das Windows-Sicherheitsereignisprotokoll und ist weniger sicher als das Windows-Sicherheitsereignisprotokoll.

Für das Schreiben in das Windows-Sicherheitsprotokoll muss das SQL Server-Dienstkonto zur Richtlinie Sicherheitsüberprüfungen generieren hinzugefügt werden. Standardmäßig sind das lokale System, der lokale Dienst und der Netzwerkdienst Teil dieser Richtlinie. Diese Einstellung kann mithilfe des Sicherheitsrichtlinien-Snap-Ins (secpol.msc). Darüber hinaus muss die Audit Object Access-Sicherheitsrichtlinie sowohl für Erfolg als auch für Misserfolg aktiviert sein. Diese Einstellung kann mithilfe des Sicherheitsrichtlinien-Snap-Ins (secpol.msc). In Windows Vista oder Windows Server 2008 können Sie die granularere von der Anwendung generierte Richtlinie über die Befehlszeile mithilfe des Audit policy program (AuditPol.exe). Weitere Informationen zu den Schritten zum Aktivieren des Schreibens in das Windows-Sicherheitsprotokoll finden Sie unter Schreiben von SQL Server-Überwachungsereignissen in das Sicherheitsprotokoll. Weitere Informationen über die Auditpol.exe-Programm, siehe Knowledge Base-Artikel 921469, Verwenden von Gruppenrichtlinien zum Konfigurieren der detaillierten Sicherheitsüberwachung. Die Windows-Ereignisprotokolle sind global für das Windows-Betriebssystem. Weitere Informationen zu den Windows-Ereignisprotokollen finden Sie unter Übersicht über die Ereignisanzeige. Wenn Sie genauere Berechtigungen für das Audit benötigen, verwenden Sie das Binärdateiziel.

Wenn Sie Audit-Informationen in einer Datei speichern, können Sie den Zugriff auf den Speicherort der Datei folgendermaßen einschränken, um Manipulationen zu verhindern:

  • Das SQL Server-Dienstkonto muss über Lese- und Schreibberechtigung verfügen.

  • Audit-Administratoren benötigen in der Regel Lese- und Schreibberechtigungen. Dies setzt voraus, dass die Überwachungsadministratoren Windows-Konten für die Verwaltung von Überwachungsdateien sind, z. B.: Kopieren auf verschiedene Freigaben, Sichern usw.

  • Audit-Reader, die zum Lesen von Audit-Dateien berechtigt sind, müssen über die Leseberechtigung verfügen.

Selbst wenn das Datenbankmodul in eine Datei schreibt, können andere Windows-Benutzer die Überwachungsdatei lesen, wenn sie über die Berechtigung verfügen. Das Datenbankmodul akzeptiert keine exklusive Sperre, die Lesevorgänge verhindert.

Da das Datenbankmodul auf die Datei zugreifen kann, können SQL Server-Anmeldungen mit Steuerserverberechtigung das Datenbankmodul für den Zugriff auf die Überwachungsdateien verwenden. Um jeden Benutzer aufzuzeichnen, der die Audit-Datei liest, definieren Sie ein Audit auf Master.sys.fn_get_audit_file. Dadurch werden die Anmeldungen mit Steuerserverberechtigung aufgezeichnet, die über SQL Server auf die Überwachungsdatei zugegriffen haben.

Wenn ein Auditadministrator die Datei an einen anderen Speicherort kopiert (für Archivierungszwecke usw.), sollten die ACLs am neuen Speicherort auf die folgenden Berechtigungen reduziert werden:

  • Audit Administrator – Lesen / Schreiben

  • Audit Reader – Lesen

Es wird empfohlen, Überwachungsberichte von einer separaten Instanz von SQL Server zu generieren, z. B. einer Instanz von SQL Server Express, auf die nur Überwachungsadministratoren oder Überwachungsleser Zugriff haben. Durch die Verwendung einer separaten Instanz des Datenbankmoduls für die Berichterstellung können Sie verhindern, dass nicht autorisierte Benutzer Zugriff auf den Überwachungsdatensatz erhalten.

Sie können zusätzlichen Schutz vor unbefugtem Zugriff bieten, indem Sie den Ordner, in dem die Überwachungsdatei gespeichert ist, mit Windows BitLocker Drive Encryption oder Windows Encrypting File System verschlüsseln.

Weitere Informationen zu den Überwachungsdatensätzen, die in das Ziel geschrieben werden, finden Sie unter SQL Server-Überwachungsdatensätze.

Übersicht über die Verwendung von SQL Server Audit

Sie können SQL Server Management Studio oder Transact-SQL verwenden, um ein Audit zu definieren. Nachdem das Audit erstellt und aktiviert wurde, erhält das Ziel Einträge.

Sie können die Windows-Ereignisprotokolle mit dem Dienstprogramm Ereignisanzeige in Windows lesen. Für Dateiziele können Sie entweder die Protokolldateianzeige in SQL Server Management Studio oder die Funktion fn_get_audit_file verwenden, um die Zieldatei zu lesen.

Der allgemeine Prozess zum Erstellen und Verwenden eines Audits ist wie folgt.

  1. Erstellen Sie ein Audit und definieren Sie das Ziel.

  2. Erstellen Sie entweder eine Serverauditspezifikation oder eine Datenbankauditspezifikation, die dem Audit zugeordnet ist. Aktivieren Sie die Audit-Spezifikation.

  3. Aktivieren Sie das Audit.

  4. Lesen Sie die Überwachungsereignisse mithilfe der Windows-Ereignisanzeige, der Protokolldateianzeige oder der Funktion fn_get_audit_file.

Weitere Informationen finden Sie unter Erstellen eines Serveraudits und einer Serverauditspezifikation und Erstellen eines Serveraudits und einer Datenbankauditspezifikation.

Im Falle eines Fehlers während der Audit-Initiierung wird der Server nicht gestartet. In diesem Fall kann der Server mit der Option -f in der Befehlszeile gestartet werden.

Wenn ein Überwachungsfehler dazu führt, dass der Server heruntergefahren oder nicht gestartet wird, weil ON_FAILURE=SHUTDOWN für das Audit angegeben ist, wird das Ereignis MSG_AUDIT_FORCED_SHUTDOWN in das Protokoll geschrieben. Da das Herunterfahren beim ersten Auftreten dieser Einstellung erfolgt, wird das Ereignis einmal geschrieben. Dieses Ereignis wird nach der Fehlermeldung für das Audit geschrieben, das das Herunterfahren verursacht. Ein Administrator kann überwachungsbedingte Abschaltungen umgehen, indem er SQL Server im Einzelbenutzermodus mit dem Flag -m startet. Wenn Sie im Einzelbenutzermodus starten, führen Sie ein Downgrade eines Audits durch, bei dem ON_FAILURE=SHUTDOWN angegeben ist, um in dieser Sitzung als ON_FAILURE=CONTINUE ausgeführt zu werden. Wenn SQL Server mit dem Flag -m gestartet wird, wird die Nachricht MSG_AUDIT_SHUTDOWN_BYPASSED in das Fehlerprotokoll geschrieben.

Weitere Informationen zu den Startoptionen für Dienste finden Sie unter Startoptionen für Datenbankmoduldienste.

Anhängen einer Datenbank mit einer Audit-Spezifikation

Das Anhängen einer Datenbank mit einer Audit-Spezifikation und einer GUID, die auf dem Server nicht vorhanden ist, führt zu einer verwaisten Audit-Spezifikation. Da auf der Serverinstanz kein Audit mit einer übereinstimmenden GUID vorhanden ist, werden keine Auditereignisse aufgezeichnet. Um diese Situation zu korrigieren, verwenden Sie den Befehl ALTER DATABASE AUDIT SPECIFICATION, um die verwaiste Audit-Spezifikation mit einem vorhandenen Server-Audit zu verbinden. Oder verwenden Sie den Befehl CREATE SERVER AUDIT, um ein neues Serveraudit mit der angegebenen GUID zu erstellen.

Sie können eine Datenbank, für die eine Audit-Spezifikation definiert ist, an eine andere Edition von SQL Server anhängen, die SQL Server Audit nicht unterstützt, z. B. SQL Server Express, aber keine Audit-Ereignisse aufzeichnet.

Datenbankspiegelung und SQL Server-Prüfung

Eine Datenbank, für die eine Datenbanküberwachungsspezifikation definiert ist und die Datenbankspiegelung verwendet, enthält die Datenbanküberwachungsspezifikation. Damit die gespiegelte SQL-Instanz ordnungsgemäß funktioniert, müssen die folgenden Elemente konfiguriert werden:

  • Der Spiegelserver muss über ein Audit mit derselben GUID verfügen, damit die Datenbank-Audit-Spezifikation Audit-Datensätze schreiben kann. Dies kann mit dem Befehl CREATE AUDIT WITH GUID =<GUID from source Server Audit> konfiguriert werden.

  • Für Binärdateiziele muss das Spiegelserver-Dienstkonto über die entsprechenden Berechtigungen für den Speicherort verfügen, an dem der Prüfpfad geschrieben wird.

  • Für Windows-Ereignisprotokollziele muss die Sicherheitsrichtlinie auf dem Computer, auf dem sich der Spiegelserver befindet, den Zugriff des Dienstkontos auf das Sicherheits- oder Anwendungsereignisprotokoll zulassen.

Auditing-Administratoren

Mitglieder der festen Serverrolle sysadmin werden in jeder Datenbank als dbo-Benutzer identifiziert. Um die Aktionen der Administratoren zu überprüfen, überprüfen Sie die Aktionen des dbo-Benutzers.

Erstellen und Verwalten von Audits mit Transact-SQL

Sie können DDL-Anweisungen, dynamische Verwaltungsansichten und -funktionen sowie Katalogansichten verwenden, um alle Aspekte von SQL Server Audit zu implementieren.

Anweisungen zur Datendefinitionssprache

Mit den folgenden DDL-Anweisungen können Sie Prüfspezifikationen erstellen, ändern und löschen:

DDL-Anweisungen Beschreibung
ALTER AUTHORIZATION Ändert den Besitz eines Wertpapiers.
ALTER DATABASE AUDIT SPECIFICATION Ändert ein Datenbank-Audit-Spezifikationsobjekt mithilfe des SQL Server-Audit-Features.
ALTER SERVER AUDIT Ändert ein Server-Audit-Objekt mithilfe der SQL Server-Audit-Funktion.
ALTER SERVER AUDIT SPECIFICATION Ändert ein Server-Audit-Spezifikationsobjekt mithilfe der SQL Server-Audit-Funktion.
CREATE DATABASE AUDIT SPECIFICATION Erstellt ein Datenbank-Audit-Spezifikationsobjekt mit dem SQL Server-Audit-Feature.
CREATE SERVER AUDIT Erstellt ein Server-Audit-Objekt mit SQL Server Audit.
CREATE SERVER AUDIT SPECIFICATION Erstellt ein Server-Audit-Spezifikationsobjekt mit dem SQL Server-Audit-Feature.
DROP DATABASE AUDIT SPECIFICATION Löscht ein Datenbank-Audit-Spezifikationsobjekt mit dem SQL Server-Audit-Feature.
DROP SERVER AUDIT Löscht ein Server-Audit-Objekt mit der SQL Server-Audit-Funktion.
DROP SERVER AUDIT SPECIFICATION Löscht ein Server-Audit-Spezifikationsobjekt mit dem SQL Server-Audit-Feature.

Dynamische Ansichten und Funktionen

In der folgenden Tabelle sind die dynamischen Ansichten und Funktionen aufgeführt, die Sie für die SQL Server-Überwachung verwenden können.

Dynamische Ansichten und Funktionen Beschreibung
sys.dm_audit_actions Gibt eine Zeile für jede Überwachungsaktion zurück, die im Überwachungsprotokoll gemeldet werden kann, und für jede Überwachungsaktionsgruppe, die als Teil von SQL Server Audit konfiguriert werden kann.
sys.dm_server_audit_status Liefert Informationen über den aktuellen Status des Audits.
sys.dm_audit_class_type_map Gibt eine Tabelle zurück, die das Feld class_type im Überwachungsprotokoll dem Feld class_desc in sys.dm_audit_actions.
fn_get_audit_file Gibt Informationen aus einer Audit-Datei zurück, die von einem Server-Audit erstellt wurde.

Katalogansichten

In der folgenden Tabelle sind die Katalogansichten aufgeführt, die Sie für die SQL Server-Überwachung verwenden können.

Katalogansichten Beschreibung
sys.database_audit_specifications Enthält Informationen zu den Datenbanküberwachungsspezifikationen in einem SQL Server-Audit auf einer Serverinstanz.
sys.database_audit_specification_details Enthält Informationen zu den Datenbanküberwachungsspezifikationen in einem SQL Server-Audit auf einer Serverinstanz für alle Datenbanken.
sys.server_audits Enthält eine Zeile für jede SQL Server-Prüfung in einer Serverinstanz.
sys.server_audit_specifications Enthält Informationen zu den Serverüberwachungsspezifikationen in einem SQL Server-Audit auf einer Serverinstanz.
sys.server_audit_specifications_details Enthält Informationen zu den Details der Serverauditspezifikation (Aktionen) in einem SQL Server-Audit auf einer Serverinstanz.
sys.server_file_audits Containsspeichert erweiterte Informationen über den Dateiüberwachungstyp in einer SQL Server-Überwachung auf einer Serverinstanz.

Berechtigungen

Jedes Feature und jeder Befehl für SQL Server Audit hat individuelle Berechtigungsanforderungen.

Um ein Serveraudit oder eine Serverauditspezifikation zu erstellen, zu ändern oder zu löschen, benötigen Serverprinzipale die Berechtigung ALTER ANY SERVER AUDIT oder CONTROL SERVER. Um eine Datenbanküberwachungsspezifikation zu erstellen, zu ändern oder zu löschen, benötigen Datenbankprinzipale die Berechtigung ALTER ANY DATABASE AUDIT oder die Berechtigung ALTER or CONTROL für die Datenbank. Darüber hinaus müssen Prinzipale über die Berechtigung verfügen, eine Verbindung zur Datenbank herzustellen oder SERVERÜBERWACHUNGS- oder Steuerserverberechtigungen zu ändern.

Die Berechtigung VIEW ANY DEFINITION ermöglicht den Zugriff auf die Überwachungsansichten auf Serverebene und VIEW DEFINITION den Zugriff auf die Überwachungsansichten auf Datenbankebene. Die Verweigerung dieser Berechtigungen überschreibt die Möglichkeit, die Katalogansichten anzuzeigen, selbst wenn der Prinzipal über die Berechtigungen ALTER ANY SERVER AUDIT oder ALTER ANY DATABASE AUDIT verfügt.

Weitere Informationen zum Erteilen von Rechten und Berechtigungen finden Sie unter ERTEILEN (Transact-SQL).

Vorsicht

Prinzipale in der Rolle sysadmin können Audit-Komponenten manipulieren, und die in der Rolle db_owner können Audit-Spezifikationen in einer Datenbank manipulieren. SQL Server Audit überprüft, ob eine Anmeldung, die eine Prüfspezifikation erstellt oder ändert, mindestens über die Berechtigung ALTER ANY DATABASE AUDIT verfügt. Es wird jedoch keine Validierung durchgeführt, wenn Sie eine Datenbank anhängen. Sie sollten davon ausgehen, dass alle Datenbanküberwachungsspezifikationen nur so vertrauenswürdig sind wie die Principals in der Rolle sysadmin oder db_owner.

Erstellen eines Serveraudits und einer Serverauditspezifikation

Erstellen eines Serveraudits und einer Datenbankauditspezifikation

Anzeigen eines SQL Server-Überwachungsprotokolls

Schreiben von SQL Server-Überwachungsereignissen in das Sicherheitsprotokoll

Servereigenschaften (Seite Sicherheit)
Erläutert, wie die Anmeldeüberwachung für SQL Server aktiviert wird. Die Überwachungsdatensätze werden im Windows-Anwendungsprotokoll gespeichert.

Serverkonfigurationsoption für den c2-Überwachungsmodus
Erläutert den Überwachungsmodus für die C2-Sicherheitskonformität in SQL Server.

Kategorie der Sicherheitsüberwachungsereignisse (SQL Server Profiler)
Erläutert die Überwachungsereignisse, die Sie in SQL Server Profiler verwenden können. Weitere Informationen finden Sie unter SQL Server Profiler.

SQL Trace
Erläutert, wie SQL Trace in Ihren eigenen Anwendungen verwendet werden kann, um Traces manuell zu erstellen, anstatt SQL Server Profiler zu verwenden.

DDL-Trigger
Erläutert, wie Sie DDL-Trigger (Data Definition Language) verwenden können, um Änderungen an Ihren Datenbanken zu verfolgen.

Microsoft-TechNet: SQL-Server-TechCenter: SQL Server 2005 Sicherheit und Schutz
Bietet aktuelle Informationen zur SQL Server-Sicherheit.

Siehe auch

SQL Server Audit Action Groups and Actions
SQL Server Audit Records