dataiotech Labs
Home/Güvenlik/Denetim & Uyum/Oturum & DDL Denetimi
← Tüm Denetim & Uyum Konuları
Oturum & DDL Denetimi

Oturum, Yetki & DDL Denetim Günlüğü (pgaudit & Enterprise Audit)

Kim, ne zaman, hangi IP adresinden hangi tabloyu okudu, değiştirdi veya sildi? pgaudit eklentisiyle tüm DDL, ROLE, WRITE ve READ operasyonlarını doğrulanabilir şekilde loglayın.

Doğrulanan Regülasyon ve Standartlar
SOC 2 Type IIPCI-DSS v4.0 (Req 10)HIPAA § 164.312ISO 27001 (A.12.4)KVKK / GDPR

Temel Güvenlik ve Uyum Hedefleri

Tüm şema değişikliklerini (CREATE, ALTER, DROP) anlık olarak denetleme
DBA ve superuser oturumlarının çalıştırdığı komutları izole kayıt altına alma
Finansal ve hassas tablolarda (Örn: `accounts`, `users`) satır bazlı SELECT erişimlerini loglama
SIEM (Splunk, Elastic, Datadog) entegrasyonu ile merkezi uyarı üretme

Mimari ve Çalışma Prensibi

pgaudit, PostgreSQL yürütme motoruna gömülü bir kanca (ExecutorCheckPerms hook) aracılığıyla çalışır. Standart log mekanizmasından farklı olarak, çalıştırma anındaki hedef tabloları ve rollerin gerçek context’ini yakalar. Loglar yerel syslog veya dosya formatında şifreli olarak SIEM kolektörüne iletilir.

Referans Konfigürasyon Dosyası
# postgresql.conf - pgaudit Enterprise Setup
shared_preload_libraries = 'pgaudit'

# Denetlenecek eylemler: DDL, Role yetkileri, Yazma ve Fonksiyon çağrıları
pgaudit.log = 'ddl, role, write, function'
pgaudit.log_catalog = off
pgaudit.log_level = 'log'
pgaudit.log_parameter = on
pgaudit.log_relation = on
pgaudit.log_statement_once = off

# Syslog ile SIEM'e aktarım
log_destination = 'syslog'
syslog_facility = 'LOCAL0'
syslog_ident = 'postgres_audit'

Adım Adım Uygulama Rehberi

Canlı veya test ortamında güvenle devreye almak için sıralı operasyon adımları.

1

pgaudit Eklentisini Yükleme

bash

İşletim sistemi paket yöneticisi ile veritabanı sürümünüze uygun paketi yükleyin.

sudo apt-get update && sudo apt-get install -y postgresql-17-pgaudit
2

shared_preload_libraries Tanımlama & Yeniden Başlatma

bash

postgresql.conf dosyasına pgaudit kütüphanesini ekleyin ve servisi yeniden başlatın.

sudo systemctl restart postgresql
3

Veritabanında Eklentiyi Etkinleştirme

sql

Superuser oturumuyla hedef veritabanına bağlanıp eklentiyi oluşturun.

CREATE EXTENSION IF NOT EXISTS pgaudit;
4

Hassas Tabloya Özel Nesne Düzeyinde Denetim (Object Audit)

sql

Tüm veritabanı yerine yalnızca kritik tablolara özel SELECT loglaması için bir denetim rolü atayın.

CREATE ROLE rds_pgaudit_auditor;
ALTER SYSTEM SET pgaudit.role = 'rds_pgaudit_auditor';
SELECT pg_reload_conf();

-- Yalnızca hassas tablolarda okumaları logla:
GRANT SELECT ON public.customers TO rds_pgaudit_auditor;

En İyi Saha Pratikleri

  • pgaudit.log_catalog = off tutarak sistem katalog sorgularının logları şişirmesini engelleyin.
  • Denetim loglarını doğrudan veritabanı sunucusunda değil, anlık olarak harici SIEM / WORM (Write Once Read Many) depolamaya aktarın.
  • Denetim kayıtlarını imzalayarak bütünlük (tamper-evident) doğrulamasını garanti edin.

Sık Yapılan Hatalar & Tuzaklar

  • pgaudit.log = 'all' seçildiğinde disk I/O ve log hacminin dakikalar içinde tükenmesi.
  • Şifre içeren `ALTER USER ... WITH PASSWORD` komutlarının loglarda açık metin kalmaması için filtre kurallarının ihmal edilmesi.