DBAtlas · Veritabanı operasyon atlası

pgaudit ile rol ve nesne bazlı denetim kaydı (audit) tut

PostgreSQLGüvenlik

Komut

-- Ön koşul: shared_preload_libraries = 'pgaudit' + restart, ardından:
CREATE EXTENSION pgaudit;

-- Oturum denetimi: sunucu genelinde yalnızca DDL ve rol/yetki değişiklikleri
ALTER SYSTEM SET pgaudit.log = 'ddl, role';
ALTER SYSTEM SET pgaudit.log_relation = on;
ALTER SYSTEM SET pgaudit.log_parameter = off;
SELECT pg_reload_conf();

-- Belirli bir uygulama rolünün tüm okuma/yazmaları
ALTER ROLE web_app SET pgaudit.log = 'read, write';

-- Nesne denetimi: denetçi role verilen haklar = loglanacak işlemler
CREATE ROLE auditor NOLOGIN;
ALTER SYSTEM SET pgaudit.role = 'auditor';
SELECT pg_reload_conf();
GRANT SELECT, DELETE ON musteri TO auditor;
GRANT UPDATE (bakiye) ON musteri TO auditor;

Ne yapar?

Sunucu genelinde DDL ve yetki değişikliklerini, belirli bir rolün tüm okuma/yazmalarını ve yalnızca denetçi rolüne hak verilmiş hassas tablo/kolonlara erişimi 'AUDIT:' önekli yapılandırılmış log satırları olarak kaydeder.

Ne zaman kullanılır?

KVKK/GDPR, PCI-DSS, SOX gibi uyumluluk denetimlerinde hassas veriye kimin eriştiğini kanıtlamak için.

Dikkat

pgaudit.log = 'all' veya 'read' sunucu genelinde açılırsa log hacmi ve I/O ciddi artar; kapsamı rol veya nesne denetimiyle daralt. Superuser denetimi kapatabilir (ALTER SYSTEM/ALTER ROLE); kayıtları merkezi log sistemine (syslog/SIEM) gönder ve veritabanı sunucusundan bağımsız sakla. log_parameter = on bind parametrelerini (kişisel veri) de loglar. Rol ayarları yeni oturumlarda etkin olur. pgaudit ana sürümü PostgreSQL ana sürümüyle eşleşmelidir (pgaudit 17.x = PG17).

DBAtlas'ta aç →

İlgili