PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Rejestrowanie audytów dla PostgreSQL

Audyt jest wymagany w wielu przepisach lub standardach bezpieczeństwa, takich jak PCI - Payment Card Industry, a nawet jest dobrym sposobem na zapewnienie jak największego bezpieczeństwa danych, wiedząc, co dzieje się w Twoich bazach danych.

W bazie danych PostgreSQL podstawowe rejestrowanie instrukcji może być zapewnione przez standardowe narzędzie rejestrowania z log_statement =all. Jest to dopuszczalne w przypadku monitorowania i innych podstawowych zastosowań, ale nie zapewnia poziomu szczegółowości zwykle wymaganego do audytu.

W tym blogu zobaczymy, czym jest rozszerzenie pgAudit oraz jak je zainstalować i używać w bazie danych PostgreSQL za pomocą ClusterControl.

Co to jest pgAudit?

Rozszerzenie audytu PostgreSQL (pgAudit) zapewnia szczegółowe rejestrowanie audytu sesji i obiektów za pośrednictwem standardowego narzędzia rejestrowania PostgreSQL.

Nie wystarczy mieć listę wszystkich operacji wykonywanych na bazie danych. Musi być również możliwe odnalezienie konkretnych stwierdzeń, które zainteresują biegłego rewidenta. Standardowa funkcja rejestrowania pokazuje, czego żądał użytkownik, podczas gdy pgAudit skupia się na szczegółach tego, co się stało, gdy baza danych spełniała żądanie.

Włączanie pgAudit z ClusterControl

W tym przykładzie założymy, że masz zainstalowany program ClusterControl, który zarządza bazą danych PostgreSQL. W przeciwnym razie możesz śledzić ten wpis na blogu, aby łatwo go uruchomić, używając ClusterControl.

Interfejs użytkownika ClusterControl

W niedawno wprowadzonej wersji ClusterControl 1.8.2 można łatwo włączyć wtyczkę pgAudit z interfejsu użytkownika ClusterControl. Aby ją włączyć, przejdź do ClusterControl -> Wybierz swój klaster PostgreSQL -> Zakładka Bezpieczeństwo -> Dziennik audytu -> Włącz.

Musisz określić zdarzenia, które chcesz kontrolować w swoim PostgreSQL grupa. PgAudit zostanie włączony we wszystkich węzłach i będzie wymagał ponownego uruchomienia usługi bazy danych, aby go zainstalować.

Wydarzenia mogą być:

  • ROLE:Oświadczenia związane z rolami i uprawnieniami:GRANT, REVOKE, CREATE/ALTER/DROP ROLE.

  • DDL:wszystkie DDL, które nie są zawarte w klasie ROLE.

  • MISC:Różne polecenia, np. ODRZUCENIE, POBIERZ, PUNKT KONTROLNY, ODKURZ, USTAW.

  • CZYTAJ:WYBIERZ i KOPIUJ, gdy źródłem jest relacja lub zapytanie.

  • PISAĆ:WSTAW, AKTUALIZUJ, USUŃ, OTWIERAJ i KOPIUJ, gdy miejsce docelowe jest relacją.

  • FUNKCJA:Wywołania funkcji i bloki DO.

  • WSZYSTKO:Uwzględnij wszystkie powyższe.

Możesz monitorować instalację pgAudit w sekcji Aktywność ClusterControl.

Po zakończeniu możesz sprawdzić swój dziennik pgAudit w tym samym interfejsie użytkownika ClusterControl. W tym celu przejdź do ClusterControl -> Wybierz swój klaster PostgreSQL -> Zakładka Dzienniki -> Dzienniki systemowe.

Tutaj znajdziesz wszystkie niezbędne informacje do audytu bazy danych PostgreSQL.

ClusterControl CLI

Zamiast włączania pgAudit z ClusterControl UI, inną opcją jest użycie ClusterControl CLI do wykonania zadania. W tym celu możesz uruchomić następujące polecenie z serwera ClusterControl:

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

Gdzie ID jest identyfikatorem klastra PostgreSQL.

Gdy jest uruchomiony, możesz monitorować stan, sprawdzając zadanie ClusterControl. Najpierw potrzebujesz identyfikatora pracy, który możesz uzyskać z listy ofert:

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

Teraz sprawdź szczegóły oferty:

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

To działanie będzie wymagało ponownego uruchomienia usługi bazy danych, które zostanie wykonane przez ClusterControl w tym samym zadaniu. Po ponownym uruchomieniu rozszerzenie pgAudit jest włączone i gotowe do użycia:

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)

Wnioski

Audyt jest wymagany w przypadku wielu przepisów bezpieczeństwa. Służy do poznania, co się stało z Twoją bazą danych, kiedy to się stało i kto jest za to odpowiedzialny.

W tym blogu mówiliśmy o rozszerzeniu pgAudit PostgreSQL jako o dobrym sposobie audytu baz danych PostgreSQL. Pokazaliśmy również, jak szybko to zaimplementować za pomocą ClusterControl z interfejsu użytkownika i za pomocą ClusterControl CLI.

Pamiętaj, że w zależności od konfiguracji pgAudit może generować ogromne ilości danych. Dlatego powinieneś być ostrożny, aby określić, co i jak długo chcesz kontrolować.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Migracja PostgreSQL do chmury — porównanie rozwiązań Amazon, Google i Microsoft

  2. Zapisz dane wyjściowe PL/pgSQL z PostgreSQL do pliku CSV

  3. INSERT z dynamiczną nazwą tabeli w funkcji wyzwalacza

  4. Pobrać rozmiar dużego obiektu w zapytaniu PostgreSQL?

  5. Jak UPSERT (MERGE, INSERT ... ON DUPLICATE UPDATE) w PostgreSQL?