{"id":42053,"date":"2026-05-25T09:07:13","date_gmt":"2026-05-25T06:07:13","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/pgaudit-yetkilendirme-acigi-gdpr-uyumunda-rol-bazli-gunluklemenin-yetmezligi\/"},"modified":"2026-05-25T09:07:43","modified_gmt":"2026-05-25T06:07:43","slug":"pgaudit-yetkilendirme-acigi-gdpr-uyumunda-rol-bazli-gunluklemenin-yetmezligi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/pgaudit-yetkilendirme-acigi-gdpr-uyumunda-rol-bazli-gunluklemenin-yetmezligi\/","title":{"rendered":"pgAudit Yetkilendirme A\u00e7\u0131\u011f\u0131: GDPR Uyumunda Rol Bazl\u0131 G\u00fcnl\u00fcklemenin Yetmezli\u011fi"},"content":{"rendered":"<h2>pgAudit Yetkilendirme A\u00e7\u0131\u011f\u0131: GDPR Uyumunda Rol Bazl\u0131 G\u00fcnl\u00fcklemenin Yetmezli\u011fi<\/h2>\n<p>PostgreSQL veritabanlar\u0131nda denetim g\u00fcnl\u00fcklemesi (audit logging) yapmak, modern veri g\u00fcvenli\u011fi ve uyumluluk standartlar\u0131 i\u00e7in hayati bir gerekliliktir. \u00d6zellikle Genel Veri Koruma Y\u00f6netmeli\u011fi (GDPR) gibi kat\u0131 d\u00fczenlemeler, veri i\u015fleme faaliyetlerinin detayl\u0131 bir \u015fekilde izlenmesini ve kaydedilmesini zorunlu k\u0131lar. pgAudit, PostgreSQL i\u00e7in g\u00fc\u00e7l\u00fc bir denetim arac\u0131 olsa da, standart rol bazl\u0131 g\u00fcnl\u00fckleme yakla\u015f\u0131m\u0131, ger\u00e7ek i\u015flemi yapan kullan\u0131c\u0131y\u0131 gizleyerek \u00f6nemli bir yetkilendirme a\u00e7\u0131\u011f\u0131 olu\u015fturur. Bu makale, pgAudit&#8217;teki bu bo\u015flu\u011fu, neden GDPR uyumu i\u00e7in yetersiz kald\u0131\u011f\u0131n\u0131 ve ger\u00e7ek kullan\u0131c\u0131 seviyesinde izlenebilirlik sa\u011flayarak veri g\u00fcvenli\u011finizi nas\u0131l art\u0131raca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m a\u00e7\u0131kl\u0131yor.<\/p>\n<h2>pgAudit ve GDPR Uyumunun Kritik \u00d6nemi Nedir?<\/h2>\n<p>G\u00fcn\u00fcm\u00fcz dijital d\u00fcnyas\u0131nda, i\u015fletmelerin en de\u011ferli varl\u0131klar\u0131ndan biri veridir. M\u00fc\u015fteri bilgileri, finansal kay\u0131tlar veya hassas ki\u015fisel veriler olsun, bu verilerin g\u00fcvenli\u011fi ve gizlili\u011fi en \u00fcst d\u00fczeyde sa\u011flanmal\u0131d\u0131r. Bu ba\u011flamda, veritaban\u0131 denetim g\u00fcnl\u00fcklemesi, yani veritaban\u0131nda kimin, ne zaman, hangi i\u015flemi yapt\u0131\u011f\u0131n\u0131n kaydedilmesi, sadece iyi bir uygulama de\u011fil, \u00e7o\u011fu zaman yasal bir zorunluluktur. \u00d6zellikle Avrupa Birli\u011fi&#8217;nin getirdi\u011fi GDPR (General Data Protection Regulation), veri i\u015fleyen kurulu\u015flara ciddi y\u00fck\u00fcml\u00fcl\u00fckler getirmektedir. GDPR, ki\u015fisel verilerin korunmas\u0131n\u0131 hedefler ve veri ihlallerinde a\u011f\u0131r cezalar \u00f6ng\u00f6r\u00fcr. Bu nedenle, bir veri ihlali durumunda kimin sorumlu oldu\u011funu veya yetkisiz bir i\u015flemin kim taraf\u0131ndan yap\u0131ld\u0131\u011f\u0131n\u0131 belirleyebilmek, hem yasal uyum hem de adli inceleme a\u00e7\u0131s\u0131ndan kritik \u00f6neme sahiptir.<\/p>\n<p>PostgreSQL, a\u00e7\u0131k kaynak d\u00fcnyas\u0131n\u0131n en pop\u00fcler ve g\u00fcvenilir veritabanlar\u0131ndan biridir. pgAudit eklentisi, PostgreSQL&#8217;e kapsaml\u0131 denetim g\u00fcnl\u00fckleme yetenekleri kazand\u0131r\u0131r. Bu eklenti sayesinde, veritaban\u0131 y\u00f6neticileri (DBA&#8217;ler) ve g\u00fcvenlik ekipleri, belirli SQL sorgular\u0131n\u0131, ba\u011flant\u0131lar\u0131 ve oturumlar\u0131 izleyebilir, b\u00f6ylece potansiyel g\u00fcvenlik olaylar\u0131n\u0131 tespit edebilirler. Ancak pgAudit&#8217;in standart rol bazl\u0131 g\u00fcnl\u00fckleme yakla\u015f\u0131m\u0131, \u00f6zellikle modern uygulama mimarilerinde bir bo\u015fluk yarat\u0131r. \u00c7o\u011fu uygulama, veritaban\u0131na tek bir genel rol (\u00f6rne\u011fin, <code>app_user<\/code>) ile ba\u011flan\u0131r ve bu rol\u00fc kullanan farkl\u0131 son kullan\u0131c\u0131lar\u0131n (\u00f6rne\u011fin, Ali, Ay\u015fe) i\u015flemlerini kendi i\u00e7inde y\u00f6netir. Bu durumda, pgAudit g\u00fcnl\u00fcklerinde yaln\u0131zca <code>app_user<\/code> rol\u00fc g\u00f6r\u00fcn\u00fcrken, ger\u00e7ekte i\u015flemi yapan son kullan\u0131c\u0131n\u0131n kim oldu\u011fu bilgisi kaybolur. Bu &#8220;yetkilendirme a\u00e7\u0131\u011f\u0131&#8221;, GDPR&#8217;\u0131n hesap verebilirlik ilkesiyle do\u011frudan \u00e7eli\u015fir ve bir veri ihlali durumunda sorumlulu\u011fun tespitini imkans\u0131z hale getirebilir.<\/p>\n<p>Bu makalede, pgAudit&#8217;in temellerini, rol bazl\u0131 g\u00fcnl\u00fcklemenin nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 ve bu a\u00e7\u0131\u011f\u0131n neden bir sorun te\u015fkil etti\u011fini ayr\u0131nt\u0131l\u0131 olarak inceleyece\u011fiz. Daha da \u00f6nemlisi, bu a\u00e7\u0131\u011f\u0131 kapatmak i\u00e7in uygulama katman\u0131ndan veritaban\u0131 seviyesine kadar uzanan pratik \u00e7\u00f6z\u00fcm yollar\u0131n\u0131 ve ad\u0131m ad\u0131m entegrasyon \u00f6rneklerini sunaca\u011f\u0131z. Amac\u0131m\u0131z, okuyucular\u0131n pgAudit&#8217;i GDPR ve di\u011fer veri koruma y\u00f6netmeliklerine tam uyumlu hale getirmeleri i\u00e7in gerekli bilgi ve ara\u00e7lar\u0131 sa\u011flamakt\u0131r. B\u00f6ylece, hem veri g\u00fcvenli\u011fini en \u00fcst d\u00fczeye \u00e7\u0131karacak hem de yasal riskleri minimize edeceksiniz. Unutmay\u0131n, veri g\u00fcvenli\u011fi bir s\u00fcre\u00e7tir ve s\u00fcrekli iyile\u015ftirme gerektirir; bu makale, bu s\u00fcrecin \u00f6nemli bir ad\u0131m\u0131n\u0131 olu\u015fturmaktad\u0131r.<\/p>\n<h2>pgAudit&#8217;in Temelleri ve Rol Bazl\u0131 G\u00fcnl\u00fcklemenin \u0130\u015fleyi\u015fi Nas\u0131l?<\/h2>\n<p>pgAudit, PostgreSQL veritabanlar\u0131 i\u00e7in standart bir denetim g\u00fcnl\u00fc\u011f\u00fc (audit log) \u00e7\u00f6z\u00fcm\u00fc sunan bir eklentidir. Veritaban\u0131 faaliyetlerini detayl\u0131 bir \u015fekilde kaydetmek i\u00e7in tasarlanm\u0131\u015ft\u0131r ve g\u00fcvenlik, uyumluluk veya adli analiz gibi \u00e7e\u015fitli ama\u00e7lar i\u00e7in kullan\u0131labilir. pgAudit&#8217;i kullanmaya ba\u015flamak i\u00e7in \u00f6ncelikle PostgreSQL yap\u0131land\u0131rma dosyas\u0131nda (genellikle <code>postgresql.conf<\/code>) eklentiyi etkinle\u015ftirmek ve gerekli parametreleri ayarlamak gerekir. Temel olarak, pgAudit iki ana g\u00fcnl\u00fckleme t\u00fcr\u00fc sunar: oturum g\u00fcnl\u00fc\u011f\u00fc (session logging) ve nesne g\u00fcnl\u00fc\u011f\u00fc (object logging).<\/p>\n<ul>\n<li><strong>Oturum G\u00fcnl\u00fc\u011f\u00fc (Session Logging):<\/strong> T\u00fcm SQL ifadelerini ve ba\u011flant\u0131 olaylar\u0131n\u0131 kaydeder. Bu, veritaban\u0131na yap\u0131lan her t\u00fcrl\u00fc etkile\u015fimi genel olarak izlemek i\u00e7in kullan\u0131l\u0131r.<\/li>\n<li><strong>Nesne G\u00fcnl\u00fc\u011f\u00fc (Object Logging):<\/strong> Belirli tablolar, g\u00f6r\u00fcn\u00fcmler veya di\u011fer veritaban\u0131 nesneleri \u00fczerindeki i\u015flemleri (\u00f6rne\u011fin, <code>SELECT<\/code>, <code>INSERT<\/code>, <code>UPDATE<\/code>, <code>DELETE<\/code>) kaydetmeye odaklan\u0131r. Bu, hassas verilere eri\u015fimi veya manip\u00fclasyonu daha gran\u00fcler bir \u015fekilde izlemek i\u00e7in idealdir.<\/li>\n<\/ul>\n<p>pgAudit&#8217;in etkinle\u015ftirilmesi genellikle a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 i\u00e7erir:<\/p>\n<ol>\n<li><code>postgresql.conf<\/code> dosyas\u0131nda <code>shared_preload_libraries = 'pgaudit'<\/code> sat\u0131r\u0131n\u0131 eklemek.<\/li>\n<li>Veritaban\u0131n\u0131 yeniden ba\u015flatmak.<\/li>\n<li>Veritaban\u0131nda <code>CREATE EXTENSION pgaudit;<\/code> komutunu \u00e7al\u0131\u015ft\u0131rmak.<\/li>\n<li>\u0130stenen denetim davran\u0131\u015f\u0131n\u0131 yap\u0131land\u0131rmak i\u00e7in <code>pgaudit.log<\/code>, <code>pgaudit.log_catalog<\/code>, <code>pgaudit.log_client<\/code> gibi parametreleri ayarlamak. \u00d6rne\u011fin, <code>pgaudit.log = 'read, write'<\/code> t\u00fcm okuma ve yazma i\u015flemlerini g\u00fcnl\u00fc\u011fe kaydeder.<\/li>\n<\/ol>\n<p>PostgreSQL&#8217;de kullan\u0131c\u0131lar ve roller, veritaban\u0131 eri\u015fimini ve yetkilendirmeyi y\u00f6netmek i\u00e7in temel mekanizmalard\u0131r. Bir kullan\u0131c\u0131, asl\u0131nda \u00f6zel yetkilere sahip bir rold\u00fcr. Uygulamalar genellikle veritaban\u0131na belirli bir rol (\u00f6rne\u011fin, <code>app_user<\/code>) ile ba\u011flan\u0131r. Bu rol, uygulaman\u0131n ihtiya\u00e7 duydu\u011fu t\u00fcm veritaban\u0131 nesnelerine eri\u015fim yetkisine sahiptir. Bu yakla\u015f\u0131m, g\u00fcvenlik ve y\u00f6netilebilirlik a\u00e7\u0131s\u0131ndan baz\u0131 avantajlar sunar; \u00f6rne\u011fin, uygulaman\u0131n veritaban\u0131 kimlik bilgileri tek bir noktada tutulur ve y\u00f6netilir. Ancak, bu model pgAudit&#8217;in rol bazl\u0131 g\u00fcnl\u00fckleme davran\u0131\u015f\u0131 ile birle\u015fti\u011finde, &#8220;yetkilendirme a\u00e7\u0131\u011f\u0131&#8221; olarak adland\u0131rd\u0131\u011f\u0131m\u0131z sorunu ortaya \u00e7\u0131kar\u0131r.<\/p>\n<p>Varsay\u0131lan olarak, pgAudit bir i\u015flemi kaydederken, o anda aktif olan veritaban\u0131 rol\u00fcn\u00fc (<code>current_user<\/code>) veya oturumu ba\u015flatan rol\u00fc (<code>session_user<\/code>) kullan\u0131r. E\u011fer uygulaman\u0131z veritaban\u0131na <code>app_user<\/code> rol\u00fcyle ba\u011flan\u0131yorsa ve bu rol\u00fc kullanarak i\u015flemleri ger\u00e7ekle\u015ftiriyorsa, pgAudit g\u00fcnl\u00fcklerinde t\u00fcm i\u015flemlerin <code>app_user<\/code> taraf\u0131ndan yap\u0131ld\u0131\u011f\u0131 g\u00f6r\u00fcnecektir. Uygulama i\u00e7inde farkl\u0131 son kullan\u0131c\u0131lar (\u00f6rne\u011fin, bir web uygulamas\u0131nda oturum a\u00e7an Ahmet veya bir mobil uygulamay\u0131 kullanan Zeynep) olsa bile, pgAudit bu son kullan\u0131c\u0131lar\u0131n kimli\u011fini do\u011frudan g\u00fcnl\u00fc\u011fe kaydetmez. Bu durum, ilk bak\u0131\u015fta yeterli gibi g\u00f6r\u00fcnse de, \u00f6zellikle GDPR gibi veri koruma d\u00fczenlemelerinin gerektirdi\u011fi y\u00fcksek d\u00fczeyde hesap verebilirlik ve izlenebilirlik standartlar\u0131n\u0131 kar\u015f\u0131lamakta yetersiz kal\u0131r. Ger\u00e7ekte, bu yakla\u015f\u0131m, bir g\u00fcvenlik ihlali veya yetkisiz eri\u015fim durumunda, olay\u0131n kayna\u011f\u0131n\u0131 ve sorumlusunu tespit etmeyi son derece zorla\u015ft\u0131r\u0131r.<\/p>\n<h2>pgAudit Yetkilendirme A\u00e7\u0131\u011f\u0131: Ger\u00e7ek Kullan\u0131c\u0131 Kimli\u011fini Neden Gizler?<\/h2>\n<p>pgAudit&#8217;in temel i\u015fleyi\u015fini ve rol bazl\u0131 g\u00fcnl\u00fcklemenin nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 anlad\u0131ktan sonra, \u015fimdi bu yakla\u015f\u0131m\u0131n neden bir &#8220;yetkilendirme a\u00e7\u0131\u011f\u0131&#8221; olu\u015fturdu\u011funu ve ger\u00e7ek kullan\u0131c\u0131 kimli\u011fini nas\u0131l gizledi\u011fini daha yak\u0131ndan inceleyelim. Bu a\u00e7\u0131\u011f\u0131n temelinde, PostgreSQL&#8217;in kullan\u0131c\u0131 ve rol y\u00f6netimi mekanizmalar\u0131n\u0131n, \u00f6zellikle de <code>SET ROLE<\/code> ve <code>SET SESSION AUTHORIZATION<\/code> gibi komutlar\u0131n kullan\u0131m\u0131 yatmaktad\u0131r. Bu komutlar, bir oturumun aktif rol\u00fcn\u00fc veya t\u00fcm oturumun yetkilendirme ba\u011flam\u0131n\u0131 de\u011fi\u015ftirmeye olanak tan\u0131r.<\/p>\n<p>Modern uygulama mimarilerinde, g\u00fcvenlik ve kaynak y\u00f6netimi a\u00e7\u0131s\u0131ndan yayg\u0131n bir pratik, uygulaman\u0131n veritaban\u0131na tek bir veritaban\u0131 rol\u00fcyle ba\u011flanmas\u0131d\u0131r. \u00d6rne\u011fin, bir web uygulamas\u0131, veritaban\u0131na ba\u011flanmak i\u00e7in <code>web_app_db_user<\/code> ad\u0131nda \u00f6zel bir rol kullan\u0131r. Bu rol, uygulaman\u0131n ihtiya\u00e7 duydu\u011fu t\u00fcm okuma ve yazma i\u015flemlerini ger\u00e7ekle\u015ftirmek i\u00e7in gerekli yetkilere sahiptir. Uygulama i\u00e7inde ise farkl\u0131 son kullan\u0131c\u0131lar (\u00f6rne\u011fin, m\u00fc\u015fteri hizmetleri temsilcisi Ay\u015fe veya sat\u0131\u015f y\u00f6neticisi Can) kendi kimlik bilgileriyle oturum a\u00e7ar ve uygulama \u00fczerinden veritaban\u0131 i\u015flemleri yaparlar.<\/p>\n<p>\u0130\u015fte tam da bu noktada sorun ba\u015flar: Ay\u015fe veya Can, uygulama aray\u00fcz\u00fc \u00fczerinden bir veri g\u00fcncelleme i\u015flemi yapt\u0131\u011f\u0131nda, bu i\u015flem veritaban\u0131na <code>web_app_db_user<\/code> rol\u00fc alt\u0131nda g\u00f6nderilir. pgAudit, varsay\u0131lan olarak bu i\u015flemi kaydedece\u011finde, g\u00fcnl\u00fc\u011fe kaydedilen kullan\u0131c\u0131 bilgisi <code>web_app_db_user<\/code> olacakt\u0131r. G\u00fcnl\u00fcklerde, &#8220;<code>web_app_db_user<\/code>, <code>musteri_bilgileri<\/code> tablosunu g\u00fcncelledi&#8221; gibi bir kay\u0131t g\u00f6r\u00fcrs\u00fcn\u00fcz. Ancak bu kay\u0131t, i\u015flemi ger\u00e7ekten kimin yapt\u0131\u011f\u0131n\u0131 (Ay\u015fe mi, Can m\u0131?) g\u00f6stermez. Ger\u00e7ek kullan\u0131c\u0131 kimli\u011fi, uygulama katman\u0131nda kal\u0131r ve veritaban\u0131 g\u00fcnl\u00fcklerine yans\u0131maz.<\/p>\n<h3>Vaka Analizi: Bir Bankac\u0131l\u0131k Uygulamas\u0131 Senaryosu<\/h3>\n<p>Bu durumu somutla\u015ft\u0131rmak i\u00e7in bir bankac\u0131l\u0131k uygulamas\u0131 senaryosunu ele alal\u0131m. Bir banka, m\u00fc\u015fterilerinin hesaplar\u0131n\u0131 y\u00f6netmek i\u00e7in bir web uygulamas\u0131 kullan\u0131yor. Bu uygulama, veritaban\u0131na <code>bank_app_user<\/code> rol\u00fcyle ba\u011flan\u0131yor. Bankada \u00e7al\u0131\u015fan m\u00fc\u015fteri temsilcisi Elif ve \u015fube m\u00fcd\u00fcr\u00fc Mert, kendi kullan\u0131c\u0131 adlar\u0131 ve \u015fifreleriyle bu uygulamaya giri\u015f yap\u0131yorlar. Bir g\u00fcn, Elif bir m\u00fc\u015fterinin hesap bilgilerinde yetkisiz bir de\u011fi\u015fiklik yap\u0131yor. pgAudit g\u00fcnl\u00fcklerine bakt\u0131\u011f\u0131n\u0131zda, sadece <code>bank_app_user<\/code> rol\u00fcn\u00fcn <code>hesaplar<\/code> tablosunu g\u00fcncelledi\u011fini g\u00f6r\u00fcyorsunuz. Bu g\u00fcnl\u00fck kayd\u0131, i\u015flemi kimin yapt\u0131\u011f\u0131n\u0131 (Elif mi, Mert mi, yoksa ba\u015fka bir <code>bank_app_user<\/code> kullan\u0131c\u0131s\u0131 m\u0131?) kesin olarak belirlemenize olanak sa\u011flamaz. Bu durum, hem i\u00e7 denetim s\u00fcre\u00e7lerini sekteye u\u011frat\u0131r hem de bir veri ihlali durumunda sorumlulu\u011fun tespitini imkans\u0131z hale getirir. GDPR gibi d\u00fczenlemeler kar\u015f\u0131s\u0131nda, bu t\u00fcr bir belirsizlik, ciddi yasal ve finansal sonu\u00e7lar do\u011furabilir.<\/p>\n<p>Bu yetkilendirme a\u00e7\u0131\u011f\u0131, \u00f6zellikle payla\u015f\u0131lan veritaban\u0131 ba\u011flant\u0131 havuzlar\u0131 (connection pools) kullan\u0131ld\u0131\u011f\u0131nda daha da karma\u015f\u0131k hale gelir. Uygulama, birden fazla son kullan\u0131c\u0131 i\u00e7in ayn\u0131 veritaban\u0131 ba\u011flant\u0131s\u0131n\u0131 yeniden kullanabilir, bu da hangi i\u015flemin hangi son kullan\u0131c\u0131ya ait oldu\u011funu belirlemeyi neredeyse imkans\u0131z k\u0131lar. Bu nedenle, pgAudit&#8217;i GDPR uyumlu hale getirmek i\u00e7in, uygulama katman\u0131ndan ger\u00e7ek kullan\u0131c\u0131 kimli\u011fini veritaban\u0131 seviyesine aktarman\u0131n ve pgAudit&#8217;in bu bilgiyi yakalamas\u0131n\u0131 sa\u011flaman\u0131n yollar\u0131n\u0131 bulmak zorunday\u0131z.<\/p>\n<h2>GDPR ve Di\u011fer Veri Koruma Y\u00f6netmelikleri Kar\u015f\u0131s\u0131nda Bu A\u00e7\u0131\u011f\u0131n Sonu\u00e7lar\u0131 Nelerdir?<\/h2>\n<p>pgAudit&#8217;teki rol bazl\u0131 g\u00fcnl\u00fckleme a\u00e7\u0131\u011f\u0131n\u0131n sadece teknik bir mesele olmad\u0131\u011f\u0131n\u0131, ayn\u0131 zamanda ciddi yasal ve operasyonel sonu\u00e7lar\u0131 oldu\u011funu anlamak kritik \u00f6neme sahiptir. \u00d6zellikle GDPR (Genel Veri Koruma Y\u00f6netmeli\u011fi) ve benzeri veri koruma d\u00fczenlemeleri, bu a\u00e7\u0131\u011f\u0131n i\u015fletmeler i\u00e7in ne kadar riskli oldu\u011funu a\u00e7\u0131k\u00e7a ortaya koymaktad\u0131r. GDPR, ki\u015fisel verilerin i\u015flenmesiyle ilgili kat\u0131 kurallar getirir ve bu kurallara uyulmamas\u0131 durumunda a\u011f\u0131r para cezalar\u0131 \u00f6ng\u00f6r\u00fcr. Bu ba\u011flamda, pgAudit&#8217;teki yetkilendirme a\u00e7\u0131\u011f\u0131, GDPR&#8217;\u0131n temel ilkeleriyle do\u011frudan \u00e7eli\u015fir ve i\u015fletmeleri savunmas\u0131z b\u0131rak\u0131r.<\/p>\n<p>GDPR&#8217;\u0131n en \u00f6nemli ilkelerinden biri &#8220;hesap verebilirlik&#8221; (accountability) ilkesidir. Bu ilke, veri denetleyicilerinin (yani ki\u015fisel verileri i\u015fleyen kurulu\u015flar\u0131n) GDPR&#8217;a uyumu g\u00f6sterme ve kan\u0131tlama y\u00fck\u00fcml\u00fcl\u00fc\u011f\u00fcn\u00fc ifade eder. Bir veri ihlali durumunda, kimin, ne zaman ve nas\u0131l eri\u015fti\u011fini veya verileri de\u011fi\u015ftirdi\u011fini net bir \u015fekilde g\u00f6sterememek, hesap verebilirlik ilkesinin ihlali anlam\u0131na gelir. Rol bazl\u0131 g\u00fcnl\u00fckleme, ger\u00e7ek kullan\u0131c\u0131 kimli\u011fini gizledi\u011fi i\u00e7in, bir ihlal meydana geldi\u011finde ilgili ki\u015finin tespitini imkans\u0131z hale getirir. \u00d6rne\u011fin, bir \u00e7al\u0131\u015fan\u0131n yetkisiz bir \u015fekilde m\u00fc\u015fteri verilerine eri\u015fti\u011fi tespit edildi\u011finde, pgAudit g\u00fcnl\u00fcklerinde sadece uygulaman\u0131n genel rol\u00fc g\u00f6r\u00fcn\u00fcyorsa, bu \u00e7al\u0131\u015fan\u0131n kim oldu\u011funu belirleyemezsiniz. Bu durum, GDPR&#8217;\u0131n gerektirdi\u011fi detayl\u0131 denetim izini sa\u011flayamaz ve veri denetleyicisini yasal olarak zor durumda b\u0131rak\u0131r.<\/p>\n<p>Bu a\u00e7\u0131\u011f\u0131n sonu\u00e7lar\u0131 \u015funlar\u0131 i\u00e7erir:<\/p>\n<ul>\n<li><strong>Sorumlulu\u011fun Tespiti Zorlu\u011fu:<\/strong> Bir veri ihlali, yetkisiz eri\u015fim veya veri manip\u00fclasyonu durumunda, olay\u0131 ger\u00e7ekle\u015ftiren ger\u00e7ek ki\u015fiyi belirlemek neredeyse imkans\u0131z hale gelir. Bu durum, hem i\u00e7 soru\u015fturmalar\u0131 engeller hem de d\u0131\u015f denetimler veya adli s\u00fcre\u00e7lerde i\u015fletmeyi zay\u0131flat\u0131r.<\/li>\n<li><strong>Yasal ve Finansal Riskler:<\/strong> GDPR&#8217;a uyumsuzluk, ciroya ba\u011fl\u0131 olarak milyonlarca Euro&#8217;ya varan veya belirli bir tavan\u0131 a\u015fan para cezalar\u0131na yol a\u00e7abilir. Ger\u00e7ek kullan\u0131c\u0131 izlenebilirli\u011fi olmadan, bir ihlali yeterince ara\u015ft\u0131ramamak veya raporlayamamak, bu cezalar\u0131n uygulanma olas\u0131l\u0131\u011f\u0131n\u0131 art\u0131r\u0131r. Ayr\u0131ca, veri ihlalleri, \u015firketin itibar\u0131na ciddi zararlar verebilir ve m\u00fc\u015fteri g\u00fcvenini sarsabilir.<\/li>\n<li><strong>\u0130\u00e7 Denetim ve Uyum S\u00fcre\u00e7lerindeki Eksiklikler:<\/strong> \u0130\u015fletmelerin kendi i\u00e7 denetim mekanizmalar\u0131, g\u00fcvenlik politikalar\u0131n\u0131n etkinli\u011fini de\u011ferlendirmek ve uyum risklerini y\u00f6netmek i\u00e7in detayl\u0131 g\u00fcnl\u00fck kay\u0131tlar\u0131na ihtiya\u00e7 duyar. Ger\u00e7ek kullan\u0131c\u0131 bilgisinin eksikli\u011fi, bu denetimlerin y\u00fczeysel kalmas\u0131na ve potansiyel zafiyetlerin g\u00f6zden ka\u00e7\u0131r\u0131lmas\u0131na neden olur.<\/li>\n<li><strong>Adli \u0130ncelemenin \u0130mkans\u0131zl\u0131\u011f\u0131:<\/strong> Bir siber sald\u0131r\u0131 veya i\u00e7 tehdit durumunda, adli bili\u015fim uzmanlar\u0131, olay\u0131n kronolojisini \u00e7\u0131karmak ve sald\u0131rgan\u0131n eylemlerini takip etmek i\u00e7in detayl\u0131 g\u00fcnl\u00fck kay\u0131tlar\u0131na g\u00fcvenirler. Ger\u00e7ek kullan\u0131c\u0131 bilgisinin eksikli\u011fi, bu t\u00fcr incelemeleri b\u00fcy\u00fck \u00f6l\u00e7\u00fcde k\u0131s\u0131tlar ve sald\u0131rgan\u0131n izini kaybettirmesine olanak tan\u0131r.<\/li>\n<\/ul>\n<p>\u00d6zetle, pgAudit&#8217;teki rol bazl\u0131 g\u00fcnl\u00fckleme a\u00e7\u0131\u011f\u0131, GDPR ve benzeri d\u00fczenlemeler kar\u015f\u0131s\u0131nda i\u015fletmeler i\u00e7in kabul edilemez bir risk olu\u015fturur. Bu a\u00e7\u0131k, sadece teknik bir eksiklik de\u011fil, ayn\u0131 zamanda yasal uyum, g\u00fcvenlik ve itibar a\u00e7\u0131s\u0131ndan ciddi sonu\u00e7lar\u0131 olan stratejik bir zafiyettir. Bu nedenle, ger\u00e7ek kullan\u0131c\u0131 seviyesinde izlenebilirlik sa\u011flamak, modern veri g\u00fcvenli\u011fi stratejilerinin ayr\u0131lmaz bir par\u00e7as\u0131 olmal\u0131d\u0131r.<\/p>\n<h2>Ger\u00e7ek Kullan\u0131c\u0131 Seviyesinde \u0130zlenebilirlik Nas\u0131l Sa\u011flan\u0131r: \u00c7\u00f6z\u00fcm Yollar\u0131 Nelerdir?<\/h2>\n<p>pgAudit&#8217;teki yetkilendirme a\u00e7\u0131\u011f\u0131n\u0131n ciddi sonu\u00e7lar\u0131n\u0131 anlad\u0131ktan sonra, \u015fimdi bu a\u00e7\u0131\u011f\u0131 kapatmak ve ger\u00e7ek kullan\u0131c\u0131 seviyesinde izlenebilirlik sa\u011flamak i\u00e7in uygulanabilir \u00e7\u00f6z\u00fcm yollar\u0131na odaklanal\u0131m. Bu \u00e7\u00f6z\u00fcmler, uygulama katman\u0131ndan veritaban\u0131 seviyesine kadar farkl\u0131 yakla\u015f\u0131mlar\u0131 i\u00e7erir ve her birinin kendine \u00f6zg\u00fc avantajlar\u0131 ve dezavantajlar\u0131 bulunmaktad\u0131r. Amac\u0131m\u0131z, i\u015flemi ger\u00e7ekle\u015ftiren son kullan\u0131c\u0131n\u0131n kimli\u011fini pgAudit g\u00fcnl\u00fcklerine yans\u0131tabilmektir.<\/p>\n<h3>Uygulama Katman\u0131nda Kullan\u0131c\u0131 Bilgisini Aktarma<\/h3>\n<p>En yayg\u0131n ve etkili y\u00f6ntemlerden biri, uygulama katman\u0131nda oturum a\u00e7an ger\u00e7ek kullan\u0131c\u0131 kimli\u011fini veritaban\u0131na aktarmakt\u0131r. PostgreSQL, bu t\u00fcr bilgileri oturum seviyesinde iletmek i\u00e7in \u00e7e\u015fitli mekanizmalar sunar. Bu bilgiler daha sonra pgAudit taraf\u0131ndan yakalanabilir.<\/p>\n<ul>\n<li>\n            <strong><code>SET SESSION AUTHORIZATION<\/code> Kullan\u0131m\u0131:<\/strong> Bu komut, ge\u00e7erli oturumun yetkilendirme ba\u011flam\u0131n\u0131 ge\u00e7ici olarak de\u011fi\u015ftirir. Uygulama, veritaban\u0131na genel bir rolle (\u00f6rne\u011fin, <code>app_user<\/code>) ba\u011fland\u0131ktan sonra, her SQL sorgusundan \u00f6nce veya i\u015flem blo\u011funun ba\u015f\u0131nda, ger\u00e7ek son kullan\u0131c\u0131n\u0131n ad\u0131n\u0131 kullanarak <code>SET SESSION AUTHORIZATION 'gercek_kullanici_adi'<\/code> komutunu \u00e7al\u0131\u015ft\u0131rabilir. Bu komut, pgAudit taraf\u0131ndan kaydedilir ve b\u00f6ylece i\u015flemi yapan ger\u00e7ek kullan\u0131c\u0131 kimli\u011fi g\u00fcnl\u00fc\u011fe yans\u0131r. \u0130\u015flem bittikten sonra orijinal role geri d\u00f6nmek i\u00e7in <code>RESET SESSION AUTHORIZATION<\/code> kullan\u0131labilir. Ancak bu y\u00f6ntem, ger\u00e7ek kullan\u0131c\u0131n\u0131n veritaban\u0131nda bir rol olarak tan\u0131mlanmas\u0131n\u0131 gerektirir, bu da y\u00f6netim y\u00fck\u00fcn\u00fc art\u0131rabilir.<\/p>\n<div class=\"code-container\">\n<pre><code>-- Uygulama veritaban\u0131na 'app_user' olarak ba\u011flan\u0131r\nSET SESSION AUTHORIZATION 'elif_celik'; -- Ger\u00e7ek kullan\u0131c\u0131 Elif \u00c7elik\nSELECT * FROM musteri_bilgileri WHERE id = 123;\nUPDATE musteri_bilgileri SET telefon = '555-1234' WHERE id = 123;\nRESET SESSION AUTHORIZATION; -- Orijinal role geri d\u00f6n<\/code><\/pre>\n<\/p><\/div>\n<\/li>\n<li>\n            <strong><code>SET pg.application_name<\/code> Kullan\u0131m\u0131:<\/strong> Bu, belki de en pratik ve az invaziv y\u00f6ntemdir. PostgreSQL, her oturum i\u00e7in bir uygulama ad\u0131 (<code>application_name<\/code>) belirlemenize olanak tan\u0131r. Bu parametre, <code>pg_stat_activity<\/code> g\u00f6r\u00fcn\u00fcm\u00fcnde de g\u00f6r\u00fclebilir ve pgAudit taraf\u0131ndan g\u00fcnl\u00fc\u011fe kaydedilebilir. Uygulama, her bir veritaban\u0131 ba\u011flant\u0131s\u0131 veya i\u015flem i\u00e7in, oturum a\u00e7an ger\u00e7ek kullan\u0131c\u0131n\u0131n ad\u0131n\u0131 <code>application_name<\/code> olarak ayarlayabilir.<\/p>\n<div class=\"code-container\">\n<pre><code>-- Uygulama veritaban\u0131na 'app_user' olarak ba\u011flan\u0131r\nSET pg.application_name = 'WebUygulamasi:elif_celik'; -- Ger\u00e7ek kullan\u0131c\u0131 Elif \u00c7elik\nSELECT * FROM urunler WHERE kategori = 'elektronik';\n-- pgAudit g\u00fcnl\u00fcklerinde 'WebUygulamasi:elif_celik' olarak g\u00f6r\u00fcn\u00fcr<\/code><\/pre>\n<\/p><\/div>\n<p>Bu y\u00f6ntem, ger\u00e7ek kullan\u0131c\u0131n\u0131n veritaban\u0131nda bir rol olarak tan\u0131mlanmas\u0131n\u0131 gerektirmez ve uygulaman\u0131n veritaban\u0131 ba\u011flant\u0131 havuzlar\u0131n\u0131 daha kolay y\u00f6netmesine olanak tan\u0131r. pgAudit&#8217;in <code>pgaudit.log_client = on<\/code> ayar\u0131 ile bu bilgiler g\u00fcnl\u00fc\u011fe kaydedilebilir.<\/p>\n<\/li>\n<\/ul>\n<h3>Veritaban\u0131 Seviyesinde Geli\u015ftirmeler (Trigger&#8217;lar ve Fonksiyonlar)<\/h3>\n<p>Uygulama katman\u0131nda de\u011fi\u015fiklik yapmak her zaman m\u00fcmk\u00fcn olmayabilir. Bu durumlarda, veritaban\u0131 seviyesinde \u00e7\u00f6z\u00fcmler d\u00fc\u015f\u00fcn\u00fclebilir:<\/p>\n<ul>\n<li>\n            <strong>Trigger&#8217;lar ile Kullan\u0131c\u0131 Bilgisi Kaydetme:<\/strong> Her hassas tablo \u00fczerindeki <code>INSERT<\/code>, <code>UPDATE<\/code>, <code>DELETE<\/code> i\u015flemleri i\u00e7in bir trigger (tetikleyici) olu\u015fturularak, i\u015flemi yapan ger\u00e7ek kullan\u0131c\u0131 bilgisi (e\u011fer <code>pg.application_name<\/code> gibi bir yerden al\u0131nabiliyorsa) ayr\u0131 bir denetim tablosuna kaydedilebilir. Bu y\u00f6ntem daha karma\u015f\u0131k olabilir ve performans \u00fczerinde etkisi olabilir.<\/p>\n<div class=\"code-container\">\n<pre><code>CREATE TABLE audit_log_gercek_kullanici (\n    id SERIAL PRIMARY KEY,\n    tablo_adi TEXT,\n    islem_turu TEXT,\n    gercek_kullanici TEXT,\n    islem_zamani TIMESTAMP DEFAULT NOW()\n);\n\nCREATE OR REPLACE FUNCTION log_gercek_kullanici()\nRETURNS TRIGGER AS $$\nBEGIN\n    INSERT INTO audit_log_gercek_kullanici (tablo_adi, islem_turu, gercek_kullanici)\n    VALUES (TG_TABLE_NAME, TG_OP, current_setting('pg.application_name', true));\n    RETURN NEW;\nEND;\n$$ LANGUAGE plpgsql;\n\nCREATE TRIGGER musteri_guncelleme_audit\nAFTER UPDATE ON musteri_bilgileri\nFOR EACH ROW EXECUTE FUNCTION log_gercek_kullanici();<\/code><\/pre>\n<\/p><\/div>\n<\/li>\n<\/ul>\n<h3>Middleware veya Proxy \u00c7\u00f6z\u00fcmleri<\/h3>\n<p>Veritaban\u0131 ba\u011flant\u0131lar\u0131n\u0131 y\u00f6neten bir ara katman (middleware) veya proxy kullanmak da bir \u00e7\u00f6z\u00fcm olabilir. \u00d6rne\u011fin, PGBouncer gibi ba\u011flant\u0131 havuzu y\u00f6neticileri, istemci bilgilerini (<code>client_addr<\/code>, <code>client_port<\/code>) koruyabilir ve bu bilgileri kullanarak daha detayl\u0131 g\u00fcnl\u00fckleme yap\u0131labilir. Baz\u0131 ileri d\u00fczey proxy&#8217;ler, uygulama katman\u0131ndan gelen \u00f6zel ba\u015fl\u0131klar\u0131 veya parametreleri yakalay\u0131p veritaban\u0131na iletebilir.<\/p>\n<p>Bu \u00e7\u00f6z\u00fcm yollar\u0131n\u0131n her biri, ger\u00e7ek kullan\u0131c\u0131 izlenebilirli\u011fini art\u0131rma potansiyeline sahiptir. Se\u00e7im, mevcut altyap\u0131n\u0131z\u0131n karma\u015f\u0131kl\u0131\u011f\u0131na, uygulama mimarinize ve g\u00fcvenlik gereksinimlerinize ba\u011fl\u0131 olacakt\u0131r. Ancak, <code>SET pg.application_name<\/code> kullan\u0131m\u0131, genellikle en kolay entegre edilebilir ve en az performans etkisine sahip \u00e7\u00f6z\u00fcm olarak \u00f6ne \u00e7\u0131kmaktad\u0131r.<\/p>\n<h2>Uygulama ve Entegrasyon: Ad\u0131m Ad\u0131m Ger\u00e7ek Kullan\u0131c\u0131 \u0130zleme Kurulumu Nas\u0131l Yap\u0131l\u0131r?<\/h2>\n<p>Ger\u00e7ek kullan\u0131c\u0131 seviyesinde izlenebilirlik sa\u011flaman\u0131n \u00f6nemini ve farkl\u0131 \u00e7\u00f6z\u00fcm yollar\u0131n\u0131 ele ald\u0131k. \u015eimdi, bu teorik bilgiyi pratik bir uygulamaya d\u00f6n\u00fc\u015ft\u00fcrelim. Bir web uygulamas\u0131 senaryosunda, pgAudit&#8217;i ger\u00e7ek kullan\u0131c\u0131 kimliklerini kaydedecek \u015fekilde nas\u0131l yap\u0131land\u0131raca\u011f\u0131m\u0131z\u0131 ve uygulama kodunda gerekli de\u011fi\u015fiklikleri nas\u0131l yapaca\u011f\u0131m\u0131z\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz. Bu \u00f6rnekte, <code>SET pg.application_name<\/code> y\u00f6ntemini kullanaca\u011f\u0131z, \u00e7\u00fcnk\u00fc bu y\u00f6ntem genellikle en kolay entegre edilebilir ve en az performans etkisine sahip olan\u0131d\u0131r.<\/p>\n<h3>Senaryo: Bir E-ticaret Web Uygulamas\u0131 i\u00e7in Ger\u00e7ek Kullan\u0131c\u0131 \u0130zleme<\/h3>\n<p>Bir e-ticaret platformunuz var. M\u00fc\u015fterileriniz (\u00f6rne\u011fin, Ay\u015fe, Can) web sitesine giri\u015f yap\u0131yor ve \u00fcr\u00fcnleri g\u00f6r\u00fcnt\u00fcl\u00fcyor, sipari\u015f veriyor veya ki\u015fisel bilgilerini g\u00fcncelliyorlar. Uygulaman\u0131z, veritaban\u0131na <code>ecommerce_app_user<\/code> ad\u0131nda tek bir PostgreSQL rol\u00fcyle ba\u011flan\u0131yor. Amac\u0131m\u0131z, pgAudit g\u00fcnl\u00fcklerinde hangi m\u00fc\u015fterinin hangi i\u015flemi yapt\u0131\u011f\u0131n\u0131 net bir \u015fekilde g\u00f6rebilmek.<\/p>\n<h3>Ad\u0131m 1: pgAudit Kurulumu ve Temel Yap\u0131land\u0131rma<\/h3>\n<p>\u00d6ncelikle, PostgreSQL sunucunuzda pgAudit&#8217;i kurun ve temel denetim ayarlar\u0131n\u0131 yap\u0131n. PostgreSQL yap\u0131land\u0131rma dosyan\u0131z olan <code>postgresql.conf<\/code>&#8216;ta a\u015fa\u011f\u0131daki de\u011fi\u015fiklikleri yap\u0131n:<\/p>\n<div class=\"code-container\">\n<pre><code>shared_preload_libraries = 'pgaudit' # E\u011fer yoksa ekleyin\npgaudit.log = 'all' # T\u00fcm i\u015flemleri (read, write, ddl, role, function) g\u00fcnl\u00fc\u011fe kaydet\npgaudit.log_client = on # \u0130stemci taraf\u0131ndan g\u00f6nderilen SQL'i de g\u00fcnl\u00fc\u011fe kaydet\npgaudit.log_parameter = on # Sorgu parametrelerini de g\u00fcnl\u00fc\u011fe kaydet\npgaudit.log_relation = on # \u0130li\u015fki adlar\u0131n\u0131 da g\u00fcnl\u00fc\u011fe kaydet\nlog_destination = 'csvlog' # G\u00fcnl\u00fckleri CSV format\u0131nda tut\nlogging_collector = on # G\u00fcnl\u00fck toplay\u0131c\u0131y\u0131 etkinle\u015ftir\nlog_directory = 'pg_log' # G\u00fcnl\u00fck dizini\nlog_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # G\u00fcnl\u00fck dosya format\u0131<\/code><\/pre>\n<\/p><\/div>\n<p>Bu de\u011fi\u015fikliklerden sonra PostgreSQL servisini yeniden ba\u015flat\u0131n. Ard\u0131ndan, veritaban\u0131na ba\u011flan\u0131p pgAudit eklentisini olu\u015fturun:<\/p>\n<div class=\"code-container\">\n<pre><code>CREATE EXTENSION pgaudit;<\/code><\/pre>\n<\/p><\/div>\n<h3>Ad\u0131m 2: Uygulama Kodunda Kullan\u0131c\u0131 Kimli\u011fi Aktar\u0131m\u0131<\/h3>\n<p>\u015eimdi, e-ticaret uygulaman\u0131z\u0131n kodunda, veritaban\u0131 ba\u011flant\u0131s\u0131 kuruldu\u011funda veya her i\u015flemden \u00f6nce ger\u00e7ek kullan\u0131c\u0131 kimli\u011fini <code>pg.application_name<\/code> olarak ayarlayaca\u011f\u0131z. Bu \u00f6rnek i\u00e7in Python ve <code>psycopg2<\/code> k\u00fct\u00fcphanesini kullanaca\u011f\u0131z, ancak konsept di\u011fer diller (Java, Node.js, PHP) i\u00e7in de benzerdir.<\/p>\n<div class=\"code-container\">\n<pre><code>import psycopg2\n\ndef get_db_connection(user_id):\n    \"\"\"\n    Veritaban\u0131 ba\u011flant\u0131s\u0131 kurar ve pg.application_name'i ayarlar.\n    \"\"\"\n    conn = psycopg2.connect(\n        host=\"localhost\",\n        database=\"ecommerce_db\",\n        user=\"ecommerce_app_user\",\n        password=\"app_password\"\n    )\n    cursor = conn.cursor()\n    # Ger\u00e7ek kullan\u0131c\u0131 kimli\u011fini pg.application_name olarak ayarla\n    cursor.execute(f\"SET pg.application_name = 'ecommerce_app:{user_id}';\")\n    conn.commit() # De\u011fi\u015fikli\u011fi kaydet\n    return conn, cursor\n\ndef update_user_profile(user_id, customer_id, new_email):\n    conn, cursor = get_db_connection(user_id)\n    try:\n        cursor.execute(\n            \"UPDATE customers SET email = %s WHERE id = %s;\",\n            (new_email, customer_id)\n        )\n        conn.commit()\n        print(f\"Kullan\u0131c\u0131 {user_id} taraf\u0131ndan m\u00fc\u015fteri {customer_id} bilgisi g\u00fcncellendi.\")\n    except Exception as e:\n        conn.rollback()\n        print(f\"Hata olu\u015ftu: {e}\")\n    finally:\n        cursor.close()\n        conn.close()\n\n# Uygulamada oturum a\u00e7an farkl\u0131 kullan\u0131c\u0131lar\nupdate_user_profile(\"ayse_yildiz\", 101, \"ayse.yeni@example.com\")\nupdate_user_profile(\"can_demir\", 102, \"can.yeni@example.com\")<\/code><\/pre>\n<\/p><\/div>\n<p>Yukar\u0131daki \u00f6rnekte, <code>get_db_connection<\/code> fonksiyonu, veritaban\u0131na ba\u011fland\u0131ktan hemen sonra <code>SET pg.application_name<\/code> komutunu kullanarak, i\u015flemi yapan ger\u00e7ek kullan\u0131c\u0131n\u0131n kimli\u011fini (<code>ayse_yildiz<\/code> veya <code>can_demir<\/code>) PostgreSQL oturumuna iletiyor. Bu, pgAudit&#8217;in bu bilgiyi yakalamas\u0131n\u0131 sa\u011flayacakt\u0131r.<\/p>\n<h3>Ad\u0131m 3: pgAudit G\u00fcnl\u00fcklerinin Analizi ve Do\u011frulama<\/h3>\n<p>Uygulaman\u0131zdan birka\u00e7 i\u015flem ger\u00e7ekle\u015ftirdikten sonra, PostgreSQL&#8217;in g\u00fcnl\u00fck dizinine (<code>pg_log<\/code>) gidin ve pgAudit taraf\u0131ndan olu\u015fturulan g\u00fcnl\u00fck dosyalar\u0131n\u0131 inceleyin. CSV format\u0131ndaki g\u00fcnl\u00fckleri bir metin d\u00fczenleyici veya bir CSV okuyucu ile a\u00e7t\u0131\u011f\u0131n\u0131zda, <code>application_name<\/code> s\u00fctununda ger\u00e7ek kullan\u0131c\u0131 kimliklerini g\u00f6rmelisiniz:<\/p>\n<div class=\"code-container\">\n<pre><code>...\n2023-10-27 10:30:05.123 CEST,\"ecommerce_app_user\",\"ecommerce_db\",12345,\"ecommerce_app:ayse_yildiz\",... \"UPDATE customers SET email = 'ayse.yeni@example.com' WHERE id = 101;\"\n2023-10-27 10:30:10.456 CEST,\"ecommerce_app_user\",\"ecommerce_db\",67890,\"ecommerce_app:can_demir\",... \"UPDATE customers SET email = 'can.yeni@example.com' WHERE id = 102;\"\n...<\/code><\/pre>\n<\/p><\/div>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi, <code>application_name<\/code> s\u00fctunu art\u0131k i\u015flemi yapan ger\u00e7ek kullan\u0131c\u0131y\u0131 (<code>ayse_yildiz<\/code>, <code>can_demir<\/code>) g\u00f6steriyor. Bu, pgAudit&#8217;teki yetkilendirme a\u00e7\u0131\u011f\u0131n\u0131 ba\u015far\u0131yla kapatt\u0131\u011f\u0131n\u0131z ve GDPR uyumlulu\u011fu i\u00e7in kritik bir ad\u0131m att\u0131\u011f\u0131n\u0131z anlam\u0131na gelir.<\/p>\n<h3>Ad\u0131m 4: G\u00fcvenlik ve Performans Hususlar\u0131<\/h3>\n<ul>\n<li><strong>G\u00fcvenlik:<\/strong> Ger\u00e7ek kullan\u0131c\u0131 kimli\u011fini veritaban\u0131na aktar\u0131rken, bu bilginin do\u011fru ve manip\u00fcle edilemez oldu\u011fundan emin olun. Uygulama katman\u0131nda kullan\u0131c\u0131 kimlik do\u011frulamas\u0131n\u0131 (authentication) ve yetkilendirmesini (authorization) g\u00fc\u00e7l\u00fc bir \u015fekilde uygulay\u0131n.<\/li>\n<li><strong>Performans:<\/strong> <code>SET pg.application_name<\/code> komutu, her ba\u011flant\u0131 veya i\u015flem ba\u015f\u0131nda \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131\u011f\u0131nda minimal bir performans etkisi yarat\u0131r. Ancak, \u00e7ok y\u00fcksek i\u015flem hacimli sistemlerde bu etkinin izlenmesi \u00f6nemlidir. Genellikle bu etkinin g\u00f6z ard\u0131 edilebilir oldu\u011fu kabul edilir.<\/li>\n<li><strong>Ba\u011flant\u0131 Havuzlar\u0131:<\/strong> E\u011fer bir ba\u011flant\u0131 havuzu (connection pool) kullan\u0131yorsan\u0131z, her ba\u011flant\u0131 yeniden kullan\u0131ld\u0131\u011f\u0131nda <code>pg.application_name<\/code>&#8216;in do\u011fru kullan\u0131c\u0131 kimli\u011fiyle g\u00fcncellendi\u011finden emin olun. Her yeni i\u015flem i\u00e7in ba\u011flant\u0131y\u0131 yeniden yap\u0131land\u0131rmak veya ba\u011flant\u0131 havuzunun her ba\u011flant\u0131 i\u00e7in bir &#8220;init&#8221; sorgusu \u00e7al\u0131\u015ft\u0131rmas\u0131na izin vermek gerekebilir.<\/li>\n<\/ul>\n<p>Bu entegrasyon ad\u0131mlar\u0131, pgAudit&#8217;i yaln\u0131zca teknik bir denetim arac\u0131 olmaktan \u00e7\u0131kar\u0131p, GDPR gibi d\u00fczenlemelerin gerektirdi\u011fi y\u00fcksek d\u00fczeyde hesap verebilirli\u011fi sa\u011flayan g\u00fc\u00e7l\u00fc bir uyumluluk arac\u0131na d\u00f6n\u00fc\u015ft\u00fcr\u00fcr.<\/p>\n<h2>Sonu\u00e7 ve S\u0131k\u00e7a Sorulan Sorular<\/h2>\n<p>Bu makale boyunca, PostgreSQL&#8217;de pgAudit ile denetim g\u00fcnl\u00fcklemesinin \u00f6nemini, rol bazl\u0131 g\u00fcnl\u00fckleme yakla\u015f\u0131m\u0131n\u0131n neden bir &#8220;yetkilendirme a\u00e7\u0131\u011f\u0131&#8221; olu\u015fturdu\u011funu ve bu a\u00e7\u0131\u011f\u0131n GDPR gibi veri koruma d\u00fczenlemeleri kar\u015f\u0131s\u0131nda ne gibi ciddi sonu\u00e7lar do\u011furdu\u011funu detayl\u0131ca inceledik. G\u00f6rd\u00fck ki, uygulamalar\u0131n veritaban\u0131na tek bir genel rolle ba\u011flanmas\u0131, pgAudit g\u00fcnl\u00fcklerinde ger\u00e7ek i\u015flemi yapan son kullan\u0131c\u0131n\u0131n kimli\u011fini gizleyerek, bir veri ihlali durumunda sorumlulu\u011fun tespitini imkans\u0131z hale getirmektedir. Bu durum, \u00f6zellikle GDPR&#8217;\u0131n hesap verebilirlik ilkesiyle \u00e7eli\u015ferek i\u015fletmeleri yasal ve finansal risklere maruz b\u0131rakmaktad\u0131r.<\/p>\n<p>Ancak bu zorlu\u011fun \u00fcstesinden gelmek i\u00e7in etkili \u00e7\u00f6z\u00fcm yollar\u0131n\u0131n da mevcut oldu\u011funu g\u00f6sterdik. \u00d6zellikle, uygulama katman\u0131ndan <code>SET pg.application_name<\/code> komutu arac\u0131l\u0131\u011f\u0131yla ger\u00e7ek kullan\u0131c\u0131 kimli\u011fini veritaban\u0131 oturumuna aktarmak, bu yetkilendirme a\u00e7\u0131\u011f\u0131n\u0131 kapatman\u0131n en pratik ve etkili yollar\u0131ndan biridir. Bu sayede, pgAudit g\u00fcnl\u00fckleri art\u0131k sadece genel uygulama rol\u00fcn\u00fc de\u011fil, ayn\u0131 zamanda i\u015flemi ger\u00e7ekle\u015ftiren ger\u00e7ek son kullan\u0131c\u0131n\u0131n kimli\u011fini de i\u00e7erecek, b\u00f6ylece tam izlenebilirlik ve hesap verebilirlik sa\u011flanacakt\u0131r. Bu yakla\u015f\u0131m, sadece GDPR uyumlulu\u011funu art\u0131rmakla kalmaz, ayn\u0131 zamanda i\u00e7 g\u00fcvenlik denetimlerini g\u00fc\u00e7lendirir ve olas\u0131 g\u00fcvenlik olaylar\u0131n\u0131n adli analizini \u00e7ok daha kolay hale getirir.<\/p>\n<p>Unutmamak gerekir ki, veri g\u00fcvenli\u011fi ve uyumluluk s\u00fcrekli bir s\u00fcre\u00e7tir. Teknoloji ve yasal d\u00fczenlemeler geli\u015ftik\u00e7e, i\u015fletmelerin de g\u00fcvenlik stratejilerini s\u00fcrekli olarak g\u00f6zden ge\u00e7irmesi ve iyile\u015ftirmesi gerekmektedir. pgAudit&#8217;i ger\u00e7ek kullan\u0131c\u0131 izlenebilirli\u011fi ile g\u00fc\u00e7lendirmek, bu s\u00fcrecin \u00f6nemli bir ad\u0131m\u0131d\u0131r ve veri varl\u0131klar\u0131n\u0131z\u0131 koruma yolunda ataca\u011f\u0131n\u0131z stratejik bir yat\u0131r\u0131md\u0131r. G\u00fcvenli bir gelecek i\u00e7in proaktif olmak ve bu t\u00fcr a\u00e7\u0131kl\u0131klar\u0131 kapatmak, hem \u015firketinizin itibar\u0131n\u0131 koruyacak hem de yasal y\u00fck\u00fcml\u00fcl\u00fcklerinizi yerine getirmenizi sa\u011flayacakt\u0131r.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular<\/h3>\n<h4>pgAudit tek ba\u015f\u0131na GDPR uyumlulu\u011fu i\u00e7in yeterli mi?<\/h4>\n<p>Hay\u0131r, pgAudit tek ba\u015f\u0131na GDPR uyumlulu\u011fu i\u00e7in yeterli de\u011fildir. Varsay\u0131lan rol bazl\u0131 g\u00fcnl\u00fckleme yakla\u015f\u0131m\u0131, ger\u00e7ek kullan\u0131c\u0131 kimli\u011fini gizledi\u011fi i\u00e7in GDPR&#8217;\u0131n hesap verebilirlik ilkesini tam olarak kar\u015f\u0131layamaz. GDPR uyumlulu\u011fu i\u00e7in pgAudit&#8217;in, uygulama katman\u0131ndan ger\u00e7ek kullan\u0131c\u0131 kimli\u011fini aktararak desteklenmesi gerekmektedir. Ayr\u0131ca, GDPR sadece g\u00fcnl\u00fcklemeyi de\u011fil, veri minimizasyonu, \u015fifreleme, veri sahiplerinin haklar\u0131 gibi bir\u00e7ok ba\u015fka alan\u0131 da kapsar.<\/p>\n<h4>Ger\u00e7ek kullan\u0131c\u0131 izleme performans\u0131 nas\u0131l etkiler?<\/h4>\n<p><code>SET pg.application_name<\/code> gibi y\u00f6ntemler, her veritaban\u0131 ba\u011flant\u0131s\u0131 veya i\u015flem i\u00e7in ek bir komut \u00e7al\u0131\u015ft\u0131rmay\u0131 gerektirse de, genellikle performans \u00fczerinde ihmal edilebilir bir etkiye sahiptir. Modern veritabanlar\u0131 ve ba\u011flant\u0131 havuzlar\u0131 bu t\u00fcr k\u00fc\u00e7\u00fck ek y\u00fckleri kolayca y\u00f6netebilir. Ancak, \u00e7ok y\u00fcksek i\u015flem hacmine sahip sistemlerde, bu etkinin d\u00fczenli olarak izlenmesi ve gerekirse optimize edilmesi \u00f6nemlidir.<\/p>\n<h4>Hangi uygulama dilleriyle bu \u00e7\u00f6z\u00fcm\u00fc uygulayabilirim?<\/h4>\n<p>Bu \u00e7\u00f6z\u00fcm, PostgreSQL&#8217;e ba\u011flanabilen ve SQL komutlar\u0131 \u00e7al\u0131\u015ft\u0131rabilen hemen hemen t\u00fcm uygulama dilleriyle (Python, Java, Node.js, PHP, Ruby, C#, Go vb.) uygulanabilir. Temel prensip, veritaban\u0131 ba\u011flant\u0131s\u0131 kurulduktan sonra veya her i\u015flemden \u00f6nce <code>SET pg.application_name = 'gercek_kullanici_adi'<\/code> gibi bir SQL komutu \u00e7al\u0131\u015ft\u0131rmakt\u0131r. Her dilin kendi veritaban\u0131 s\u00fcr\u00fcc\u00fcs\u00fc veya ORM k\u00fct\u00fcphanesi bu komutu \u00e7al\u0131\u015ft\u0131rmak i\u00e7in bir y\u00f6ntem sunar.<\/p>\n<h4>K\u00fc\u00e7\u00fck i\u015fletmeler i\u00e7in de bu kadar detayl\u0131 g\u00fcnl\u00fckleme gerekli mi?<\/h4>\n<p>Evet, GDPR veya benzeri veri koruma d\u00fczenlemelerine tabi olan herhangi bir i\u015fletme i\u00e7in, boyutundan ba\u011f\u0131ms\u0131z olarak, ki\u015fisel verileri i\u015flerken detayl\u0131 ve izlenebilir g\u00fcnl\u00fckleme kritik \u00f6neme sahiptir. K\u00fc\u00e7\u00fck i\u015fletmeler de veri ihlalleri ve uyumsuzluk nedeniyle b\u00fcy\u00fck cezalarla kar\u015f\u0131la\u015fabilir. Proaktif bir yakla\u015f\u0131m, uzun vadede maliyetleri ve riskleri azalt\u0131r.<\/p>\n<h4>Bu \u00e7\u00f6z\u00fcm\u00fcn maliyeti nedir?<\/h4>\n<p>Bu \u00e7\u00f6z\u00fcm\u00fcn maliyeti, mevcut altyap\u0131n\u0131za ve uygulama mimarinize ba\u011fl\u0131 olarak de\u011fi\u015fir. pgAudit&#8217;in kendisi a\u00e7\u0131k kaynakl\u0131d\u0131r ve \u00fccretsizdir. Uygulama katman\u0131nda yap\u0131lacak de\u011fi\u015fiklikler, geli\u015ftirme eforu gerektirebilir. E\u011fer uygulama kodunda b\u00fcy\u00fck de\u011fi\u015fiklikler yap\u0131lmas\u0131 gerekiyorsa, bu bir geli\u015ftirme maliyeti olu\u015fturabilir. Ancak, <code>SET pg.application_name<\/code> gibi basit bir \u00e7\u00f6z\u00fcm genellikle minimal efor gerektirir. Uzun vadede, bu t\u00fcr bir yat\u0131r\u0131m, olas\u0131 veri ihlali cezalar\u0131 ve itibar kayb\u0131 maliyetlerinin yan\u0131nda \u00e7ok daha uygun maliyetli olacakt\u0131r.<\/p>\n<p>#PostgreSQL #pgAudit #GDPR #VeriG\u00fcvenli\u011fi #AuditLogging #Uyum #SiberG\u00fcvenlik #Veritaban\u0131<\/p>\n<div class=\"github-example-link\"><strong>\u00d6rnek kod:<\/strong> <a href=\"https:\/\/github.com\/fatihsoysalcom\/postgresql-application-user-traceability\" target=\"_blank\" rel=\"noopener noreferrer\">github.com\/fatihsoysalcom\/postgresql-application-user-traceability<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"PostgreSQL veritabanlar\u0131nda denetim g\u00fcnl\u00fcklemesi (audit logging) yapmak, modern veri g\u00fcvenli\u011fi ve uyumluluk standartlar\u0131 i\u00e7in hayati bir gerekliliktir.","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-42053","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>pgAudit Yetkilendirme A\u00e7\u0131\u011f\u0131: GDPR Uyumunda Rol Bazl\u0131 G\u00fcnl\u00fcklemenin Yetmezli\u011fi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/pgaudit-yetkilendirme-acigi-gdpr-uyumunda-rol-bazli-gunluklemenin-yetmezligi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"pgAudit Yetkilendirme A\u00e7\u0131\u011f\u0131: GDPR Uyumunda Rol Bazl\u0131 G\u00fcnl\u00fcklemenin Yetmezli\u011fi\" \/>\n<meta property=\"og:description\" content=\"PostgreSQL veritabanlar\u0131nda denetim g\u00fcnl\u00fcklemesi (audit logging) yapmak, modern veri g\u00fcvenli\u011fi ve uyumluluk standartlar\u0131 i\u00e7in hayati bir gerekliliktir.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/pgaudit-yetkilendirme-acigi-gdpr-uyumunda-rol-bazli-gunluklemenin-yetmezligi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-25T06:07:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-25T06:07:43+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"25 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pgaudit-yetkilendirme-acigi-gdpr-uyumunda-rol-bazli-gunluklemenin-yetmezligi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pgaudit-yetkilendirme-acigi-gdpr-uyumunda-rol-bazli-gunluklemenin-yetmezligi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"pgAudit Yetkilendirme A\u00e7\u0131\u011f\u0131: GDPR Uyumunda Rol Bazl\u0131 G\u00fcnl\u00fcklemenin Yetmezli\u011fi\",\"datePublished\":\"2026-05-25T06:07:13+00:00\",\"dateModified\":\"2026-05-25T06:07:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pgaudit-yetkilendirme-acigi-gdpr-uyumunda-rol-bazli-gunluklemenin-yetmezligi\/\"},\"wordCount\":4331,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/pgaudit-yetkilendirme-acigi-gdpr-uyumunda-rol-bazli-gunluklemenin-yetmezligi\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pgaudit-yetkilendirme-acigi-gdpr-uyumunda-rol-bazli-gunluklemenin-yetmezligi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/pgaudit-yetkilendirme-acigi-gdpr-uyumunda-rol-bazli-gunluklemenin-yetmezligi\/\",\"name\":\"pgAudit Yetkilendirme A\u00e7\u0131\u011f\u0131: GDPR Uyumunda Rol Bazl\u0131 G\u00fcnl\u00fcklemenin Yetmezli\u011fi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-05-25T06:07:13+00:00\",\"dateModified\":\"2026-05-25T06:07:43+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pgaudit-yetkilendirme-acigi-gdpr-uyumunda-rol-bazli-gunluklemenin-yetmezligi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/pgaudit-yetkilendirme-acigi-gdpr-uyumunda-rol-bazli-gunluklemenin-yetmezligi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pgaudit-yetkilendirme-acigi-gdpr-uyumunda-rol-bazli-gunluklemenin-yetmezligi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"pgAudit Yetkilendirme A\u00e7\u0131\u011f\u0131: GDPR Uyumunda Rol Bazl\u0131 G\u00fcnl\u00fcklemenin Yetmezli\u011fi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"pgAudit Yetkilendirme A\u00e7\u0131\u011f\u0131: GDPR Uyumunda Rol Bazl\u0131 G\u00fcnl\u00fcklemenin Yetmezli\u011fi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/pgaudit-yetkilendirme-acigi-gdpr-uyumunda-rol-bazli-gunluklemenin-yetmezligi\/","og_locale":"tr_TR","og_type":"article","og_title":"pgAudit Yetkilendirme A\u00e7\u0131\u011f\u0131: GDPR Uyumunda Rol Bazl\u0131 G\u00fcnl\u00fcklemenin Yetmezli\u011fi","og_description":"PostgreSQL veritabanlar\u0131nda denetim g\u00fcnl\u00fcklemesi (audit logging) yapmak, modern veri g\u00fcvenli\u011fi ve uyumluluk standartlar\u0131 i\u00e7in hayati bir gerekliliktir.","og_url":"https:\/\/fatihsoysal.com\/blog\/pgaudit-yetkilendirme-acigi-gdpr-uyumunda-rol-bazli-gunluklemenin-yetmezligi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-05-25T06:07:13+00:00","article_modified_time":"2026-05-25T06:07:43+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"25 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/pgaudit-yetkilendirme-acigi-gdpr-uyumunda-rol-bazli-gunluklemenin-yetmezligi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/pgaudit-yetkilendirme-acigi-gdpr-uyumunda-rol-bazli-gunluklemenin-yetmezligi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"pgAudit Yetkilendirme A\u00e7\u0131\u011f\u0131: GDPR Uyumunda Rol Bazl\u0131 G\u00fcnl\u00fcklemenin Yetmezli\u011fi","datePublished":"2026-05-25T06:07:13+00:00","dateModified":"2026-05-25T06:07:43+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/pgaudit-yetkilendirme-acigi-gdpr-uyumunda-rol-bazli-gunluklemenin-yetmezligi\/"},"wordCount":4331,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/pgaudit-yetkilendirme-acigi-gdpr-uyumunda-rol-bazli-gunluklemenin-yetmezligi\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/pgaudit-yetkilendirme-acigi-gdpr-uyumunda-rol-bazli-gunluklemenin-yetmezligi\/","url":"https:\/\/fatihsoysal.com\/blog\/pgaudit-yetkilendirme-acigi-gdpr-uyumunda-rol-bazli-gunluklemenin-yetmezligi\/","name":"pgAudit Yetkilendirme A\u00e7\u0131\u011f\u0131: GDPR Uyumunda Rol Bazl\u0131 G\u00fcnl\u00fcklemenin Yetmezli\u011fi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-05-25T06:07:13+00:00","dateModified":"2026-05-25T06:07:43+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/pgaudit-yetkilendirme-acigi-gdpr-uyumunda-rol-bazli-gunluklemenin-yetmezligi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/pgaudit-yetkilendirme-acigi-gdpr-uyumunda-rol-bazli-gunluklemenin-yetmezligi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/pgaudit-yetkilendirme-acigi-gdpr-uyumunda-rol-bazli-gunluklemenin-yetmezligi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"pgAudit Yetkilendirme A\u00e7\u0131\u011f\u0131: GDPR Uyumunda Rol Bazl\u0131 G\u00fcnl\u00fcklemenin Yetmezli\u011fi"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/42053","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=42053"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/42053\/revisions"}],"predecessor-version":[{"id":42054,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/42053\/revisions\/42054"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=42053"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=42053"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=42053"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}