iToverDose/Yazılım· 22 MAYIS 2026 · 00:01

Aurora PostgreSQL Denetimi için AWS’de İhtiyacınız Olan Kritik Adımlar

Aurora PostgreSQL’de insan kaynaklı veri değişikliklerini denetlemek, Oracle’dan farklı mimari yaklaşımlar gerektiriyor. Bu rehber, AWS altyapısında pgAudit’in etkili şekilde nasıl kurulacağını ve hayal kırıklığına uğratmayacak bir denetim sistemi oluşturmanın püf noktalarını aktarıyor.

DEV Community3 dk okuma0 Yorumlar

Bir veri tabanı denetim sistemi kurma ihtiyacı çoğu zaman planlı bir mimari sürecin değil, acil bir gereksinimin sonucu olarak ortaya çıkar. Bir ekip üyesi doğrudan veri değişiklikleri yapılabilen bir denetim çözümü istediğinde, mimari planlama yerine operasyonel bir çözüm hızla hayata geçirilmek zorunda kalınır.

Bu gereksinimin odağı genellikle bireysel kullanıcıların doğrudan veri manipülasyonu (SELECT, INSERT, UPDATE, DELETE) gerçekleştirmesiyle sınırlıdır. Uygulama hizmet hesapları tarafından yapılan otomatik değişiklikler değil, doğrudan insan kaynaklı erişimler denetlenmelidir. Örneğin, psql üzerinden bağlantı kuran bir geliştirici, acil durumda ad-hoc bir sorgu çalıştıran destek mühendisi veya aslında erişim yetkisi bulunmaması gereken bir hesap bu kapsamda değerlendirilir.

Bu yaklaşım mimari kararları da şekillendirir: pgAudit’in yalnızca bireysel kullanıcı hesapları için etkinleştirilmesi gerekir. Uygulama hizmet hesapları ise tamamen hariç tutulur.

Oracle’dan Aurora PostgreSQL’e Geçiş: Temel Farklar

Daha önce Oracle veri tabanlarında çalışanlar için Aurora PostgreSQL’e geçiş, denetim mekanizmalarındaki önemli farklılıkları anlamakla başlar. Oracle’ın Unified Auditing özelliği, kullanıcı, eylem ve nesne bazında tek bir politika tanımıyla işleri kolaylaştırır:

CREATE AUDIT POLICY kullanici_dml_etkinlikleri 
  ACTIONS SELECT, INSERT, UPDATE, DELETE ON app_schema.orders
  WHEN 'SYS_CONTEXT(''USERENV'',''SESSION_USER'') != ''APP_SVC_ACCOUNT''' 
  EVALUATE PER SESSION;

AUDIT POLICY kullanici_dml_etkinlikleri;

Bu politika sonrasında kayıtlar UNIFIED_AUDIT_TRAIL adlı yapılandırılmış bir görüntüye düşer. Bu yapı, Elasticsearch, Splunk veya OpenSearch gibi araçlara aktarılabilir. Hazırlanan sorgularla toplu veri silmeleri, gece geç saatlerdeki erişimler veya beklenmeyen DDL değişiklikleri gibi durumlar tespit edilerek PagerDuty veya Opsgenie üzerinden uyarılar gönderilebilir.

Ancak Oracle’ın bu yaklaşımında önemli bir operasyonel risk bulunur: denetim tablolarının dolması durumunda veri tabanı duraksar. Bu, veri bütünlüğünü korurken kullanılabilirliği olumsuz etkiler. Aurora PostgreSQL’de pgAudit’in log akışına yazılması, bu riski ortadan kaldırır. Log teslimatında yaşanan sorunlarda veri tabanı çalışmaya devam eder.

Aurora PostgreSQL’de pgAudit’in Temel Mimarisi

Aurora PostgreSQL’de pgAudit’in devreye alınması, log yönetimi ve uyarı sistemlerinin entegrasyonunu gerektirir. Temel akış şu şekilde işler:

  • Aurora PostgreSQL’de pgAudit, bireysel kullanıcılar için etkinleştirilir.
  • Kayıtlar doğrudan CloudWatch Logs’a gönderilir.
  • EventBridge, her 5 dakikada bir log akışını tarar.
  • Bir Lambda fonksiyonu CloudWatch Logs Insights sorgusu çalıştırır, gürültüyü filtreler ve sayısal metriği yayınlar.
  • CloudWatch Alarm, bu metriği değerlendirir ve eşik aşıldığında SNS üzerinden uyarılar gönderir.

Lambda fonksiyonu kritik bir rol oynar, çünkü CloudWatch Alarms doğrudan Log Insights sorgularını değerlendiremez. Lambda’nın çalıştırdığı her sorgunun çıktısı ayrıca Lambda loglarında da yer alır. Bu, uyumluluk denetimlerinde "ilk olarak ne zaman fark edildi?" gibi sorulara yanıt verebilmek için önemlidir.

Tam kod, IAM politikaları, SNS yapılandırmaları ve Terraform modülü için: github.com/pcraavi/PostgreSQL-Audit

Kritik Hata 1: pgAudit’in Sessizce Devre Dışı Kalması

pgAudit’i etkinleştirmek için ilk adım shared_preload_libraries parametresine eklenmesi ve kümenin yeniden başlatılmasıdır. Basit görünen bu işlem, aslında yalnızca ikili dosyanın paylaşımlı belleğe yüklenmesini sağlar. Ancak pgAudit’in tam olarak çalışabilmesi için ayrıca aşağıdaki komutun çalıştırılması gerekir:

CREATE EXTENSION pgaudit;

Bu komutun çalıştırılmaması durumunda hiçbir kayıt oluşmaz. Cluster yeniden başlatılmış, parametre doğru şekilde ayarlanmış ve loglar CloudWatch’a aktarılıyor olsa bile, ortada hiçbir iz bulunmaz. Tanı koymak için aşağıdaki sorgu kullanılabilir:

SELECT * FROM pg_extension WHERE extname = 'pgaudit';

Bu sorgunun sıfır satır döndürmesi, sorunun kaynağını hemen ortaya çıkarır: pgAudit eklentisi henüz oluşturulmamıştır. Ardından bireysel kullanıcılar için denetim etkinleştirilebilir:

ALTER USER john_doe SET pgaudit.log TO 'all';

-- Doğrulama
SELECT usename, useconfig FROM pg_user WHERE usename = 'john_doe';

Kritik Hata 2: Gürültüden Anlamlı Veriye Geçmek

Üretim kümesinden ilk log kayıtlarına baktığınızda, sinyal-gürültü oranı oldukça düşüktür. Her bağlantıda veri tabanı araçları (DBeaver, DataGrip, pgAdmin) katalog sorguları çalıştırır. JDBC sürücüleri bağlantı başlatma sırasında çeşitli SELECT sorguları gönderir. Bağlantı havuzları sağlık kontrolleri yapar. Bu raw log akışına doğrudan uyarı kurarsanız, sürekli olarak gürültüye maruz kalırsınız. Zamanla bu durum, sisteminizin uyarılarını ciddiye almamanıza ve denetim mekanizmasını tamamen devre dışı bırakmanıza yol açar.

Üretim trafiğini izleyerek geliştirilen bir filtreleme sorgusu aşağıdaki gibidir:

fields @timestamp, @message, @logStream, @log 
| filter @message like /AUDIT:/ 
| filter (@message like /SELECT/ or @message like /INSERT/ or @message like /UPDATE/ or @message like /DELETE/) 
| filter @message not like /SELECT version()/ 
| filter @message not like /pg_shdescription/ 
| filter @message not like /pg_catalog/ 
| filter @message not like /information_schema/ 
| filter @message not like /SET application_name/

Bu sorgunun amacı, yalnızca uygulama tablolarına yapılan doğrudan veri manipülasyonlarını ve yasaklı sorguları hariç tutmaktır. Log Insights sorgusunun sürekli iyileştirilmesi, denetim sisteminin etkinliğini doğrudan etkiler.

Sonuç: Denetim Sistemini Sürekli Geliştirmek

Aurora PostgreSQL’de insan kaynaklı veri değişikliklerini denetlemek, Oracle’dan farklı bir yaklaşım gerektirir. pgAudit’in doğru şekilde yapılandırılması, log yönetimi ve uyarı sistemlerinin entegrasyonu, bu sürecin kritik bileşenleridir. Ancak yalnızca teknik kurulum yeterli değildir; sürekli izleme, gürültü filtreleme ve uyumluluk gereksinimlerine yanıt verebilmek için sistemin sürekli olarak iyileştirilmesi gerekir.

Denetim sisteminin etkinliği, üretim ortamındaki gerçek kullanıcı davranışlarının izlenmesiyle doğrudan ilişkilidir. Başlangıçta karmaşık görünen bu süreç, doğru adımlar izlendiğinde güvenilir ve ölçeklenebilir bir denetim altyapısına dönüşebilir.

Yapay zeka özeti

AWS üzerinde Aurora PostgreSQL’de insan kaynaklı veri değişikliklerini denetlemek için pgAudit’in nasıl kurulacağını ve kritik hatalardan nasıl kaçınılacağını öğrenin. Adım adım rehber ve filtreleme örnekleri.

Yorumlar

00
YORUM BIRAK
ID #ZE71H6

0 / 1200 KARAKTER

İnsan doğrulaması

9 + 9 = ?

Editör onayı sonrası yayına girer

Moderasyon · Spam koruması aktif

Henüz onaylı yorum yok. İlk yorumu sen bırak.