Revision er et krav for mange sikkerhedsbestemmelser eller standarder, såsom PCI - Payment Card Industry, og endda en god måde at holde dine data så sikre som muligt ved at vide, hvad der sker i dine databaser.
I en PostgreSQL-database kan grundlæggende sætningslogning leveres af standardlogningsfaciliteten med log_statement =all. Dette er acceptabelt til overvågning og andre grundlæggende brug, men giver ikke det detaljeringsniveau, der generelt kræves til revision.
I denne blog vil vi se, hvad pgAudit-udvidelsen er, og hvordan du installerer og bruger den i din PostgreSQL-database ved hjælp af ClusterControl.
Hvad er pgAudit?
PostgreSQL Audit Extension (pgAudit) giver detaljeret sessions- og objektauditlogning via standard PostgreSQL-logningsfaciliteten.
Det er ikke nok at have en liste over alle de operationer, der udføres mod databasen. Det skal også være muligt at finde særlige erklæringer, som er af interesse for en revisor. Standardlogningsfaciliteten viser, hvad brugeren anmodede om, mens pgAudit fokuserer på detaljerne om, hvad der skete, mens databasen imødekom anmodningen.
Aktivering af pgAudit med ClusterControl
I dette eksempel antager vi, at du har ClusterControl installeret, og det administrerer din PostgreSQL-database. Ellers kan du følge dette blogindlæg for at få det op at køre på en nem måde ved hjælp af ClusterControl.
ClusterControl UI
Fra ClusterControl 1.8.2-versionen, som blev spist for nylig, kan du nemt aktivere pgAudit-pluginnet fra ClusterControl-brugergrænsefladen. For at aktivere det, gå til ClusterControl -> Vælg din PostgreSQL-klynge -> Sikkerhed-fanen -> Revisionslog -> Aktiver.
Du skal angive de hændelser, du vil revidere i din PostgreSQL klynge. PgAudit vil være aktiveret på alle noderne, og det kræver en genstart af databasetjenesten for at installere det.
Begivenhederne kunne være:
-
ROLE:Udsagn relateret til roller og privilegier:TILDEL, TILBAGE, OPRET/ÆNDRE/SLIP ROLLE.
-
DDL:Alt DDL, der ikke er inkluderet i ROLE-klassen.
-
MISC:Diverse kommandoer, f.eks. BORTSKAFFES, HENT, KONTROLPUNKT, STØVSUG, SÆT.
-
LÆS:SELECT og COPY, når kilden er en relation eller en forespørgsel.
-
SKRIV:INDSÆT, OPDATER, SLET, AFSKRIV og KOPI, når destinationen er en relation.
-
FUNKTION:Funktionskald og DO-blokke.
-
ALLE:Medtag alt ovenstående.
Du kan overvåge din pgAudit-installation i afsnittet ClusterControl-aktivitet.
Når det er færdigt, kan du tjekke din pgAudit-log i den samme ClusterControl-brugergrænseflade. For at gøre dette skal du gå til ClusterControl -> Vælg din PostgreSQL-klynge -> fanen Logs -> Systemlogs.
Her finder du alle de nødvendige oplysninger til at revidere din PostgreSQL-database.
ClusterControl CLI
I stedet for at aktivere pgAudit fra ClusterControl UI, er en anden mulighed at bruge ClusterControl CLI til at udføre jobbet. Til dette kan du køre følgende kommando fra din ClusterControl-server:
$ s9s cluster --setup-audit-logging --cluster-id=ID
Hvor ID er PostgreSQL-klynge-id'et.
Mens den kører, kan du overvåge status ved at kontrollere ClusterControl-jobbet. Først skal du bruge job-id'et, som du kan få fra joblisten:
$ s9s job --list
1600 48 RUNNING test_dba admins 18:49:36 90% Setup Audit Logging
Tjek nu jobdetaljerne:
$ 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.
Denne handling kræver en genstart af databasetjenesten, som udføres af ClusterControl i samme opgave. Efter genstart er pgAudit-udvidelsen aktiveret og klar til brug:
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)
Konklusion
Revision er påkrævet for mange sikkerhedsforskrifter. Det bruges til at vide, hvad der skete med din database, hvornår det skete, og hvem der er ansvarlig for det.
I denne blog talte vi om pgAudit PostgreSQL-udvidelsen som en god måde at revidere dine PostgreSQL-databaser på. Vi viste dig også, hvordan du implementerer det hurtigt med ClusterControl fra brugergrænsefladen og ved hjælp af ClusterControl CLI.
Husk, at pgAudit, afhængigt af konfigurationen, kan generere en enorm mængde data. Så du bør være omhyggelig med at bestemme, hvad du skal revidere og hvor længe.