sql >> Database >  >> RDS >> PostgreSQL

Auditlogboekregistratie voor PostgreSQL

Auditing is een vereiste voor veel beveiligingsvoorschriften of -normen, zoals PCI - Payment Card Industry, en zelfs een goede manier om uw gegevens zo veilig mogelijk te houden, wetende wat er in uw databases gebeurt.

In een PostgreSQL-database kan basisregistratie van instructies worden geleverd door de standaardregistratiefunctie met log_statement =all. Dit is acceptabel voor monitoring en ander basisgebruik, maar biedt niet het detailniveau dat doorgaans vereist is voor auditing.

In deze blog zullen we zien wat de pgAudit-extensie is en hoe u deze kunt installeren en gebruiken in uw PostgreSQL-database met behulp van ClusterControl.

Wat is pgAudit?

De PostgreSQL Audit Extension (pgAudit) biedt gedetailleerde logboekregistratie van sessies en objecten via de standaard PostgreSQL-registratiefaciliteit.

Het is niet voldoende om een ​​lijst te hebben van alle bewerkingen die op de database zijn uitgevoerd. Ook moet het mogelijk zijn om bepaalde uitspraken te vinden die voor een accountant van belang zijn. De standaard logfunctie laat zien wat de gebruiker heeft gevraagd, terwijl pgAudit zich richt op de details van wat er is gebeurd terwijl de database aan het verzoek voldeed.

pgAudit inschakelen met ClusterControl

Voor dit voorbeeld gaan we ervan uit dat ClusterControl is geïnstalleerd en dat het uw PostgreSQL-database beheert. Anders kun je deze blogpost volgen om hem op een gemakkelijke manier aan de gang te krijgen, met behulp van ClusterControl.

ClusterControl-gebruikersinterface

Vanaf de ClusterControl 1.8.2-versie, die onlangs werd gelanceerd, kunt u eenvoudig de pgAudit-plug-in inschakelen vanuit de ClusterControl-gebruikersinterface. Om het in te schakelen, gaat u naar ClusterControl -> Selecteer uw PostgreSQL-cluster -> Beveiligingstabblad -> Auditlogboek -> Inschakelen.

U moet de gebeurtenissen die u wilt controleren, specificeren in uw PostgreSQL TROS. PgAudit wordt ingeschakeld op alle knooppunten en het vereist een herstart van de databaseservice om het te installeren.

De gebeurtenissen kunnen zijn:

  • ROLE:Verklaringen met betrekking tot rollen en privileges:GRANT, REVOKE, CREATE/ALTER/DROP ROLE.

  • DDL:alle DDL die niet is opgenomen in de ROLE-klasse.

  • MISC:Diverse opdrachten, b.v. WEGGOOIEN, OPHALEN, CONTROLEPUNT, VACUM, INSTELLEN.

  • LEES:SELECTEER en KOPIEER als de bron een relatie of een query is.

  • SCHRIJF:INSERT, UPDATE, DELETE, TRUNCATE en COPY wanneer de bestemming een relatie is.

  • FUNCTIE:Functie-aanroepen en DO-blokken.

  • ALLES:al het bovenstaande opnemen.

U kunt uw pgAudit-installatie controleren in het gedeelte ClusterControl-activiteit.

Als het klaar is, kunt u uw pgAudit-logboek in dezelfde ClusterControl-gebruikersinterface controleren. Ga hiervoor naar ClusterControl -> Selecteer uw PostgreSQL-cluster -> Tabblad Logs -> Systeemlogboeken.

Hier vindt u alle benodigde informatie om uw PostgreSQL-database te controleren.

ClusterControl CLI

In plaats van pgAudit in te schakelen vanuit de gebruikersinterface van ClusterControl, is een andere optie om de ClusterControl CLI te gebruiken om het werk te doen. Hiervoor kunt u vanaf uw ClusterControl-server het volgende commando uitvoeren:

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

Waar ID de PostgreSQL-cluster-ID is.

Terwijl het actief is, kunt u de status controleren door de ClusterControl-taak te controleren. Eerst heb je de vacature-ID nodig, die je uit de vacaturelijst kunt halen:

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

Controleer nu de taakdetails:

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

Voor deze actie is een herstart van de databaseservice vereist die door ClusterControl in dezelfde taak wordt uitgevoerd. Nadat het opnieuw is opgestart, is de pgAudit-extensie ingeschakeld en klaar voor gebruik:

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)

Conclusie

Auditing is vereist voor veel beveiligingsvoorschriften. Het wordt gebruikt om te weten wat er met uw database is gebeurd, wanneer het is gebeurd en wie er verantwoordelijk voor is.

In deze blog hebben we het gehad over de pgAudit PostgreSQL-extensie als een goede manier om uw PostgreSQL-databases te controleren. We hebben u ook laten zien hoe u het snel kunt implementeren met ClusterControl vanuit de gebruikersinterface en met behulp van de ClusterControl CLI.

Houd er rekening mee dat, afhankelijk van de configuratie, pgAudit een enorme hoeveelheid gegevens kan genereren. U moet dus zorgvuldig bepalen wat u moet controleren en voor hoe lang.


  1. Bespaar tijd bij het uitvoeren van Microsoft Access-rapporten met filters in de lay-outweergave

  2. Controleren of een item niet in een andere tabel voorkomt

  3. Het Halloween-probleem - Deel 3

  4. Querycombinaties met geneste reeks records in JSON-gegevenstype