AWS RDS PostgreSQL Audit Protokolle in DataSunrise
Heutzutage ist es fast nicht überraschend, eine weitere Schlagzeile zu Datenverletzungen oder Datenschutz zu sehen. Dies betrifft Sie persönlich als Kunde dieser Unternehmen – Sie möchten, dass jemand gut auf Ihre Daten aufpasst. Es betrifft Sie auch beruflich; als jemand, der mit Daten arbeitet, sind Sie dieser ‘Jemand’ für Ihre Kunden. Gute Audit-Protokollierung ist ein wichtiges Werkzeug im Arsenal eines sicherheitsbewussten Datenprofis. In diesem Artikel besprechen wir RDS PostgreSQL Audit-Protokolle und wie man sie mit DataSunrise einrichtet.
Die allgemeine Idee der Datenbanküberwachung ist zu wissen, wer wann auf Ihre Datenbanktabellen zugegriffen hat und welche Änderungen daran vorgenommen wurden. Theoretisch können alle diese Anforderungen mit nativen Datenbank-Audit-Mechanismen erfüllt werden. Dieser Artikel wird sich auch auf das native Audit einer AWS RDS PostgreSQL-Datenbank konzentrieren.
Es gibt verschiedene Parameter, die Sie einstellen können, um Aktivitäten auf Ihrer AWS RDS PostgreSQL-Datenbank zu protokollieren. Grundlegende Anweisungsprotokollierung kann durch die standardmäßige Protokollierungsfunktion mit log_statement = all bereitgestellt werden. Dies ist für Überwachungszwecke und andere Verwendungen akzeptabel, bietet jedoch nicht den Detailgrad, der allgemein für ein Audit erforderlich ist. Es reicht nicht aus, nur eine Liste aller gegen die Datenbank durchgeführten Operationen zu haben. Es muss auch möglich sein, bestimmte Anweisungen zu finden, die für einen Prüfer von Interesse sind. Die standardmäßige Protokollierungsfunktion zeigt, was der Benutzer angefordert hat. Für detailliertere und strukturierte Informationen können Sie die pgaudit-Erweiterung verwenden (https://github.com/pgaudit/pgaudit), die Sie ebenfalls konfigurieren können. Das pgaudit-Plugin bietet detaillierte Sitzungs- und Objektprüfprotokollierung für Amazon RDS PostgreSQL. Nachdem Sie die pgaudit-Erweiterung aktiviert haben, können Sie den Parameter pgaudit.log so konfigurieren, dass bestimmte Datenbanken, Rollen, Tabellen und Spalten überprüft werden.
Aktivieren der pgaudit-Erweiterung auf einer AWS RDS-Instanz mit PostgreSQL
- Erstellen Sie eine RDS-Parametergruppe und ändern Sie die Standardparameterwerte in die unten gezeigten Werte:
Parametername Wert setzen Log_checkpoints (optional) 0 log_connections 1 log_destination csvlog log_disconnections 1 pgaudit.log all pgaudit.role rds_pgaudit shared_preload_libraries pg_stat_statements, pgaudit Weisen Sie die Parametergruppe Ihrer RDS PostgreSQL-Datenbankinstanz zu (RDS-Instanz → Konfiguration → Ändern → zusätzliche Konfiguration der Datenbank → DB-Parametergruppe);
Verbinden Sie sich mit Ihrer RDS PostgreSQL-Datenbank mithilfe eines Clients (psql, PgAdmin usw.) und führen Sie die folgende Abfrage aus, um eine Datenbankrolle namens rds_pgaudit zu erstellen:
CREATE ROLE rds_pgaudit;
Starten Sie Ihre RDS Postgres-Datenbankinstanz neu, um die Änderungen anzuwenden (RDS-Instanz → Aktion → Neustart)
Stellen Sie sicher, dass pgAudit initialisiert wurde, indem Sie den folgenden Befehl ausführen:
show shared_preload_libraries;
Sie sollten die folgende Antwort erhalten:
shared_preload_libraries -------------------------- Rdsutils,pg_stat_statements,pgaudit
Erstellen Sie die pgaudit-Erweiterung, indem Sie den folgenden Befehl ausführen:
CREATE EXTENSION pgaudit;
Stellen Sie sicher, dass die pgaudit.role auf rds_pgaudit gesetzt ist, indem Sie den folgenden Befehl ausführen:
SHOW pgaudit.role;
Sie sollten die folgende Antwort erhalten:
Pgaudit.role ------------------ Rds_pgaudit
Sie können Datenbankprotokolldateien Ihrer DB-Engine mithilfe der AWS-Managementkonsole anzeigen:
- Wählen Sie in der Amazon RDS-Konsole den Namen der PostgreSQL-DB-Instanz aus, die die gewünschte Protokolldatei enthält.
- Wählen Sie die Registerkarte Protokolle & Ereignisse.
- Scrollen Sie nach unten zum Abschnitt Protokolle.
- Wählen Sie im Abschnitt Protokolle das Protokoll aus, das Sie anzeigen möchten, und wählen Sie dann Anzeigen.
Zum Testen der Audit-Protokollierung führen Sie mehrere Befehle aus, die Sie auditieren möchten. Zum Beispiel könnten Sie den folgenden Befehl ausführen:
INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES (7, 1, 68611, 1557, CURRENT_TIMESTAMP);
Die Datenbankprotokolle sollten einen Eintrag ähnlich dem folgenden enthalten.
... 2020-12-08 11:05:14.093 UTC,"postgres","pg_test",9937,"18.222.214.187:45210",5fcf5de8.26d1,99, "INSERT",2020-12-08 11:05:12 UTC,7/1305,5563,LOG,00000,"AUDIT: SESSION,97,1,WRITE,INSERT,,,"" INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES (7, 1, 68611, 1557, CURRENT_TIMESTAMP); "",<not logged>",,,,,,,,,"" ...
Schauen wir uns das Format der pgAudit-Protokolle an:
Die CLASS kategorisiert die Art der Anweisung (READ, WRITE, DDL usw.) und COMMAND gibt an, welcher Unterklasse sie angehört. Das STATEMENT-Feld enthält den vollständigen Text des INSERT INTO und den vollqualifizierten Namen einer bestimmten Tabelle.
Wir müssen darauf hinweisen, dass aus der Sicht des Prüfers solche nativen Audit-Protokolle ziemlich schwer zu lesen und zu analysieren sind. Native Audits benötigen zusätzliche Software/Ressourcen (wie DataSunrise) zum Parsen und Verarbeiten, um benutzerfreundliche Audit-Trails zu erstellen. Außerdem bedeutet native Überwachung eine zusätzliche Belastung des Datenbankservers, große Audit-Archive erfordern Datenbankspeicher und die Audit-Daten werden nicht im von den Prüfern und Sicherheitsteams erforderlichen Format erfasst. Mit anderen Worten, Prüfer benötigen Protokolle, die Informationen in einer sinnvollen Weise präsentieren, und native Datenbankmechanismen können ihnen nicht die erforderliche Art von Protokollen liefern.
Hier kommt DataSunrise ins Spiel
Basierend auf den oben erwähnten Einschränkungen nativer Audit-Mechanismen werfen wir einen genaueren Blick auf die Fähigkeiten von DataSunrise. DataSunrise kann in PostgreSQL Trailing DB Audit Logs Konfigurationen eingesetzt werden. Diese Option ermöglicht es Ihnen, Auditergebnisse zu erhalten, die von PostgreSQL-nativen Audit-Tools gesammelt wurden.
Die PostgreSQL-Datenbank führt Audits mit ihren integrierten Überwachungsmechanismen durch und speichert Auditergebnisse je nach gewählter Konfiguration in einer speziellen CSV-Datei. Dann stellt DataSunrise eine Verbindung zur Basis für weitere Sitzungsinformationen her, lädt die Audit-Daten vom Datenbankserver mittels der RDS-API herunter und überträgt sie zur weiteren Analyse an den Audit-Speicher. In erster Linie ist diese Konfiguration für Amazon RDS-Datenbanken gedacht, da DataSunrise Sniffing auf RDS nicht unterstützt. Dieser Betriebsmodus hat drei Hauptnachteile:
- Wenn der Datenbankadministrator Zugriff auf die Datenbankprotokolle hat, kann er sie löschen.
- Native Audits wirken sich negativ auf die Datenbankleistung aus.
- Es ist nicht möglich herauszufinden, welche Daten für eine bestimmte Anforderung empfangen wurden.
Konfigurieren von PostgreSQL Trailing DB Audit-Protokollen
Um Audit Trail zum Überprüfen von Amazon RDS PostgreSQL-Datenbankabfragen zu verwenden, müssen Sie Folgendes tun:
- Weisen Sie Ihrer EC2-Instanz mit DataSunrise-Instanzen geeignete IAM-Rollen zu:
Erstellen Sie eine AWS IAM-Richtlinie mit folgendem JSON:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "rds:DownloadDBLogFilePortion", "rds:DescribeDBLogFiles", "rds:DownloadCompleteDBLogFile" ], "Resource": "arn:aws:rds:<region>:<012345678901>:db:<db-instance-name>" } ] }
- Hängen Sie die Richtlinie an Ihre IAM-Rolle an (Richtlinien → Richtlinienaktionen → Anhängen)
- Hängen Sie die IAM-Rolle an Ihre DataSunrise-EC2-Maschine an (EC2-Maschine → Instanzeinstellungen → IAM-Rolle anhängen/ersetzen)
- Verbinden Sie sich mit der Web-Konsole von DataSunrise.
- Erstellen Sie ein Datenbankprofil in den Konfigurationen → Datenbanken. Wählen Sie im Dropdown-Menü Modus die Option Trailing der DB-Audit-Protokolle und füllen Sie alle erforderlichen Felder aus:
Interface-Element Beschreibung Server DataSunrise-Server Formattyp Format der Datei zum Speichern von Audit-Daten Region AWS-Region, in der sich Ihre Zieldatenbank befindet DB-Identifier Name der Datenbankinstanz Authentifizierungsmethode - IAM-Rolle: Verwenden Sie die angehängte IAM-Rolle zur Authentifizierung
- Regulär: Authentifizierung mit AWS Access/Secret Key
Hole Daten mit der folgenden Periodizität (Sekunden) Standardmäßig 10
- Gehen Sie zum Audit und konfigurieren Sie eine Audit-Regel für PostgreSQL-Instanz.
- Stellen Sie sicher, dass keine laufenden Sitzungen vorhanden sind.
- Verbinden Sie sich direkt mit der PostgreSQL-Datenbank und führen Sie Abfragen aus.
- Gehen Sie zu Audit → Transaktionspfade, um die Auditergebnisse zu überprüfen.
Warum ist DataSunrise bei der Verwaltung von PostgreSQL-Audit-Protokollen nützlich?
Die Daten-Audit-Komponente von DataSunrise ist in der Lage, alle Benutzeraktionen und Abfragen, die an die Zieldatenbank gesendet werden, zu auditieren. Die Überprüfung hängt einfach nicht vom Datenbank-Benutzertyp ab. Daher kann es sowohl Abfragen regulärer Benutzer als auch privilegierter Benutzer überprüfen.
DataSunrise speichert seine Auditergebnisse in einer integrierten SQLite-Datenbank oder in einer externen Datenbank wie PostgreSQL, MS SQL Server, Vertica, Redshift, Aurora MySQL, MySQL. DS ermöglicht es Ihnen auch, Datenbank-Audit-Protokolle zu filtern, zu organisieren und Berichte basierend auf ihnen zu erstellen, die einheitlich für alle Datenbanken sind. Dank der fortschrittlichen Berichtskomponente Report Gen können Sie Ihre Auditergebnisse als anpassbaren Bericht präsentieren, der den Anforderungen Ihres Prüfers entspricht. Sie können auch Berichte periodisch nach Zeitplan erstellen.