postgresql audit
2 min readJun 4, 2024
PostgreSQL auditing, veritabanında yapılan işlemlerin kaydını tutma sürecidir. Bu, güvenlik, uyumluluk ve performans izleme gibi kritik işlevler için oldukça önemlidir. Auditing, kimlerin hangi veriye eriştiğini, ne tür işlemler gerçekleştirdiğini ve bu işlemlerin ne zaman yapıldığını izlemek için kullanılır.
Neden Auditing?
- Güvenlik: Auditing, yetkisiz erişim ve kötüye kullanım gibi güvenlik tehditlerini tespit etmeye yardımcı olur. Hangi kullanıcıların hangi verilere eriştiğini ve ne tür işlemler gerçekleştirdiğini bilmek, olası güvenlik ihlallerini önlemeye yardımcı olur.
- Uyumluluk: Pek çok endüstri, veri güvenliği ve gizliliği ile ilgili yasal düzenlemelere tabidir. Auditing, bu düzenlemelere uyum sağlamanızı kolaylaştırır ve düzenleyici kurumlar için gerekli kanıtları sunar.
- Performans İzleme: Veritabanı performansını izlemek ve optimize etmek için hangi sorguların sıkça kullanıldığını ve hangi işlemlerin veritabanı üzerinde yoğun yük oluşturduğunu bilmek önemlidir. Auditing, bu bilgileri sağlayarak performans iyileştirmeleri yapmanıza yardımcı olur.
PostgreSQL’de Auditing Nasıl Yapılır?
PostgreSQL, auditing işlemlerini gerçekleştirmek için çeşitli yöntemler sunar. En yaygın kullanılan yöntemlerden biri pgAudit eklentisidir. Bu eklenti, veritabanı işlemlerinin detaylı bir şekilde kaydedilmesini sağlar.
pgAudit Eklentisi ile Auditing
Kurulum ve Yapılandırma:
wget https://download.postgresql.org/pub/repos/yum/15/redhat/rhel-8-x86_64/pgaudit17_15-1.7.0-1.rhel8.x86_64.rpm
wget https://download.postgresql.org/pub/repos/yum/15/redhat/rhel-8-x86_64/postgresql15-contrib-15.0-1PGDG.rhel8.x86_64.rpm
postgresql15-contrib-15.0-1PGDG.rhel8.x86_64.rpm
pgaudit17_15-1.7.0-1.rhel8.x86_64.rpm
rpm -ivh postgresql15-contrib-15.0-1PGDG.rhel8.x86_64.rpm
rpm -ivh pgaudit17_15-1.7.0-1.rhel8.x86_64.rpm
vi 15/data/postgresql.conf
shared_preload_libraries = 'pgaudit' # (change requires restart)
pgaudit.log = 'read, write, function, ddl, role'
pgaudit.log_catalog = on
pgaudit.log_parameter = on
pgaudit.log_client = on
log_line_prefix = '%m [%p] %u@%d:%r '
systemctl stop postgresql-15.service
systemctl start postgresql-15.service
systemctl status postgresql-15.service
su - postgres
psql -U postgres -d postgres -p 5432 -h ***
create extension pgaudit ;
sudo tail -f /var/lib/pgsql/15/data/log/postgresql-*.log
2024-06-04 12:54:25.917 GMT [52694] postgres@postgres:[local] LOG:
AUDIT: SESSION,1,1,DDL,CREATE DATABASE,,,create database ibrahim3242;,<none>