Freigeben über


SQL Server Audit (Datenbank-Engine)

Gilt für:SQL ServerAzure SQL Managed Instance

Die Überprüfung einer Instanz der SQL Server-Datenbank-Engine oder einer einzelnen Datenbank umfasst das Nachverfolgen und Protokollieren von Ereignissen, die in der Datenbank-Engine auftreten. Mithilfe von SQL Server Audit können Serverüberwachungen erstellt werden, die Serverüberwachungsspezifikationen für Ereignisse auf Serverebene sowie Datenbank-Überwachungsspezifikationen für Ereignisse auf Datenbankebene beinhalten können. Überwachte Ereignisse können in die Ereignisprotokolle oder Überwachungsdateien geschrieben werden.

Wichtig

Für Azure SQL Managed Instance weist dieses T-SQL-Feature gewisse Behavior Changes auf. Informationen zu allen Behavior Changes von T-SQL finden Sie unter Unterschiede bei T-SQL zwischen SQL Server und Azure SQL Managed Instance.

Es gibt mehrere Ebenen der Überwachung für SQL Server. Dies richtet sich nach den behördlichen Anforderungen bzw. den Standardvorgaben für Ihre Installation. SQL Server Audit enthält die Tools und Prozesse, die Sie benötigen, um Überwachungen für verschiedene Server- und Datenbankobjekte zu aktivieren, zu speichern und anzuzeigen.

Bei Servern können Sie Überwachungsaktionsgruppen instanzweise aufzeichnen, bei Datenbanken entweder Überwachungsaktionsgruppen oder Überwachungsaktionen jeweils pro Datenbank. Das Überwachungsereignis tritt jedes Mal auf, wenn die überwachbare Aktion erkannt wird.

Alle Editionen von SQL Server unterstützen Überwachungen auf Serverebene. In SQL Server 2016 (13.x) mit Service Pack 1 und höheren Versionen unterstützen alle Editionen Audits auf Datenbankebene. Davor war die Überwachung auf Datenbankebene auf Enterprise-, Entwickler- und Evaluierungseditionen beschränkt. Weitere Informationen finden Sie unter Editionen und unterstützte Features von SQL Server 2016.

Hinweis

Dieser Artikel bezieht sich auf SQL Server. Informationen zur SQL-Datenbank finden Sie unter Überwachung für Azure SQL-Datenbank und Azure Synapse Analytics.

SQL Server-Überwachungskomponenten

Eine Überwachung besteht aus mehreren Elementen, die in einem einzelnen Paket für eine bestimmte Gruppe von Server- oder Datenbankaktionen zusammengefasst werden. Die Komponenten von SQL Server Audit geben zusammen eine Ausgabe aus, die als Überwachung bezeichnet wird, ebenso wie durch die Kombination von Berichtsdefinitionen mit Grafiken und Datenelementen ein Bericht erstellt wird.

SQL Server Audit verwendet erweiterte Ereignisse, um eine Überwachung zu erstellen. Weitere Informationen zu erweiterten Ereignissen finden Sie in der Übersicht über erweiterte Ereignisse.

SQL Server-Überwachung

Das SQL Server Audit -Objekt listet eine einzelne Instanz an Aktionen oder Aktionsgruppen auf Server- oder Datenbankebene auf, die überwacht werden soll. Die Überwachung wird auf SQL Server-Instanzebene ausgeführt. Es können mehrere Überwachungen pro SQL Server-Instanz vorliegen.

Wenn Sie eine Überwachung definieren, geben Sie den Speicherort für die Ausgabe der Ergebnisse an. Dies ist das Überwachungsziel. Die Überwachung wird in einem disabled Zustand erstellt und überwacht Aktionen nicht automatisch. Nachdem die Überwachung aktiviert wurde, empfängt das Überwachungsziel Daten von der Überwachung.

Serverüberwachungsspezifikation

Das Serverüberwachungsspezifikation -Objekt gehört zu einer Überwachung. Sie können eine Serverüberwachungsspezifikation pro Überwachung erstellen, da beide im SQL Server-Instanzbereich erstellt werden.

Die Serverüberwachungsspezifikation listet viele Aktionsgruppen auf Serverebene auf, die von erweiterten Ereignissen ausgelöst werden. Sie können Überwachungsaktionsgruppen in eine Serverüberwachungsspezifikation einschließen. Überwachungsaktionsgruppen sind vorab definierte Gruppen von Aktionen, bei denen es sich um unteilbare Ereignisse handelt, die in der Datenbank-Engine stattfinden. Diese Aktionen werden an die Überwachung gesendet, die sie im Ziel aufzeichnet.

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

Hinweis

Aufgrund von Leistungsbeschränkungen überwachen wir die tempdb und temporäre Tabellen nicht. Während die Gruppe der abgeschlossenen Batchaktionen Anweisungen für temporäre Tabellen erfasst, füllt sie die Objektnamen möglicherweise nicht ordnungsgemäß auf. Die Quelltabelle wird jedoch immer überwacht, um sicherzustellen, dass alle Einfügungen aus der Quelltabelle in temporäre Tabellen aufgezeichnet werden.

Datenbank-Überwachungsspezifikation

Das Datenbank-Überwachungsspezifikation-Objekt gehört ebenfalls zu SQL Server Audit. Sie können eine Datenbank-Überwachungsspezifikation pro SQL Server-Datenbank und pro Überwachung erstellen.

Die Datenbank-Überwachungsspezifikation listet viele Überwachungsaktionen auf Datenbankebene auf, die von erweiterten Ereignissen ausgelöst werden. Sie können einer Datenbank-Überwachungsspezifikation Überwachungsaktionsgruppen oder Überwachungsereignisse hinzufügen. Überwachungsereignisse sind die unteilbaren Aktionen, die von der SQL Server-Engine überwacht werden können. Überwachungsaktionsgruppen sind vorab definierte Aktionsgruppen. Beide befinden sich im SQL Server-Datenbankbereich. Diese Aktionen werden an die Überwachung gesendet, die sie im Ziel aufzeichnet. Beziehen Sie in einer Benutzerdatenbank-Überwachungsspezifikation keine Objekte mit Serverbereich ein, wie Systemsichten.

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

Ziel

Die Ergebnisse einer Überwachung werden an ein Ziel gesendet, wobei es sich um eine Datei, das Windows-Sicherheitsereignisprotokoll oder das Windows-Anwendungsereignisprotokoll handelt. Protokolle müssen regelmäßig überprüft und archiviert werden, um sicherzustellen, dass das Ziel über ausreichend Platz verfügt, um weitere Datensätze anzulegen.

Wichtig

Jeder authentifizierte Benutzer kann das Windows-Anwendungsereignisprotokoll lesen und Datensätze darin schreiben. Für das Anwendungsereignisprotokoll sind niedrigere Berechtigungen als für das Windows-Sicherheitsereignisprotokoll erforderlich, daher ist es jedoch auch weniger sicher als das Windows-Sicherheitsereignisprotokoll.

Wenn Sie einen Datensatz im Windows-Sicherheitsprotokoll schreiben möchten, muss das SQL Server-Dienstkonto der Richtlinie Generieren von Sicherheitsüberwachungen hinzugefügt werden. Standardmäßig sind das lokale System, der lokale Dienst und der Netzwerkdienst ein Teil dieser Richtlinie. Diese Einstellung kann mit dem Sicherheitsrichtlinien-Snap-In (secpol.msc) konfiguriert werden. Darüber hinaus muss die Sicherheitsrichtlinie Objektzugriffsversuche überwachen sowohl für Erfolg als auch für Fehleraktiviert sein. Diese Einstellung kann mit dem Sicherheitsrichtlinien-Snap-In (secpol.msc) konfiguriert werden. In Windows Vista oder Windows Server 2008 (und höher) können Sie die granularere, von der Anwendung generierte Richtlinie über die Befehlszeile mit dem Überwachungsrichtlinienprogramm () festlegen. Weitere Informationen zu den Schritten zum Schreiben in das Windows-Sicherheitsprotokoll finden Sie unter Schreiben von SQL Server-Überwachungsereignissen in das Sicherheitsprotokoll. Weitere Informationen über das Programm Auditpol.exe finden Sie im Knowledge Base-Artikel 921469, How to use Group Policy to configure detailed security auditing(in englischer Sprache). Die Windows-Ereignisprotokolle gelten global für das Windows-Betriebssystem. Weitere Informationen zu den Windows-Ereignisprotokollen finden Sie unter Ereignisanzeige (Übersicht). Wenn Sie präzisere Berechtigungen für die Überwachung benötigen, verwenden Sie das Binärdateiziel.

Um beim Speichern von Überwachungsinformationen in eine Datei Manipulationen zu verhindern, können Sie den Zugriff auf deren Speicherort auf folgende Weise einschränken:

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

  • Für Überwachungsadministratoren sind in der Regel Lese- und Schreibberechtigungen erforderlich. Dabei wird angenommen, dass Überwachungsadministratoren Windows-Konten für die Verwaltung von Überwachungsdateien (u. a. das Kopieren der Dateien auf andere Freigaben und das Erstellen von Sicherungen) darstellen.

  • Für das Lesen von Überwachungsdateien autorisierte Überwachungsleser müssen über eine Leseberechtigung verfügen.

Selbst wenn die Datenbank-Engine Daten in eine Datei schreibt, können andere Windows-Benutzer mit entsprechender Berechtigung die Überwachungsdatei lesen. Die Datenbank-Engine lässt eine exklusive Sperre, die Lesevorgänge verhindert, nicht zu.

Da das Datenbankmodul auf die Datei zugreifen kann, können SQL Server-Anmeldungen mit CONTROL SERVER-Berechtigung das Datenbankmodul verwenden, um auf die Überwachungsdateien zuzugreifen. Um alle Benutzer aufzuzeichnen, die die Überwachungsdatei lesen, definieren Sie eine Überwachung in master.sys.fn_get_audit_file. Dadurch werden die Anmeldungen mit der Berechtigung CONTROL SERVER aufgezeichnet, die über SQL Server auf die Überwachungsdatei zugegriffen haben.

Wenn ein Überwachungsadministrator die Datei an einen anderen Ort kopiert (zur Archivierung usw.), sollten die Zugriffssteuerungslisten (ACLs) am neuen Ort auf die folgenden Berechtigungen beschränkt werden:

  • Überwachungsadministrator – Lesen/Schreiben
  • Überwachungsleser – Lesen

Es wird empfohlen, Überwachungsberichte auf einer separaten Instanz von SQL Server zu erstellen, z. B. einer Instanz von SQL Server Express, auf die nur Überwachungsadministratoren und -leser Zugriff haben. Durch Verwenden einer separaten Instanz der Datenbank-Engine zur Berichterstellung können Sie dazu beitragen, unautorisierte Benutzer am Zugriff auf die Überwachungsdatei zu hindern.

Zusätzlichen Schutz gegen unautorisierten Zugriff erhalten Sie, indem Sie den Ordner mit der Überwachungsdatei mit der Windows-BitLocker-Laufwerksverschlüsselung oder dem verschlüsselnden Dateisystem von Windows verschlüsseln.

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

Übersicht über die Verwendung der SQL Server-Überwachung

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

Sie können die Windows-Ereignisprotokolle mit dem Windows-Hilfsprogramm Ereignisanzeige lesen. Bei Dateizielen können Sie zum Lesen der Zieldatei entweder den Protokolldatei-Viewer in SQL Server Management Studio oder die fn_get_audit_file-Funktion verwenden.

Im Allgemeinen wird eine Überwachung folgendermaßen erstellt und verwendet:

  1. Erstellen Sie eine Überwachung, und definieren Sie das Ziel.
  2. Erstellen Sie eine Serverüberwachungsspezifikation oder eine Datenbank-Überwachungsspezifikation, die der Überwachung zugeordnet wird. Aktivieren Sie die Überwachungsspezifikation.
  3. Aktivieren Sie die Überwachung.
  4. Lesen Sie die Überwachungsereignisse mithilfe der Windows-Ereignisanzeige, der Protokolldateianzeige oder der fn_get_audit_file Funktion.

Weitere Informationen finden Sie unter Erstellen einer Serverüberwachungs- und Serverüberwachungsspezifikation und Erstellen einer Serverüberwachungs- und Datenbanküberwachungsspezifikation.

Überlegungen

Bei einem Fehler während der Auditinitiierung startet der Server nicht. In diesem Fall kann der Server über die -f Option in der Befehlszeile gestartet werden.

Wenn ein Überwachungsfehler bewirkt, dass der Server heruntergefahren wird oder nicht gestartet wird, weil ON_FAILURE = SHUTDOWN für die Überwachung angegeben ist, wird das MSG_AUDIT_FORCED_SHUTDOWN Ereignis in das Protokoll geschrieben. Da der Server schon beim ersten Auftreten dieser Einstellung heruntergefahren wird, wird das Ereignis nur einmal im Protokoll aufgezeichnet. Das Ereignis wird erst nach der Fehlermeldung für die Überwachung, die das Herunterfahren verursacht, geschrieben. Ein Administrator kann durch ein Prüfungsprozess ausgelöste Herunterfahren umgehen, indem er SQL Server im Einzelbenutzermodus mit dem -m-Flag startet. Wenn Sie im Einzelbenutzermodus starten, wird jede Prüfung, bei der ON_FAILURE = SHUTDOWN für diese Sitzung angegeben ist, als ON_FAILURE = CONTINUE herabgestuft. Wenn SQL Server mit dem -m Flag gestartet wird, wird die MSG_AUDIT_SHUTDOWN_BYPASSED Nachricht in das Fehlerprotokoll geschrieben.

Weitere Informationen zu Dienststartoptionen finden Sie unter Startoptionen des Datenbankmoduldiensts.

Anfügen einer Datenbank mit einer definierten Prüfung

Das Anfügen einer Datenbank, die eine Überwachungsspezifikation mit einer GUID angibt, die nicht auf dem Server vorhanden ist, verursacht eine verwaiste Überwachungsspezifikation. Da eine Überwachung mit einer entsprechenden GUID nicht auf der Serverinstanz vorliegt, werden keine Überwachungsereignisse aufgezeichnet. Um diese Situation zu beheben, verwenden Sie den ALTER DATABASE AUDIT SPECIFICATION Befehl, um die verwaiste Überwachungsspezifikation mit einer vorhandenen Serverüberwachung zu verbinden. Oder verwenden Sie den CREATE SERVER AUDIT Befehl, um eine neue Serverüberwachung mit der angegebenen GUID zu erstellen.

Sie können eine Datenbank mit einer darauf definierten Überwachungsspezifikation an eine andere Edition von SQL Server anfügen, die die SQL Server-Überwachung nicht unterstützt, z. B. SQL Server Express, aber keine Überwachungsereignisse erfasst.

Datenbankspiegelung und SQL Server-Überwachung

Eine Datenbank mit definierter Datenbanküberwachungsspezifikation, die Datenbankspiegelung verwendet, enthält die Datenbanküberwachungsspezifikation. Die folgenden Elemente müssen konfiguriert werden, damit sie auf der gespiegelten SQL-Instanz ordnungsgemäß arbeitet:

  • Der Spiegelserver muss über eine Überwachung mit der gleichen GUID verfügen, damit die Datenbank-Überwachungsspezifikation Überwachungsdatensätze schreiben kann. Dies kann mithilfe des Befehls CREATE AUDIT WITH GUID = <guid-from-source-server-audit>konfiguriert werden.

  • Bei Binärdateizielen muss das Dienstkonto des Spiegelservers über die erforderlichen Berechtigungen für den Speicherort verfügen, an den der Überwachungspfad geschrieben wird.

  • Bei Windows-Ereignisprotokollzielen muss die Sicherheitsrichtlinie für den Computer, auf dem sich der Spiegelserver befindet, den Dienstkontozugriff auf das Sicherheits- oder Anwendungsereignisprotokoll zulassen.

Prüfung von Administratoren

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

Erstellen und Verwalten von Audits mit Transact-SQL

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

Data Definition Language-Anweisungen

Sie können die folgenden DDL-Anweisungen zum Erstellen, Ändern und Löschen von Überwachungsspezifikationen verwenden:

DDL-Anweisungen Beschreibung
ALTER AUTHORIZATION Ändert den Besitz eines sicherungsfähigen Elements.
ALTER DATABASE AUDIT SPECIFICATION Ändert die Spezifikation eines Datenbanküberwachungsobjekts mithilfe der SQL Server Audit-Funktion.
ALTER SERVER-ÜBERWACHUNG Ändert ein Serverüberwachungsobjekt mithilfe der SQL Server Audit-Funktion.
ALTER SERVER AUDIT-SPEZIFIKATION Ändert die Spezifikation eines Serverüberwachungsobjekts mithilfe der SQL Server Audit-Funktion.
DATENBANKÜBERWACHUNGSSPEZIFIKATION ERSTELLEN Erstellt die Spezifikation eines Datenbanküberwachungsobjekts mithilfe der SQL Server Audit-Funktion.
SERVERÜBERWACHUNG ERSTELLEN Erstellt ein Serverüberwachungsobjekt mithilfe von SQL Server Audit.
ERSTELLEN DER SERVERÜBERWACHUNGSSPEZIFIKATION Erstellt die Spezifikation eines Serverüberwachungsobjekts mithilfe der SQL Server Audit-Funktion.
DROP DATABASE AUDIT SPECIFICATION Löscht die Spezifikation eines Datenbanküberwachungsobjekts mithilfe der SQL Server Audit-Funktion.
DROP SERVER-ÜBERWACHUNG Löscht ein Server Audit-Objekt mithilfe der SQL Server Audit-Funktion.
DROP SERVER-ÜBERWACHUNGSSPEZIFIKATION Löscht die Spezifikation eines Serverüberwachungsobjekts mithilfe der SQL Server Audit-Funktion.

Dynamische Sichten und Funktionen

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

Dynamische Sichten und Funktionen Beschreibung
sys.dm_audit_actions Gibt eine Zeile für jede Überwachungsaktion zurück, die im Überwachungsprotokoll festgehalten werden kann, und für jede Überwachungsaktionsgruppe, die als Teil von SQL Server Audit konfiguriert werden kann.
sys.dm_server_audit_status Stellt Informationen über den aktuellen Status der Überwachung bereit.
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 zuordnet.
fn_get_audit_file Gibt Informationen von einer Überwachungsdatei zurück, die von einer Serverüberwachung erstellt wurde.

Katalogansichten

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

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

Berechtigungen

Jede Funktion und jeder Befehl für SQL Server Audit hat eigene Berechtigungsanforderungen.

Um eine Serverüberwachung oder Serverüberwachungsspezifikation zu erstellen, zu ändern oder abzulegen, benötigen Serverprinzipale die ALTER ANY SERVER AUDIT oder die CONTROL SERVER Berechtigung. Zum Erstellen, Ändern oder Löschen einer Datenbank-Auditspezifikation benötigen Datenbankbenutzer die ALTER ANY DATABASE AUDIT-Berechtigung oder die ALTER- oder CONTROL-Berechtigung auf der Datenbank. Darüber hinaus müssen Benutzer die Berechtigung zum Herstellen einer Verbindung mit der Datenbank oder über ALTER ANY SERVER AUDIT oder CONTROL SERVER Berechtigungen verfügen.

Die VIEW ANY DEFINITION Berechtigung bietet Zugriff auf die Überwachungsansichten auf Serverebene und VIEW DEFINITION bietet Zugriff auf die Überwachungsansichten auf Datenbankebene. Die Verweigerung dieser Berechtigungen setzt die Möglichkeit zum Anzeigen der Katalogansichten außer Kraft, auch wenn der Berechtigte über die ALTER ANY SERVER AUDIT oder ALTER ANY DATABASE AUDIT Berechtigungen verfügt.

Weitere Informationen zum Erteilen von Rechten und Berechtigungen finden Sie unter GRANT.

Achtung

Prinzipale in der Sysadmin-Rolle können jede Überwachungskomponente manipulieren, und Prinzipale in der db_owner Rolle können Überwachungsspezifikationen in einer Datenbank manipulieren. Die SQL Server-Überwachung überprüft, ob eine Anmeldung, die eine Überwachungsspezifikation erstellt oder ändert, mindestens über die ALTER ANY DATABASE AUDIT Berechtigung verfügt. Es wird jedoch keine Überprüfung durchgeführt, wenn Sie eine Datenbank anfügen. Sie sollten davon ausgehen, dass alle Datenbanküberwachungsspezifikationen nur so vertrauenswürdig sind wie die Prinzipale in der Rolle Sysadmin oder db_owner.

Artikel Beschreibung
Servereigenschaften – Sicherheitsseite Erklärt, wie die Anmeldeüberwachung für SQL Server aktiviert wird. Die Überwachungsdatensätze werden im Windows-Anwendungsprotokoll gespeichert.
Serverkonfiguration: c2-Überwachungsmodus Erläutert den C2-Sicherheitskompatibilitäts-Überwachungsmodus in SQL Server.
Sicherheitsüberwachung-Ereigniskategorie (SQL Server Profiler) Erklärt die Überwachungsereignisse, die Sie in SQL Server Profiler verwenden können. Weitere Informationen finden Sie unter SQL Server Profiler.
SQL-Ablaufverfolgung Erläutert, wie Sie die SQL-Ablaufverfolgung aus Ihren Anwendungen heraus verwenden können, um Ablaufverfolgungen manuell statt mit dem SQL Server Profiler zu erstellen.
DDL-Trigger Erklärt, wie Sie DDL-Trigger (Data Definition Language) zum Nachverfolgen von Änderungen an den Datenbanken verwenden können.
Microsoft TechNet: SQL Server-TechCenter: SQL Server 2005 – Sicherheit und Schutz Stellt aktuelle Informationen zur SQL Server-Sicherheit bereit.