PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Audit-Protokollierung für PostgreSQL

Überprüfung ist eine Voraussetzung für viele Sicherheitsvorschriften oder -standards, wie PCI - Payment Card Industry, und sogar eine gute Möglichkeit, Ihre Daten so sicher wie möglich zu halten, da Sie wissen, was in Ihren Datenbanken vor sich geht.

In einer PostgreSQL-Datenbank kann die einfache Protokollierung von Anweisungen durch die Standardprotokollierungsfunktion mit log_statement =all bereitgestellt werden. Dies ist für die Überwachung und andere grundlegende Anwendungen akzeptabel, bietet jedoch nicht den Detaillierungsgrad, der im Allgemeinen für die Prüfung erforderlich ist.

In diesem Blog werden wir sehen, was die pgAudit-Erweiterung ist und wie sie mithilfe von ClusterControl in Ihrer PostgreSQL-Datenbank installiert und verwendet wird.

Was ist pgAudit?

Die PostgreSQL-Audit-Erweiterung (pgAudit) bietet eine detaillierte Sitzungs- und Objekt-Audit-Protokollierung über die standardmäßige PostgreSQL-Protokollierungsfunktion.

Es reicht nicht aus, eine Liste aller Operationen zu haben, die mit der Datenbank durchgeführt wurden. Auch bestimmte Aussagen, die für einen Wirtschaftsprüfer interessant sind, müssen auffindbar sein. Die standardmäßige Protokollierungsfunktion zeigt, was der Benutzer angefordert hat, während sich pgAudit auf die Details dessen konzentriert, was passiert ist, während die Datenbank die Anforderung erfüllt hat.

pgAudit mit ClusterControl aktivieren

Für dieses Beispiel gehen wir davon aus, dass Sie ClusterControl installiert haben und es Ihre PostgreSQL-Datenbank verwaltet. Andernfalls können Sie diesem Blogbeitrag folgen, um es mithilfe von ClusterControl auf einfache Weise zum Laufen zu bringen.

ClusterControl-Benutzeroberfläche

Von der ClusterControl 1.8.2-Version, die kürzlich zu Mittag gegessen wurde, können Sie das pgAudit-Plug-in einfach über die ClusterControl-Benutzeroberfläche aktivieren. Um es zu aktivieren, gehen Sie zu ClusterControl -> Select your PostgreSQL Cluster -> Security Tab -> Audit Log -> Enable.

Sie müssen die Ereignisse angeben, die Sie in Ihrem PostgreSQL prüfen möchten Cluster. PgAudit wird auf allen Knoten aktiviert und erfordert einen Neustart des Datenbankdienstes, um es zu installieren.

Die Ereignisse könnten sein:

  • ROLE:Anweisungen zu Rollen und Privilegien:GRANT, REVOKE, CREATE/ALTER/DROP ROLE.

  • DDL:Alle DDL, die nicht in der ROLE-Klasse enthalten sind.

  • MISC:Diverse Befehle, z.B. VERWERFEN, ABRUFEN, KONTROLLPUNKT, VAKUUM, SETZEN.

  • LESEN:AUSWÄHLEN und KOPIEREN, wenn die Quelle eine Relation oder eine Abfrage ist.

  • WRITE:INSERT, UPDATE, DELETE, TRUNCATE und COPY, wenn das Ziel eine Relation ist.

  • FUNCTION:Funktionsaufrufe und DO-Blöcke.

  • ALLE:Alle oben genannten einschließen.

Sie können Ihre pgAudit-Installation im Abschnitt ClusterControl-Aktivität überwachen.

Wenn es fertig ist, können Sie Ihr pgAudit-Protokoll in derselben ClusterControl-Benutzeroberfläche überprüfen. Gehen Sie dazu zu ClusterControl -> Select your PostgreSQL Cluster -> Logs Tab -> System Logs.

Hier finden Sie alle notwendigen Informationen, um Ihre PostgreSQL-Datenbank zu prüfen.

ClusterControl-CLI

Anstatt pgAudit über die ClusterControl-Benutzeroberfläche zu aktivieren, besteht eine andere Möglichkeit darin, die ClusterControl-CLI zu verwenden, um die Aufgabe zu erledigen. Dazu können Sie den folgenden Befehl von Ihrem ClusterControl-Server ausführen:

$ s9s cluster --setup-audit-logging --cluster-id=ID

Wobei ID die PostgreSQL-Cluster-ID ist.

Während es läuft, können Sie den Status überwachen, indem Sie den ClusterControl-Job überprüfen. Zuerst benötigen Sie die Job-ID, die Sie der Jobliste entnehmen können:

$ s9s job --list
1600  48 RUNNING  test_dba                     admins 18:49:36            90% Setup Audit Logging

Überprüfen Sie jetzt die Auftragsdetails:

$ s9s job --log --job-id=1600
Using SSH credentials from cluster.
Cluster ID is 48.
The username is 'root'.]
10.10.10.139:5432: Configuring audit logging.
10.10.10.139:5432: Installing 'pgaudit15_13'.
10.10.10.139: Installing pgaudit15_13.
10.10.10.139:5432: Setting pgaudit.log to ROLE,DDL,MISC.
Writing file '10.10.10.139:/var/lib/pgsql/13/data/postgresql.conf'.
10.10.10.139:5432: Restarting PostgreSQL node.
10.10.10.139: waiting for server to shut down.... done
server stopped
waiting for server to start....2021-03-24 18:49:43.468 UTC [16098] LOG:  pgaudit extension initialized
2021-03-24 18:49:43.505 UTC [16098] LOG:  redirecting log output to logging collector process
2021-03-24 18:49:43.505 UTC [16098] HINT:  Future log output will appear in directory "log".
 done
server started
10.10.10.139:5432: Waiting for node to be accessible.
10.10.10.139:5432: pgaudit 1.5.0 is enabled.

Diese Aktion erfordert einen Neustart des Datenbankdienstes, der von ClusterControl in derselben Aufgabe durchgeführt wird. Nach dem Neustart ist die pgAudit-Erweiterung aktiviert und einsatzbereit:

postgres=# SELECT * FROM pg_available_extensions WHERE name LIKE '%audit%';
  name   | default_version | installed_version |             comment
---------+-----------------+-------------------+---------------------------------
 pgaudit | 1.5             | 1.5               | provides auditing functionality
(1 row)

Fazit

Überprüfung ist für viele Sicherheitsvorschriften erforderlich. Es wird verwendet, um zu wissen, was mit Ihrer Datenbank passiert ist, wann es passiert ist und wer dafür verantwortlich ist.

In diesem Blog haben wir über die PostgreSQL-Erweiterung pgAudit als eine gute Methode zur Prüfung Ihrer PostgreSQL-Datenbanken gesprochen. Wir haben Ihnen auch gezeigt, wie Sie es schnell mit ClusterControl über die Benutzeroberfläche und mithilfe der ClusterControl-CLI implementieren können.

Beachten Sie, dass pgAudit je nach Konfiguration enorme Datenmengen erzeugen kann. Daher sollten Sie sorgfältig festlegen, was Sie prüfen müssen und wie lange.