postgresql audit

İbrahim Yıldız
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?

  1. 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.
  2. 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.
  3. 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>

--

--