sql >> Databasteknik >  >> RDS >> PostgreSQL

Revisionsloggning för PostgreSQL

Revision är ett krav för många säkerhetsföreskrifter eller standarder, som PCI - Payment Card Industry, och till och med ett bra sätt att hålla din data så säker som möjligt och veta vad som händer i dina databaser.

I en PostgreSQL-databas kan grundläggande satsloggning tillhandahållas av standardloggningsfunktionen med log_statement =all. Detta är acceptabelt för övervakning och andra grundläggande användningar men ger inte den detaljnivå som vanligtvis krävs för revision.

I den här bloggen kommer vi att se vad pgAudit-tillägget är och hur man installerar och använder det i din PostgreSQL-databas med ClusterControl.

Vad är pgAudit?

PostgreSQL Audit Extension (pgAudit) tillhandahåller detaljerad sessions- och objektgranskningsloggning via den vanliga PostgreSQL-loggningsfunktionen.

Det räcker inte att ha en lista över alla operationer som utförs mot databasen. Det ska också vara möjligt att hitta särskilda uttalanden som är av intresse för en revisor. Standardloggningsfunktionen visar vad användaren begärde, medan pgAudit fokuserar på detaljerna om vad som hände medan databasen tillfredsställde begäran.

Aktivera pgAudit med ClusterControl

I det här exemplet antar vi att du har ClusterControl installerat och att det hanterar din PostgreSQL-databas. Annars kan du följa det här blogginlägget för att få det igång på ett enkelt sätt med ClusterControl.

ClusterControl UI

Från ClusterControl 1.8.2-versionen, nyligen lunchad, kan du enkelt aktivera insticksprogrammet pgAudit från ClusterControl-gränssnittet. För att aktivera det, gå till ClusterControl -> Välj ditt PostgreSQL-kluster -> Säkerhetsfliken -> Granskningslogg -> Aktivera.

Du måste ange de händelser som du vill granska i din PostgreSQL klunga. PgAudit kommer att aktiveras på alla noder och det kommer att kräva en omstart av databastjänsten för att installera den.

Händelserna kan vara:

  • ROLL:Uttalanden relaterade till roller och privilegier:BETYD, ÅTERVÄLJ, SKAPA/ÄNDRA/SLÄPP ROLL.

  • DDL:Alla DDL som inte ingår i ROLE-klassen.

  • MISC:Diverse kommandon, t.ex. KASSA, HÄMT, KONTROLLPUNKT, VAKUUM, STÄLL IN.

  • LÄS:VÄLJ och KOPIERA när källan är en relation eller en fråga.

  • SKRIV:INFOGA, UPPDATERA, DELETE, TRUNCATE och COPY när destinationen är en relation.

  • FUNKTION:Funktionsanrop och DO-block.

  • ALLT:Inkludera allt ovan.

Du kan övervaka din pgAudit-installation i avsnittet ClusterControl Activity.

När den är klar kan du kontrollera din pgAudit-logg i samma ClusterControl-gränssnitt. För detta, gå till ClusterControl -> Välj ditt PostgreSQL-kluster -> Fliken Loggar -> Systemloggar.

Här hittar du all nödvändig information för att granska din PostgreSQL-databas.

ClusterControl CLI

Istället för att aktivera pgAudit från ClusterControl UI, är ett annat alternativ att använda ClusterControl CLI för att göra jobbet. För detta kan du köra följande kommando från din ClusterControl-server:

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

Där ID är PostgreSQL-kluster-id.

Medan den körs kan du övervaka statusen genom att kontrollera ClusterControl-jobbet. Först behöver du jobb-id:t som du kan få från jobblistan:

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

Kontrollera nu jobbdetaljerna:

$ 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.

Den här åtgärden kräver en omstart av databastjänsten som kommer att utföras av ClusterControl i samma uppgift. Efter omstart är tillägget pgAudit aktiverat och redo att användas:

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)

Slutsats

Revision krävs för många säkerhetsföreskrifter. Den används för att veta vad som hände med din databas, när det hände och vem som är ansvarig för det.

I den här bloggen pratade vi om tillägget pgAudit PostgreSQL som ett bra sätt att granska dina PostgreSQL-databaser. Vi visade dig också hur du implementerar det snabbt med ClusterControl från användargränssnittet och med ClusterControl CLI.

Tänk på att pgAudit, beroende på konfigurationen, kan generera en enorm mängd data. Så du bör vara noga med att avgöra vad du behöver granska och hur länge.


  1. MariaDB datum och tid funktioner (fullständig lista)

  2. ALTER &DROP Table DDL med Execute Immediate i Oracle Database

  3. Pivot i Oracle 11g

  4. SQL ansluter