Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
Wie verwende ich die pgAudit-Erweiterung, um meine Amazon RDS für PostgreSQL-DB-Instance zu überwachen?
Ich möchte alle meine Datenbanken, Rollen, Beziehungen und Spalten in meiner Amazon Relational Database Service (Amazon RDS) für PostgreSQL-DB-Instance überwachen. Außerdem möchte ich die pgAudit-Erweiterung so konfigurieren, dass sie verschiedenen Rollen unterschiedliche Überwachungsebenen bereitstellt.
Lösung
Es gibt verschiedene Parameter, die du festlegen kannst, um Aktivitäten auf der RDS für PostgreSQL-DB-Instance zu protokollieren. Nachdem du die pgAudit-Erweiterung aktiviert hast, kannst du den Parameter pgaudit.log so konfigurieren, dass bestimmte Datenbanken, Rollen, Tabellen und Spalten überwacht werden. Stelle zunächst den Parameterwert pgaudit.log in der Parametergruppe für eine Datenbank, Rolle oder Tabelle auf keine ein:
> show pgaudit.log;+---------------+ | pgaudit.log | |---------------| | none | +---------------+ SHOW
Verwendung der pgAudit-Erweiterung zur Überwachung von Datenbanken
Führe die folgenden Schritte aus:
- Führe den folgenden Befehl aus, um die Systemkonfiguration für den Parameter pgaudit.log nur in deiner Datenbank zu überschreiben:
Hinweis: Ersetze test_database durch deinen Datenbanknamen. Der vorhergehende Befehl ändert den Wert des Parameters pgaudit.log in Alle, sodass pgAudit nur die test_database überwacht.ALTER DATABASE test_database set pgaudit.log='All'; - Stelle eine Verbindung zur Datenbank her, und führe dann die folgende Abfrage aus, um die Datenbank zu überwachen:
Hinweis: Ersetze aud_table durch die Tabelle, die du überwachen möchtest.select * from aud_table;
Die Ausgabe des Fehlerprotokolls ähnelt der folgenden:2019-06-25 19:21:35 UTC:192.0.2.7(39330):testpar@test_database:[21638]:LOG: AUDIT: SESSION,2,1,READ,SELECT,,,select * from test_table;,<not logged>
Verwendung der pgAudit-Erweiterung zur Überwachung von Rollen
Du kannst die Rollen im Parameter pgaudit.log auch so ändern, dass sie andere Werte haben. Führe die folgenden Befehle aus, um unterschiedliche Werte für den Parameter pgaudit.log für deine Rollen festzulegen:
ALTER ROLE test1 set pgaudit.log='All';
ALTER ROLE test2 set pgaudit.log='DDL';
Hinweis: Ersetze test1 und test2 durch deinen Rollennamen.
Führe die folgende Abfrage aus, um zu überprüfen, ob die Änderungen auf Rollenebene vorgenommen wurden:
> select rolname,rolconfig from pg_roles where rolname in ('test1',' test2'); +-----------+----------------------+ | rolname | rolconfig | |-----------+----------------------| | test1 | [u'pgaudit.log=All'] | | test2 | [u'pgaudit.log=DDL'] | +-----------+----------------------+ SELECT 2 Time: 0.010s
Hinweis: Ersetze test1 und test2 durch deinen Rollennamen.
Führe die folgenden Abfragen für jede Rolle aus, um das pgAudit-Protokollierungsverhalten der Rollen zu testen:
CREATE TABLE test_table (id int);CREATE TABLE
select * from test_table;id ---- (0 rows)
Die Protokollausgabe für zwei verschiedene Rollen ähnelt den folgenden Beispielen.
test1:
...2019-06-26 14:51:12 UTC:192.0.2.7(44754):test1@postgres:[3547]:LOG: AUDIT: SESSION,1,1,DDL,CREATE TABLE,,,CREATE TABLE test_table (id int);,<not logged> 2019-06-26 14:51:18 UTC:192.0.2.7(44754):test1@postgres:[3547]:LOG: AUDIT: SESSION,2,1,READ,SELECT,,,select * from test_table;,<not logged> ...
test2:
...2019-06-26 14:53:54 UTC:192.0.2.7(44772):test2@postgres:[5517]:LOG: AUDIT: SESSION,1,1,DDL,CREATE TABLE,,,CREATE TABLE test_table (id int);,<not logged> ...
In der Beispielausgabe test2 gibt es keinen Überwachungseintrag für die Abfrage SELECT, da der Parameter pgaudit.log für test2 nur auf DDL gesetzt ist. Mit diesem Test wird überprüft, ob die Rolle test2 nur DDL-Operationen protokolliert.
Verwendung der pgAudit-Erweiterung zur Überwachung von Tabellen
Hinweis: Die pgAudit-Erweiterung kann nur die Befehle SELECT, INSERT, UPDATE und DELETE protokollieren. Die Erweiterung kann TRUNCATE nicht überwachen.
Um die Tabellen zu überwachen, führe den folgenden Befehl aus, um der Rolle rds_pgaudit Zugriff auf die Befehle zu gewähren:
grant select, delete on test_table to rds_pgaudit;
Hinweis: Der vorhergehende Befehl ermöglicht der Rolle rds_pgaudit den Zugriff auf SELECT und DELETE. Ersetze select und delete durch die Befehle, die du überwachen möchtest.
Führe eine Anweisung auf der Tabelle aus, um dich zu vergewissern, dass die Überwachungsprotokollierung richtig konfiguriert ist. Der folgende Beispielbefehl führt eine DELETE-Anweisung auf test_table aus:
Time: 0.008s DELETE 1 >delete from test_table where pid=5050;
Die Ausgabe für die DELETE-Anweisung ähnelt der folgenden:
2019-06-25 17:13:02UTC:192.0.2.7(41810):postgresql104saz@postgresql104saz:[24976]:LOG: AUDIT: OBJECT,3,1,WRITE,DELETE,TABLE,public.t1,delete from test_table where pid=5050,<not logged>
Verwendung der pgAudit-Erweiterung zur Überwachung von Spalten
Du kannst Spalten für eine bestimmte Tabelle überwachen, z. B. wenn vertrauliche Daten nur in einer Spalte enthalten sind. Mit dem folgenden Beispielbefehl wird eine Gehaltsabrechnungstabelle mit einer sensiblen Spalte mit Gehaltsdaten erstellt, die überwacht werden müssen:
create table payroll( name text, salary text );
Um die Gehaltsspalte zu überwachen, führe zunächst den folgenden Befehl aus, um der Rolle rds_pgaudit Zugriff auf SELECT in der Spalte salary (Gehalt) zu gewähren:
grant select (salary) on payroll to rds_pgaudit;
Führe dann den folgenden Befehl aus, um alle Spalten in der Tabelle auszuwählen (SELECT), einschließlich der Spalte salary:
select * from payroll;
Wenn die SELECT-Abfrage die Spalte salary nicht enthält, überwacht pgAudit diese Spalte nicht.
In der folgenden Beispielausgabe überwacht pgAudit jedes SELECT, das die Spalte salary enthält:
2019-06-25 18:25:02 UTC:192.0.2.7(42056):postgresql104saz@postgresql104saz:[4118]:LOG: AUDIT: OBJECT,2,1,READ,SELECT,TABLE,public.payroll,select * from payroll,<not logged>
Ähnliche Informationen
Allgemeine DBA-Aufgaben für Amazon RDS für PostgreSQL
Verwendung von pgAudit zur Protokollierung von Datenbankaktivitäten
- Sprache
- Deutsch
Ähnliche Videos

