AWS RDS PostgreSQL Prüfprotokolle in DataSunrise
Heute ist es fast nicht mehr überraschend, eine weitere Schlagzeile zu Datenpannen oder zum Datenschutz zu lesen. Dies betrifft Sie persönlich als Kunden dieser Unternehmen – Sie möchten, dass jemand gut auf Ihre Daten achtet. Es betrifft Sie auch beruflich; als jemand, der mit Daten arbeitet, sind Sie dieser „jemand“ für Ihre Kunden. Eine gute Prüfprotokollierung ist ein wichtiges Werkzeug im Arsenal eines sicherheitsbewussten Datenexperten. In diesem Artikel besprechen wir die RDS PostgreSQL Prüfprotokolle und wie Sie diese mit DataSunrise einrichten.
Die Grundidee des Datenbank-Audits besteht darin zu wissen, wer wann auf Ihre Datenbanktabellen zugegriffen und welche Änderungen an ihnen vorgenommen wurde. Theoretisch können alle diese Anforderungen mit den nativen Audit-Mechanismen der Datenbank erfüllt werden. Dieser Artikel konzentriert sich auch auf das native Auditing einer AWS RDS PostgreSQL-Datenbank.
Es gibt verschiedene Parameter, die Sie festlegen können, um Aktivitäten in Ihrer AWS RDS PostgreSQL-Datenbank zu protokollieren. Eine grundlegende Protokollierung von SQL-Anweisungen kann durch die Standardprotokollierungsfunktion mit log_statement = all erfolgen. Dies ist für Überwachungszwecke und andere Anwendungen akzeptabel, liefert jedoch nicht den Detailgrad, der üblicherweise für ein Audit erforderlich ist. Es reicht nicht aus, eine Liste aller gegen die Datenbank durchgeführten Vorgänge zu haben. Es muss auch möglich sein, bestimmte Anweisungen zu finden, die für einen Auditor von Interesse sind. Die Standardprotokollierung zeigt an, was der Benutzer angefordert hat. Für detailliertere und strukturiertere Informationen können Sie die pgaudit-Erweiterung (pgAudit auf GitHub) verwenden, die Sie ebenfalls konfigurieren können. Das pgaudit-Plugin bietet eine detaillierte Sitzungs- und Objekt-Auditprotokollierung für Amazon RDS PostgreSQL. Nachdem Sie die pgAudit-Erweiterung aktiviert haben, können Sie den Parameter pgaudit.log konfigurieren, um spezifische Datenbanken, Rollen, Tabellen und Spalten zu auditieren.
Aktivierung der pgAudit-Erweiterung auf einer AWS RDS-Instanz mit PostgreSQL
- Erstellen Sie eine RDS-Parametergruppe und ändern Sie die Standardparameterwerte auf die unten angegebenen Werte:
Parametername Zustellwert 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 über einen Client (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 ist, 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 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 die Datenbankprotokolldateien für Ihre DB-Engine über die AWS Management Console anzeigen:
- Wählen Sie in der Amazon RDS-Konsole den Namen der PostgreSQL-DB-Instanz, die die Protokolldatei enthält, die Sie anzeigen möchten.
- Wählen Sie den Tab “Protokolle & Ereignisse”.
- Scrollen Sie zum Abschnitt “Protokolle”.
- Wählen Sie im Abschnitt “Protokolle” das Protokoll aus, das Sie anzeigen möchten, und klicken Sie dann auf “Anzeigen”.
Um die Prüfprotokollierung zu testen, führen Sie mehrere Befehle aus, die Sie auditieren möchten. Beispielsweise 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 enthalten, der dem folgenden ähnelt.
... 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>",,,,,,,,,"" ...
Betrachten wir das Format der pgAudit-Protokolle:

Die KLASSE kategorisiert die Art der Anweisung (READ, WRITE, DDL usw.) und COMMAND gibt an, welcher Unterkategorie sie angehört. Das Feld STATEMENT enthält den vollständigen Text des INSERT INTO sowie den vollständig qualifizierten Namen einer bestimmten Tabelle.
Wir müssen darauf hinweisen, dass solche nativen Auditprotokolle aus der Sicht des Auditors ziemlich schwer zu lesen und zu analysieren sind. Das native Auditing erfordert zusätzliche Software/Ressourcen (wie DataSunrise) zur Analyse und Verarbeitung, um benutzerfreundliche Prüfpfade zu erstellen. Darüber hinaus bedeutet natives Auditing eine zusätzliche Belastung des Datenbankservers, große Auditarchive erfordern Datenbankspeicher, und die Audit-Daten werden nicht im von den Auditoren und Sicherheitsteams geforderten Format erfasst. Anders ausgedrückt benötigen Auditoren Protokolle, die Informationen in einer aussagekräftigen Weise präsentieren, und native Datenbankmechanismen können ihnen nicht den erforderlichen Protokolltyp liefern.
Hier kommt DataSunrise ins Spiel
Basierend auf den oben genannten Einschränkungen der nativen Audit-Mechanismen werfen wir einen genaueren Blick auf die Möglichkeiten von DataSunrise. DataSunrise kann in Konfigurationen für PostgreSQL Trailing DB Audit Logs eingesetzt werden. Diese Option ermöglicht es Ihnen, die Audit-Ergebnisse zu erhalten, die von den nativen Audit-Tools von PostgreSQL gesammelt werden.

Die PostgreSQL-Datenbank führt Auditing mithilfe ihrer integrierten Audit-Mechanismen durch und speichert die Audit-Ergebnisse je nach ausgewählter Konfiguration in einer dedizierten CSV-Datei. Anschließend stellt DataSunrise eine Verbindung zur Basis her, um weitere Sitzungsinformationen abzurufen, lädt die Audit-Daten vom Datenbankserver mithilfe der RDS API herunter und übergibt sie an den Audit Storage zur weiteren Analyse. In erster Linie ist diese Konfiguration für den Einsatz bei Amazon RDS-Datenbanken vorgesehen, da DataSunrise kein Sniffing auf RDS unterstützt. Dieser Betriebsmodus hat drei wesentliche Nachteile:
- Wenn der Datenbankadministrator Zugriff auf die Datenbankprotokolle hat, kann er diese löschen.
- Natives Auditing wirkt sich negativ auf die Datenbankleistung aus.
- Es ist unmöglich festzustellen, welche Daten für eine bestimmte Anfrage abgerufen wurden.
Konfiguration der PostgreSQL Trailing DB Audit Logs
Um Audit Trail zum Auditieren von Abfragen in Amazon RDS PostgreSQL-Datenbanken zu verwenden, müssen Sie Folgendes tun:
- Weisen Sie Ihrer EC2-Instanz mit DataSunrise-Instanzen die entsprechenden 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>" } ] }- Fügen Sie die Richtlinie Ihrer IAM-Rolle hinzu (Richtlinien → Richtlinienaktionen → Anhängen)
- Weisen Sie die IAM-Rolle Ihrer DataSunrise-EC2-Maschine zu (EC2-Maschine → Instanzeinstellungen → IAM-Rolle anhängen/ersetzen)
- Verbinden Sie sich mit der Web-Konsole von DataSunrise.
- Erstellen Sie ein Datenbankprofil in Konfigurationen → Datenbanken. Wählen Sie in der Dropdown-Liste “Modus” die Option “Trailing the db audit logs” aus und füllen Sie alle erforderlichen Felder aus:
Interface-Element Beschreibung Server DataSunrise-Server Format Typ Format der Datei, in der die Audit-Daten gespeichert werden Region AWS-Region, in der sich Ihre Zieldatenbank befindet DB Identifier Name der Datenbankinstanz Authentifizierungsmethode - IAM-Rolle: Verwenden Sie die anhängende IAM-Rolle zur Authentifizierung
- Regular: Authentifizierung mit AWS Access/Secret Key
Daten anfordern mit folgender Periodizität (Sekunden) Standardmäßig 10

- Gehen Sie zum Audit und konfigurieren Sie eine Audit-Regel für die PostgreSQL-Instanz.
- Überprüfen Sie, dass keine aktiven Sitzungen vorhanden sind.
- Verbinden Sie sich direkt mit der PostgreSQL-Datenbank und führen Sie beliebige Abfragen aus.
- Gehen Sie zu Audit → Transactional Trails, um die Auditergebnisse zu überprüfen.
Warum ist DataSunrise nützlich beim Verwalten von PostgreSQL Prüfprotokollen?
Die Data Audit-Komponente von DataSunrise ist in der Lage, ALLE Benutzeraktionen und -abfragen, die an die Zieldatenbank gesendet werden, zu auditieren. Die Auditierung hängt nicht vom Datenbank-Benutzertyp ab. Daher kann sie sowohl die Abfragen regulärer Benutzer als auch die Abfragen privilegierter Benutzer auditieren.
DataSunrise speichert seine Audit-Ergebnisse in einer integrierten SQLite-Datenbank oder in einer externen Datenbank wie PostgreSQL, MS SQL Server, Vertica, Redshift, Aurora MySQL, MySQL. DS ermöglicht es auch, Datenbank-Auditprotokolle zu filtern, zu organisieren und daraus einheitliche Berichte für alle Datenbanken zu erstellen. Dank der fortschrittlichen Reporting-Komponente Report Gen können Sie Ihre auditieren Daten als anpassbaren Bericht präsentieren, der für die Bedürfnisse Ihres Auditors geeignet ist. Außerdem können Sie periodisch geplante Berichte erstellen.