sql >> Databáze >  >> RDS >> PostgreSQL

Protokolování auditu pro PostgreSQL

Audit je požadavkem mnoha bezpečnostních předpisů nebo standardů, jako je PCI – Payment Card Industry, a dokonce je to dobrý způsob, jak udržet vaše data co nejbezpečnější, abyste věděli, co se děje ve vašich databázích.

V databázi PostgreSQL může být základní protokolování příkazů zajištěno standardním protokolovacím zařízením s log_statement =all. To je přijatelné pro monitorování a další základní použití, ale neposkytuje úroveň podrobností obecně požadovanou pro audit.

V tomto blogu uvidíme, co je rozšíření pgAudit a jak jej nainstalovat a používat ve vaší databázi PostgreSQL pomocí ClusterControl.

Co je pgAudit?

Rozšíření PostgreSQL Audit Extension (pgAudit) poskytuje podrobné protokolování auditu relací a objektů prostřednictvím standardního protokolovacího zařízení PostgreSQL.

Nestačí mít seznam všech operací provedených s databází. Musí být také možné najít konkrétní prohlášení, která jsou pro auditora zajímavá. Standardní funkce protokolování ukazuje, co uživatel požadoval, zatímco pgAudit se zaměřuje na podrobnosti o tom, co se stalo, když databáze uspokojovala požadavek.

Povolení pgAudit pomocí ClusterControl

V tomto příkladu budeme předpokládat, že máte nainstalovaný ClusterControl a ten spravuje vaši databázi PostgreSQL. V opačném případě můžete sledovat tento blogový příspěvek, abyste jej mohli snadno zprovoznit pomocí ClusterControl.

Uživatelské rozhraní ClusterControl

Z nedávno vydané verze ClusterControl 1.8.2 můžete snadno povolit plugin pgAudit z uživatelského rozhraní ClusterControl. Chcete-li jej povolit, přejděte do ClusterControl -> Vyberte svůj PostgreSQL Cluster -> karta Zabezpečení -> Protokol auditu -> Povolit.

Budete muset zadat události, které chcete auditovat ve svém PostgreSQL shluk. PgAudit bude povolen na všech uzlech a jeho instalace bude vyžadovat restartování databázové služby.

Události mohou být:

  • ROLE:Prohlášení týkající se rolí a oprávnění:UDĚLIT, ZRUŠIT, VYTVOŘIT/ZMĚNIT/ZRUŠIT ROLE.

  • DDL:Všechny DDL, které nejsou zahrnuty do třídy ROLE.

  • MISC:Různé příkazy, např. ZRUŠIT, NAČÍST, KONTROLNÍ BOD, VAKUOVAT, NASTAVIT.

  • ČTĚTE:VYBERTE a KOPÍRUJTE, pokud je zdrojem vztah nebo dotaz.

  • ZAPIŠTE:INSERT, UPDATE, DELETE, TRUNCATE a COPY, pokud je cílem relace.

  • FUNKCE:Volání funkcí a bloky DO.

  • VŠECHNY:Zahrňte vše výše uvedené.

Instalaci pgAudit můžete sledovat v sekci ClusterControl Activity.

Po dokončení můžete zkontrolovat svůj protokol pgAudit ve stejném uživatelském rozhraní ClusterControl. Chcete-li to provést, přejděte do ClusterControl -> Vyberte svůj PostgreSQL Cluster -> karta Logs -> System Logs.

Zde naleznete všechny potřebné informace k auditu vaší PostgreSQL databáze.

ClusterControl CLI

Namísto povolení pgAudit z uživatelského rozhraní ClusterControl je další možností k provedení úlohy použít CLI ClusterControl. Za tímto účelem můžete ze serveru ClusterControl spustit následující příkaz:

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

Kde ID je ID clusteru PostgreSQL.

Zatímco běží, můžete sledovat stav kontrolou úlohy ClusterControl. Nejprve budete potřebovat ID úlohy, které můžete získat ze seznamu úloh:

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

Nyní zkontrolujte podrobnosti úlohy:

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

Tato akce bude vyžadovat restartování databázové služby, které provede ClusterControl ve stejné úloze. Po restartování je rozšíření pgAudit povoleno a připraveno k použití:

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)

Závěr

U mnoha bezpečnostních předpisů je vyžadován audit. Používá se k tomu, abyste věděli, co se stalo s vaší databází, kdy se to stalo a kdo je za to zodpovědný.

V tomto blogu jsme hovořili o rozšíření pgAudit PostgreSQL jako o dobrém způsobu auditu vašich databází PostgreSQL. Také jsme vám ukázali, jak jej rychle implementovat pomocí ClusterControl z uživatelského rozhraní a pomocí ClusterControl CLI.

Mějte na paměti, že v závislosti na konfiguraci může pgAudit generovat obrovské množství dat. Takže byste měli být opatrní, abyste určili, co potřebujete auditovat a jak dlouho.


  1. Přístup pomocí Microsoft SQL Server – import velkých datových sad pomocí SSIS

  2. Jak přeskočit sloupce v souboru CSV při importu do tabulky MySQL pomocí LOAD DATA INFILE?

  3. Jak aktuální_datum funguje v PostgreSQL

  4. Porovnání vysoké dostupnosti databáze – replikace MySQL / MariaDB vs Oracle Data Guard