SQL Server Audit - Amazon Relational Database Service

SQL Server Audit

In Amazon RDS können Sie Microsoft SQL Server-Datenbanken mit dem integrierten Prüfmechanismus von SQL Server überwachen. Sie können Überwachungen und Überwachungsspezifikationen genau so erstellen, wie Sie dies für lokale Datenbankserver tun.

RDS lädt die abgeschlossenen Audit-Protokolle Ihren S3-Bucket mit der von Ihnen bereitgestellten IAM-Rolle hoch. Wenn Sie die Aufbewahrung aktivieren, behält RDS Ihre Audit-Protokolle für den festgelegten Zeitraum auf Ihrer DB-Instance bei.

Weitere Informationen finden Sie unter SQL Server Audit (Datenbank-Engine) in der Microsoft SQL Server-Dokumentation.

Support für SQL Server Audit

In Amazon RDS unterstützen ab SQL Server 2012 alle Editionen von SQL Server Überwachungen auf Serverebene. Die Enterprise-Edition unterstützt zudem Überwachungen auf Datenbankebene. Ab SQL Server 2016 (13.x) SP1 unterstützen alle Editionen sowohl Audits auf Server- als auch auf Datenbankebene. Weitere Informationen finden Sie unter SQL Server-Audit (Datenbank-Engine) in der SQL Server-Dokumentation.

RDS unterstützt die Konfiguration der folgenden Optionseinstellungen für SQL Server Audit.

Optionseinstellung Zulässige Werte Beschreibung
IAM_ROLE_ARN Ein gültiger Amazon Resource Name (ARN) im Format arn:aws:iam::account-id:role/role-name. Der ARN der IAM-Rolle, der Zugriff auf den S3-Bucket gewährt, in dem Sie Ihre Audit-Protokolle speichern möchten. Weitere Informationen finden Sie unter Amazon-Ressourcennamen (ARNs) in der allgemeinen AWS-Referenz.
S3_BUCKET_ARN Ein gültiger ARN im Format arn:aws:s3:::bucket-name oder arn:aws:s3:::bucket-name/key-prefix Der ARN für den S3-Bucket, in dem Sie Ihre Audit-Protokolle speichern möchten.
ENABLE_COMPRESSION true oder false Steuert die Komprimierung des Überwachungsprotokolls. Standardmäßig ist die Komprimierung aktiviert (auf gesetz true).
RETENTION_TIME 0 auf 840 Die Aufbewahrungszeit (in Stunden), die SQL Server-Audit-Protokolle auf der RDS-Instance gespeichert werden. Die Aufbewahrung ist standardmäßig aktiviert.

RDS unterstützt die SQL-Server-Prüfung in allen AWS-Regionen außer Naher Osten (Bahrain).

Hinzufügen von SQL Server Audit zu DB-Instance-Optionen

Die Aktivierung von SQL Server Audit erfordert zwei Schritte: das Aktivieren der Option auf der DB-Instance und das Aktivieren der Funktion in SQL Server. Der Prozess für das Hinzufügen der SQL Server Audit-Option zu einer DB-Instance ist wie folgt:

  1. Erstellen Sie eine neue Optionsgruppe oder kopieren oder ändern Sie eine bestehende Optionsgruppe.

  2. Fügen Sie alle erforderlichen Optionen hinzu und konfigurieren Sie diese.

  3. Ordnen Sie die Optionsgruppe der DB-Instance zu.

Nachdem Sie die SQL Server Audit-Option hinzugefügt haben, ist kein Neustart der DB-Instance erforderlich. Sobald die Optionsgruppe aktiv ist, können Sie Überwachungen erstellen und Audit-Protokolle in Ihrem S3-Bucket speichern.

So fügen Sie SQL Server Audit-Optionen zur Optionsgruppe einer DB-Instance hinzu und konfigurieren sie

  1. Wählen Sie eine der folgenden Optionen aus:

    • Verwenden einer vorhandenen Optionsgruppe.

    • Erstellen einer benutzerdefinierten DB-Optionsgruppe und verwenden der Optionsgruppe. Weitere Informationen finden Sie unter Erstellen einer Optionsgruppe.

  2. Fügen Sie die Option SQLSERVER_AUDIT zur Optionsgruppe hinzu, und konfigurieren Sie die Optionseinstellungen. Weitere Informationen über das Hinzufügen von Optionen finden Sie unter Hinzufügen einer Option zu einer Optionsgruppe.

    • Wenn Sie bereits eine IAM-Rolle mit den erforderlichen Richtlinien haben, können Sie für IAM role (IAM-Rolle) diese Rolle auswählen. Zum Erstellen einer neuen IAM-Rolle wählen Sie Create a New Role (Neue Rolle erstellen) aus. Informationen zu den erforderlichen Richtlinien finden Sie unter Manuelles Erstellen einer IAM-Rolle für SQL Server Audit.

    • Wenn Sie bereits einen S3-Bucket haben, den Sie verwenden möchten, wählen Sie diesen für Select S3 destination (S3-Ziel auswählen) aus.. Um einen S3-Bucket zu erstellen, wählen Sie Create a New S3 Bucket (Einen neuen S3-Bucket erstellen) aus.

    • Lassen die Option Enable Compression (Komprimierung aktivieren) aktiviert, um Überwachungsdateien zu komprimieren. Die Komprimierung ist standardmäßig aktiviert. Deaktivieren Sie das Kontrollkästchen Enable Compression (Komprimierung aktivieren), wenn keine Komprimierung erfolgen soll.

    • Wählen Sie für die Aufbewahrung von Überwachungsdatensätzen auf der DB-Instance die Option Audit log retention (Aufbewahrung von Audit-Protokollen) aus. Geben Sie einen Aufbewahrungszeitraum in Stunden an. Die maximale Aufbewahrungsdauer beträgt 35 Tage.

  3. Wenden Sie die Optionsgruppe auf eine neue oder vorhandene DB-Instance an. Wählen Sie eine der folgenden Optionen aus:

    • Wenn Sie eine neue DB-Instance erstellen, weisen Sie die Optionsgruppe beim Start der Instance zu.

    • Weisen Sie bei einer bestehenden DB-Instance die Optionsgruppe zu, indem Sie die Instance ändern und die neue Optionsgruppe anhängen. Weitere Informationen finden Sie unter Ändern einer Amazon RDS-DB-Instance.

Ändern der SQL Server Audit-Option

Nach dem Aktivieren der SQL Server Audit-Option können Sie die Einstellungen ändern. Weitere Informationen über das Ändern von Optionseinstellungen finden Sie unter Ändern einer Optionseinstellung.

Entfernen von SQL Server Audit aus DB-Instance-Optionen

Sie können die SQL Server Audit-Funktion ausschalten, indem Sie Überwachungen deaktivieren und dann die Option löschen.

So wird die Überwachung entfernt

  1. Deaktivieren Sie alle Überwachungseinstellungen in SQL Server. Fragen Sie die SQL Server-Sicherheitskatalogansichten ab, um herauszufinden, wo Überwachungen durchgeführt werden. Weitere Informationen finden Sie unter Sicherheitskatalogansichten in der Microsoft SQL Server-Dokumentation.

  2. Löschen Sie die SQL Server Audit-Option von der DB-Instance. Wählen Sie eine der folgenden Optionen aus:

    • Löschen Sie die SQL Server Audit-Option aus der Optionsgruppe, die von der DB-Instance verwendet wird. Diese Änderung wirkt sich auf alle DB-Instances aus, die dieselbe Optionsgruppe verwenden. Weitere Informationen finden Sie unter Entfernen einer Option aus einer Optionsgruppe.

    • Ändern Sie die DB-Instance und wählen Sie dann eine Optionsgruppe ohne SQL Server Audit-Option aus. Diese Änderung wirkt sich nur auf die DB-Instance aus, die Sie modifizieren. Sie können die (leere) Standardoptionsgruppe oder eine andere benutzerdefinierte Optionsgruppe angeben. Weitere Informationen finden Sie unter Ändern einer Amazon RDS-DB-Instance.

  3. Nach dem Löschen der SQL Server Audit-Option aus der DB-Instance müssen Sie die Instance nicht neu starten. Entfernen Sie nicht benötigte Überwachungsdateien aus Ihrem S3-Bucket.

Verwenden von SQL Server Audit

Sie können Serverüberwachungen, Serverüberwachungs-Spezifikationen und Datenbanküberwachungs-Spezifikationen auf dieselbe Art steuern, wie Sie dies auch für Ihre lokalen Datenbankserver tun.

Erstellen von Überwachungen

Sie erstellen Serverüberwachungen auf die gleiche Art wie Sie auch Überwachungen für lokale Datenbankserver erstellen. Weitere Informationen zum Erstellen von Serverüberwachungen finden Sie unter CREATE SERVER AUDIT in der Microsoft SQL Server-Dokumentation.

Halten Sie sich an die folgenden Beschränkungen, um Fehler zu vermeiden:

  • Überschreiten Sie nicht die maximale Anzahl unterstützter Serverüberwachungen von 50 pro Instance.

  • Weisen Sie SQL Server an, Daten in eine Binärdatei zu schreiben.

  • Verwenden Sie RDS_ nicht als Präfix im Serverüberwachungsnamen.

  • Legen Sie für FILEPATH die Option D:\rdsdbdata\SQLAudit fest.

  • Geben Sie für MAXSIZE eine Größe zwischen 2 MB und 50 MB an.

  • Konfigurieren Sie nicht MAX_ROLLOVER_FILES oder MAX_FILES.

  • Konfigurieren Sie SQL Server nicht so, dass die DB-Instance heruntergefahren wird, wenn das Schreiben in den Überwachungsdatensatz fehlschlägt.

Erstellen von Überwachungsspezifikationen

Sie erstellen Spezifikationen für Server- und Datenbanküberwachungen auf dieselbe Art und Weise, wie Sie dies auch für lokale Datenbankserver tun. Informationen zum Erstellen von Überwachungsspezifikationen finden Sie unter CREATE SERVER AUDIT SPECIFICATION und CREATE DATABASE AUDIT SPECIFICATION in der Microsoft SQL Server-Dokumentation.

Verwenden Sie RDS_ nicht als Präfix im Namen der Spezifikation für die Server- oder Datenbanküberwachung, um Fehler zu vermeiden.

Anzeigen von Audit-Protokollen

Ihre Audit-Protokolle werden in gespeicher D:\rdsdbdata\SQLAudit.

Nachdem SQL das Schreiben in die Audit-Protokolldatei abgeschlossen hat—nachdem die maximale Dateigröße erreicht wurde— lädt Amazon RDS die Datei in den S3-Bucket. Wenn die Aufbewahrung aktiviert ist, verschiebt Amazon RDS die Datei in den Aufbewahrungsordner: D:\rdsdbdata\SQLAudit\transmitted.

Informationen zu dem Konfigurieren der Aufbewahrung finden Sie unter Hinzufügen von SQL Server Audit zu DB-Instance-Optionen.

Überwachungsdatensätze werden auf der DB-Instance aufbewahrt, bis die Audit-Protokolldatei hochgeladen wurde. Sie können die Überwachungsdatensätze anzeigen, wenn Sie den folgenden Befehl ausführen.

SELECT * FROM msdb.dbo.rds_fn_get_audit_file ('D:\rdsdbdata\SQLAudit\*.sqlaudit' , default , default )

Sie können denselben Befehl zum Anzeigen der Überwachungsdatensätze in Ihrem Aufbewahrungsordner verwenden, indem Sie den Filter in änder D:\rdsdbdata\SQLAudit\transmitted\*.sqlaudit.

SELECT * FROM msdb.dbo.rds_fn_get_audit_file ('D:\rdsdbdata\SQLAudit\transmitted\*.sqlaudit' , default , default )

Verwenden von SQL Server Audit mit Multi-AZ-Instances

Bei Multi-AZ-Instances ähnelt der Prozess zum Senden von Audit-Protokolldateien an Amazon S3 dem Prozess bei Single-AZ-Instances. Es gibt jedoch einige wichtige Unterschiede:

  • Objekte der Spezifikation der Datenbanküberwachung werden auf allen Knoten repliziert.

  • Serverüberwachungen und Spezifikationen für Serverüberwachungen werden nicht auf sekundäre Knoten repliziert. Stattdessen müssen Sie diese manuell erstellen oder ändern.

So werden Serverüberwachungen oder eine Spezifikation für die Serverüberwachung von beiden Knoten erfasst:

  1. Erstellen Sie eine Serverüberwachung oder eine Spezifikation für die Serverüberwachung auf dem primären Knoten.

  2. Führen Sie ein Failover auf den sekundären Knoten durch und erstellen Sie eine Serverüberwachung oder eine Spezifikation für die Serverüberwachung mit demselben Namen und derselben GUID auf dem sekundären Knoten. Geben Sie die GUID mit dem Parameter AUDIT_GUID an.

Konfigurieren eines S3-Buckets

Die Audit-Protokolldateien werden automatisch von der DB-Instance in Ihren S3-Bucket hochgeladen. Für den S3-Bucket, den Sie als Ziel für die Überwachungsdateien verwenden, gelten folgende Einschränkungen:

  • Er muss sich in derselben AWS-Region wie die DB-Instance befinden.

  • Er darf nicht öffentlich zugänglich sein.

  • Es kann S3 Object Lock nicht verwenden.

  • Der Bucket-Eigentümer muss auch der Eigentümer der IAM-Rolle sein.

Der Zielschlüssel, der zum Speichern der Daten verwendet wird, unterliegt folgendem Benennungsschema: bucket-name/key-prefix/instance-name/audit-name/node_file-name.ext

Anmerkung

Sie legen sowohl den Bucket-Namen als auch die Schlüsselpräfixwerte mit der Optionseinstellung S3_BUCKET_ARN fest.

Das Schema besteht aus den folgenden Elementen:

  • bucket-name – Der Name des S3-Buckets.

  • key-prefix – Das benutzerdefinierte Schlüsselpräfix, das Sie für die Audit-Protokolle verwenden möchten.

  • instance-name – Der Name Ihrer Amazon RDS-Instance.

  • audit-name – Der Namen der Überwachung.

  • node – Die Kennung des Knotens, der die Quelle der Audit-Protokolle ist (node1 oder node2). Es gibt einen Knoten für die Single-AZ-Instance und zwei Replikationsknoten für eine Multi-AZ-Instance. Dies sind keine primären und sekundären Knoten, da sich die Rolle für primär und sekundär mit der Zeit ändert. Stattdessen ist die Knoten-ID eine einfache Beschriftung.

    • node1 – Der erste Replikationsknoten (bei Single-AZ gibt es nur einen Knoten).

    • node2 – Der zweite Replikationsknoten (bei Multi-AZ gibt es zwei Knoten).

  • file-name – Der Name der Zieldatei. Der Dateiname wird von SQL Server unverändert übernommen.

  • ext – Die Erweiterung der Datei (zip oder sqlaudit):

    • zip – Bei aktivierter Komprimierung (Standard).

    • sqlaudit – Bei nicht aktivierter Komprimierung.

Manuelles Erstellen einer IAM-Rolle für SQL Server Audit

Wenn Sie eine neue Option erstellen, generiert die AWS Management Console in der Regel die IAM-Rolle und die IAM-Vertrauensrichtlinie für Sie. Sie können jedoch manuell eine neue IAM-Rolle für die Verwendung mit SQL Server Audits erstellen, sodass Sie diese an mögliche weitere Anforderungen anpassen können. Dazu erstellen Sie eine IAM-Rolle und delegieren Berechtigungen, sodass der Amazon RDS-Service Ihren Amazon S3-Bucket verwenden kann. Beim Anlegen dieser IAM-Rolle geben Sie Vertrauens- und Berechtigungsrichtlinien an. Die Vertrauensrichtlinie erlaubt es Amazon RDS, diese Rolle zu übernehmen. Die Berechtigungsrichtlinie definiert die Aktionen, die über diese Rolle ausgeführt werden können. Weitere Informationen finden Sie unter Erstellen einer Rolle zum Delegieren von Berechtigungen an einen AWS-Service im AWSIdentity and Access Management-Benutzerhandbuch.

Sie können anhand der Beispiele in diesem Abschnitt die benötigten Vertrauens- und Berechtigungsrichtlinien erstellen.

Das folgende Beispiel zeigt eine Vertrauensrichtlinie für SQL Server Audit. Die Richtlinie verwendet den Service-Prinzipal rds.amazonaws.com, um RDS das Schreiben in den S3-Bucket zu erlauben. EinService-Prinzipal ist eine Kennung, die verwendet wird, um einem Service Berechtigungen zu erteilen. Wann immer Sie auf diese Art Zugriff auf rds.amazonaws.com gewähren, erlauben Sie RDS, eine Aktion in Ihrem Namen auszuführen. Weitere Informationen zu Service-Prinzipalen finden Sie unter AWSJSON-Richtlinienelemente: Prinzipal.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Im folgenden Beispiel einer Berechtigungsrichtlinie für SQL Server Audit wird ein Amazon-Ressourcenname (ARN) für den Amazon S3-Bucket angegeben. Sie können ARNs zum Identifizieren eines bestimmten Kontos, Benutzers oder einer bestimmten Rolle verwenden, auf das/den/die Sie Zugriff gewähren möchten. Weitere Informationen zur Verwendung von ARN finden Sie unter Amazon-Ressourcennamen (ARN).

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketACL", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::bucket_name" }, { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::bucket_name/key_prefix/*" } ] }
Anmerkung

Die s3:ListAllMyBuckets-Aktion ist erforderlich, um zu überprüfen, ob dasselbe AWS-Konto Eigentümer sowohl der S3-Bucket als auch der SQL Server DB-Instance ist. Die Aktion listet die Namen der Buckets in dem Konto auf.

S3-Bucket-Namespaces sind global. Wenn Sie Ihren Bucket versehentlich löschen, kann ein anderer Benutzer einen Bucket mit demselben Namen in einem anderen Konto erstellen. Dann werden die SQL Server-Prüfungsdaten in den neuen Bucket geschrieben.