{"id":44513,"date":"2026-09-04T21:04:04","date_gmt":"2026-09-04T18:04:04","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/rls-politikalari-dogru-uygulansa-bile-veri-sizdirmanin-alti-yolu\/"},"modified":"2026-09-04T21:04:04","modified_gmt":"2026-09-04T18:04:04","slug":"rls-politikalari-dogru-uygulansa-bile-veri-sizdirmanin-alti-yolu","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/rls-politikalari-dogru-uygulansa-bile-veri-sizdirmanin-alti-yolu\/","title":{"rendered":"RLS Politikalar\u0131 Do\u011fru Uygulansa Bile Veri S\u0131zd\u0131rman\u0131n Alt\u0131 Yolu"},"content":{"rendered":"<h2>RLS Politikalar\u0131 Do\u011fru Uygulansa Bile Veri S\u0131zd\u0131rman\u0131n Alt\u0131 Yolu<\/h2>\n<p>Veritaban\u0131 g\u00fcvenli\u011finde Row-Level Security (RLS) (Sat\u0131r Seviyesi G\u00fcvenlik), kullan\u0131c\u0131lar\u0131n yaln\u0131zca yetkili olduklar\u0131 verilere eri\u015fmesini sa\u011flamak i\u00e7in g\u00fc\u00e7l\u00fc bir mekanizmad\u0131r. Ancak, RLS politikalar\u0131 do\u011fru bir \u015fekilde yap\u0131land\u0131r\u0131lm\u0131\u015f ve uygulanm\u0131\u015f gibi g\u00f6r\u00fcnse bile, hassas verilerin s\u0131zd\u0131r\u0131lmas\u0131na yol a\u00e7abilecek beklenmedik yollar mevcuttur. Bu makale, RLS&#8217;in sa\u011flad\u0131\u011f\u0131 sahte g\u00fcvenlik hissinin \u00f6tesine ge\u00e7erek, do\u011fru uygulanan RLS politikalar\u0131na ra\u011fmen veri s\u0131z\u0131nt\u0131s\u0131na neden olabilecek alt\u0131 farkl\u0131 senaryoyu detayland\u0131r\u0131yor ve bu tuzaklardan nas\u0131l ka\u00e7\u0131n\u0131laca\u011f\u0131n\u0131 a\u00e7\u0131kl\u0131yor.<\/p>\n<h3>Row-Level Security (RLS) Nedir ve Neden \u00d6nemlidir?<\/h3>\n<p>Row-Level Security (RLS), veritaban\u0131 motoru seviyesinde uygulanan bir eri\u015fim kontrol mekanizmas\u0131d\u0131r. Temel amac\u0131, farkl\u0131 kullan\u0131c\u0131lar\u0131n ayn\u0131 tabloya eri\u015firken yaln\u0131zca kendi yetkileri dahilindeki sat\u0131rlar\u0131 g\u00f6rebilmesini sa\u011flamakt\u0131r. \u00d6rne\u011fin, bir sat\u0131\u015f m\u00fcd\u00fcr\u00fc sadece kendi b\u00f6lgesindeki sat\u0131\u015f verilerini, bir insan kaynaklar\u0131 \u00e7al\u0131\u015fan\u0131 ise sadece kendi departman\u0131ndaki \u00e7al\u0131\u015fan bilgilerini g\u00f6rebilir. Bu, uygulama katman\u0131nda karma\u015f\u0131k filtreleme mant\u0131\u011f\u0131 yazma ihtiyac\u0131n\u0131 ortadan kald\u0131rarak hem geli\u015ftirme maliyetini d\u00fc\u015f\u00fcr\u00fcr hem de g\u00fcvenlik a\u00e7\u0131\u011f\u0131 riskini azalt\u0131r.<\/p>\n<p>RLS, \u00f6zellikle \u00e7ok kirac\u0131l\u0131 (multi-tenant) uygulamalarda, yani ayn\u0131 veritaban\u0131n\u0131 kullanan birden fazla m\u00fc\u015fteriye hizmet veren sistemlerde hayati bir rol oynar. Her m\u00fc\u015fterinin verisinin di\u011fer m\u00fc\u015fteriler taraf\u0131ndan g\u00f6r\u00fclmemesini garanti eder. RLS, bir veritaban\u0131 kullan\u0131c\u0131s\u0131n\u0131n belirli bir tabloya sorgu g\u00f6nderdi\u011finde, bu sorguya otomatik olarak bir filtre predicate&#8217;i (ko\u015ful) ekleyerek \u00e7al\u0131\u015f\u0131r. Bu predicate, kullan\u0131c\u0131n\u0131n yetkileriyle e\u015fle\u015fen sat\u0131rlar\u0131 d\u00f6nd\u00fcr\u00fcr. \u00d6rne\u011fin, bir <code>Sales<\/code> tablosunda, kullan\u0131c\u0131n\u0131n <code>Region<\/code> bilgisine g\u00f6re filtreleme yapan bir RLS politikas\u0131 tan\u0131mlanabilir. Bu sayede, kullan\u0131c\u0131 yaln\u0131zca kendi b\u00f6lgesine ait sat\u0131\u015f kay\u0131tlar\u0131n\u0131 g\u00f6r\u00fcnt\u00fcleyebilir. RLS&#8217;in do\u011fru bir \u015fekilde uygulanmas\u0131, veri gizlili\u011fi ve uyumluluk (\u00f6rne\u011fin GDPR, KVKK) a\u00e7\u0131s\u0131ndan kritik \u00f6neme sahiptir. Ancak, \u00e7o\u011fu zaman g\u00f6zden ka\u00e7an detaylar, en iyi niyetli RLS uygulamalar\u0131n\u0131 bile zay\u0131flatabilir ve hassas veri s\u0131z\u0131nt\u0131lar\u0131na yol a\u00e7abilir.<\/p>\n<h3>1. \u015eema ve Metaveri Eri\u015fimi \u00dczerinden Veri S\u0131zd\u0131rma: G\u00f6r\u00fcnmez Bilgiler<\/h3>\n<p>RLS politikalar\u0131 genellikle belirli tablolardaki verilere eri\u015fimi k\u0131s\u0131tlar. Ancak, veritaban\u0131n\u0131n \u015femas\u0131 (schema) veya metaverileri (metadata) \u00fczerindeki yetkilendirme g\u00f6zden ka\u00e7\u0131r\u0131ld\u0131\u011f\u0131nda, sald\u0131rganlar bu bilgileri kullanarak dolayl\u0131 yoldan veri s\u0131zd\u0131rabilirler. Bir kullan\u0131c\u0131n\u0131n do\u011frudan veri sat\u0131rlar\u0131n\u0131 g\u00f6rmesi engellense bile, tablonun yap\u0131s\u0131n\u0131, s\u00fctun adlar\u0131n\u0131, veri tiplerini ve hatta di\u011fer tablolarla olan ili\u015fkilerini \u00f6\u011frenmesi, potansiyel bir sald\u0131r\u0131 vekt\u00f6r\u00fc olu\u015fturur. \u00d6rne\u011fin, bir sald\u0131rgan, bir tablonun <code>Salary<\/code> (Maa\u015f) veya <code>TCKN<\/code> (T\u00fcrkiye Cumhuriyeti Kimlik Numaras\u0131) gibi hassas bilgiler i\u00e7eren s\u00fctunlara sahip oldu\u011funu metaveri sorgular\u0131 arac\u0131l\u0131\u011f\u0131yla ke\u015ffedebilir. Bu bilgi, daha sonra hedefli sald\u0131r\u0131lar d\u00fczenlemek veya ba\u015fka bir g\u00fcvenlik a\u00e7\u0131\u011f\u0131ndan yararlanmak i\u00e7in kullan\u0131labilir.<\/p>\n<p>Ger\u00e7ek d\u00fcnya senaryosunda, bir kullan\u0131c\u0131n\u0131n yaln\u0131zca kendi m\u00fc\u015fteri kay\u0131tlar\u0131n\u0131 g\u00f6rmesine izin veren bir RLS politikas\u0131 oldu\u011funu varsayal\u0131m. Bu politika <code>Customers<\/code> tablosundaki <code>CustomerID<\/code> s\u00fctununu kullan\u0131c\u0131n\u0131n oturum kimli\u011fiyle e\u015fle\u015ftirir. Ancak, kullan\u0131c\u0131ya <code>INFORMATION_SCHEMA<\/code> g\u00f6r\u00fcn\u00fcmlerine veya sistem tablolar\u0131na eri\u015fim izni verilmi\u015fse, bu kullan\u0131c\u0131 <code>Employees<\/code> tablosunun varl\u0131\u011f\u0131n\u0131, bu tabloda <code>SSN<\/code> (Sosyal G\u00fcvenlik Numaras\u0131) veya <code>Salary<\/code> gibi s\u00fctunlar\u0131n bulundu\u011funu \u00f6\u011frenebilir. Bu bilgiler, do\u011frudan verilere eri\u015fim sa\u011flamasa da, sald\u0131rgan\u0131n sistem hakk\u0131nda de\u011ferli istihbarat toplamas\u0131na olanak tan\u0131r. Daha sonra, SQL Enjeksiyonu gibi ba\u015fka bir zafiyet bulundu\u011funda, bu metaveri bilgisi hedefli sald\u0131r\u0131lar\u0131n ba\u015far\u0131l\u0131 olma olas\u0131l\u0131\u011f\u0131n\u0131 art\u0131r\u0131r. Bu nedenle, RLS uygularken yaln\u0131zca veri sat\u0131rlar\u0131n\u0131 de\u011fil, ayn\u0131 zamanda veritaban\u0131 \u015femas\u0131 ve metaverileri \u00fczerindeki eri\u015fim kontrollerini de s\u0131k\u0131 bir \u015fekilde y\u00f6netmek hayati \u00f6neme sahiptir. Kullan\u0131c\u0131lara yaln\u0131zca ihtiya\u00e7 duyduklar\u0131 en az yetki (least privilege) ilkesine g\u00f6re izinler verilmelidir, bu da sistem tablolar\u0131na ve metaveri g\u00f6r\u00fcn\u00fcmlerine gereksiz eri\u015fimin k\u0131s\u0131tlanmas\u0131n\u0131 i\u00e7erir.<\/p>\n<pre><code>\n-- Bir RLS politikas\u0131 \u00f6rne\u011fi\nCREATE FUNCTION dbo.fn_securitypredicate(@CustomerID INT)\nRETURNS TABLE\nWITH SCHEMABINDING\nAS\n    RETURN SELECT 1 AS accessResult\n    WHERE @CustomerID = CAST(SESSION_CONTEXT(N'CustomerID') AS INT);\nGO\n\nCREATE SECURITY POLICY CustomerFilter\nADD FILTER PREDICATE dbo.fn_securitypredicate(CustomerID)\nON dbo.Customers\nWITH (STATE = ON);\nGO\n\n-- Sald\u0131rgan\u0131n metaveri sorgusu ile bilgi toplamas\u0131\nSELECT COLUMN_NAME, DATA_TYPE\nFROM INFORMATION_SCHEMA.COLUMNS\nWHERE TABLE_NAME = 'Employees' AND COLUMN_NAME LIKE '%SSN%';\n-- Bu sorgu, RLS taraf\u0131ndan korunmayan Employees tablosundaki SSN s\u00fctununun varl\u0131\u011f\u0131n\u0131 ortaya \u00e7\u0131karabilir.\n    <\/code><\/pre>\n<h3>2. Zaman Tabanl\u0131 ve \u00c7\u0131kar\u0131msal Sald\u0131r\u0131lar: Gecikmelerden Veri S\u0131zd\u0131rma<\/h3>\n<p>RLS politikalar\u0131, genellikle bir kullan\u0131c\u0131n\u0131n yetkisi d\u0131\u015f\u0131ndaki sat\u0131rlar\u0131n sorgu sonu\u00e7lar\u0131nda g\u00f6r\u00fcnmesini engeller. Ancak, bu sat\u0131rlar\u0131n varl\u0131\u011f\u0131 veya yoklu\u011fu, sorgu y\u00fcr\u00fctme s\u00fcresindeki k\u00fc\u00e7\u00fck farkl\u0131l\u0131klar (zaman tabanl\u0131 sald\u0131r\u0131lar) veya hata mesajlar\u0131ndaki de\u011fi\u015fiklikler (\u00e7\u0131kar\u0131msal sald\u0131r\u0131lar) arac\u0131l\u0131\u011f\u0131yla if\u015fa edilebilir. Bu t\u00fcr sald\u0131r\u0131lar, do\u011frudan veri d\u00f6nd\u00fcrmeden, sistemin davran\u0131\u015f\u0131ndaki ince farkl\u0131l\u0131klar\u0131 analiz ederek bilgi edinmeye dayan\u0131r. Bir sald\u0131rgan, RLS taraf\u0131ndan gizlenen bir sat\u0131r\u0131n var olup olmad\u0131\u011f\u0131n\u0131, sorgunun tamamlanma s\u00fcresini g\u00f6zlemleyerek anlayabilir.<\/p>\n<p>\u00d6rne\u011fin, bir veritaban\u0131nda &#8220;gizli&#8221; bir m\u00fc\u015fteri kayd\u0131n\u0131n olup olmad\u0131\u011f\u0131n\u0131 \u00f6\u011frenmek isteyen bir sald\u0131rgan d\u00fc\u015f\u00fcnelim. RLS politikas\u0131, kullan\u0131c\u0131n\u0131n yaln\u0131zca kendi m\u00fc\u015fteri kay\u0131tlar\u0131n\u0131 g\u00f6rmesine izin veriyor. Sald\u0131rgan, belirli bir <code>CustomerID<\/code> ile sorgu yapar. E\u011fer bu <code>CustomerID<\/code>, kullan\u0131c\u0131n\u0131n eri\u015febilece\u011fi bir kay\u0131t de\u011filse ve veritaban\u0131nda hi\u00e7 yoksa, sorgu \u00e7ok h\u0131zl\u0131 bir \u015fekilde &#8220;kay\u0131t bulunamad\u0131&#8221; yan\u0131t\u0131 d\u00f6nebilir. Ancak, e\u011fer bu <code>CustomerID<\/code> veritaban\u0131nda mevcut fakat kullan\u0131c\u0131n\u0131n RLS politikas\u0131 taraf\u0131ndan gizleniyorsa, veritaban\u0131 motoru yine de bu kayd\u0131 bulmak i\u00e7in bir miktar i\u015flem yapacak ve ard\u0131ndan RLS filtresini uygulayarak &#8220;eri\u015fim reddedildi&#8221; (veya bo\u015f sonu\u00e7) d\u00f6nd\u00fcrecektir. Bu durumda, sorgu s\u00fcresi, kayd\u0131n hi\u00e7 olmamas\u0131ndan daha uzun olabilir. Bu k\u00fc\u00e7\u00fck zaman farklar\u0131, yeterli say\u0131da deneme ve dikkatli analizle, gizli kay\u0131tlar\u0131n varl\u0131\u011f\u0131n\u0131 ortaya \u00e7\u0131karabilir.<\/p>\n<p>Bir ba\u015fka \u00e7\u0131kar\u0131msal sald\u0131r\u0131 t\u00fcr\u00fc, hata mesajlar\u0131 \u00fczerinden ger\u00e7ekle\u015febilir. E\u011fer RLS politikas\u0131 bir sat\u0131r\u0131 gizlerken, belirli bir i\u015flemde (\u00f6rne\u011fin, birincil anahtar k\u0131s\u0131tlamas\u0131 ihlali) bu gizli sat\u0131rla ilgili bir hata mesaj\u0131 \u00fcretirse, bu hata mesaj\u0131n\u0131n i\u00e7eri\u011fi veya tipi, sald\u0131rgana gizli veriler hakk\u0131nda bilgi verebilir. Bu t\u00fcr sald\u0131r\u0131lar, \u00f6zellikle y\u00fcksek g\u00fcvenlik gerektiren sistemlerde, RLS&#8217;in tek ba\u015f\u0131na yeterli olmad\u0131\u011f\u0131n\u0131 ve yan kanal (side channel) sald\u0131r\u0131lar\u0131na kar\u015f\u0131 ek \u00f6nlemler al\u0131nmas\u0131 gerekti\u011fini g\u00f6stermektedir. Sorgu optimizasyonlar\u0131n\u0131n ve veritaban\u0131 motorunun davran\u0131\u015flar\u0131n\u0131n dikkatlice incelenmesi, bu t\u00fcr zafiyetlerin tespit edilmesi ve giderilmesi i\u00e7in kritik \u00f6neme sahiptir.<\/p>\n<h3>3. Agrega Fonksiyonlar\u0131 ve Sat\u0131r Say\u0131lar\u0131 ile Bilgi S\u0131zd\u0131rma: Say\u0131lar Asla Yalan S\u00f6ylemez<\/h3>\n<p>RLS politikalar\u0131, genellikle tek tek sat\u0131rlara uygulan\u0131r ve kullan\u0131c\u0131n\u0131n yetkisi d\u0131\u015f\u0131ndaki sat\u0131rlar\u0131n do\u011frudan g\u00f6r\u00fcnmesini engeller. Ancak, agrega fonksiyonlar\u0131 (<code>COUNT<\/code>, <code>SUM<\/code>, <code>AVG<\/code>, <code>MAX<\/code>, <code>MIN<\/code>) kullan\u0131ld\u0131\u011f\u0131nda, RLS&#8217;in bu korumas\u0131 dolayl\u0131 yoldan delinebilir ve hassas bilgiler s\u0131zd\u0131r\u0131labilir. Bir kullan\u0131c\u0131, do\u011frudan g\u00f6remedi\u011fi sat\u0131rlar hakk\u0131nda bile, bu sat\u0131rlar\u0131n toplam say\u0131s\u0131n\u0131 veya belirli bir \u00f6zelli\u011fin ortalamas\u0131n\u0131 \u00f6\u011frenerek de\u011ferli bilgiler edinebilir.<\/p>\n<p>Bu senaryoyu bir \u00f6rnekle a\u00e7\u0131klayal\u0131m: Bir \u015firketin <code>Employees<\/code> (\u00c7al\u0131\u015fanlar) tablosu var ve bu tabloda <code>Salary<\/code> (Maa\u015f) s\u00fctunu bulunuyor. RLS politikas\u0131, her y\u00f6neticinin yaln\u0131zca kendi departman\u0131ndaki \u00e7al\u0131\u015fanlar\u0131n detaylar\u0131n\u0131 g\u00f6rmesine izin veriyor. Ancak, bir y\u00f6netici kendi departman\u0131ndaki \u00e7al\u0131\u015fanlar\u0131n ortalama maa\u015f\u0131n\u0131 (<code>AVG(Salary)<\/code>) ve t\u00fcm \u015firketin \u00e7al\u0131\u015fanlar\u0131n\u0131n toplam say\u0131s\u0131n\u0131 (<code>COUNT(*)<\/code>) sorgulayabilirse, bu bilgiler \u00fczerinden kendi departman\u0131n\u0131n maa\u015f b\u00fct\u00e7esini veya \u00e7al\u0131\u015fan say\u0131s\u0131n\u0131, \u015firketin genel rakamlar\u0131yla kar\u015f\u0131la\u015ft\u0131rarak \u00e7\u0131kar\u0131mlar yapabilir. Daha da tehlikelisi, e\u011fer sald\u0131rgan, RLS taraf\u0131ndan gizlenen bir ko\u015fula sahip bir sorgu \u00e7al\u0131\u015ft\u0131r\u0131r ve bu sorgunun toplam sat\u0131r say\u0131s\u0131n\u0131 (<code>COUNT(*)<\/code>) al\u0131rsa, bu say\u0131 \u00fczerinden gizli verilerin varl\u0131\u011f\u0131 veya da\u011f\u0131l\u0131m\u0131 hakk\u0131nda bilgi edinebilir.<\/p>\n<p>\u00d6rne\u011fin, bir sald\u0131rgan, belirli bir <code>SSN<\/code> (Sosyal G\u00fcvenlik Numaras\u0131) de\u011ferine sahip bir \u00e7al\u0131\u015fan\u0131n olup olmad\u0131\u011f\u0131n\u0131 merak ediyor. RLS, bu \u00e7al\u0131\u015fan\u0131n detaylar\u0131n\u0131 g\u00f6stermese bile, sald\u0131rgan \u015fu sorguyu deneyebilir:<\/p>\n<pre><code>\nSELECT COUNT(*) FROM Employees WHERE SSN = '123-45-6789';\n    <\/code><\/pre>\n<p>E\u011fer RLS bu sorguyu engellemeyip sadece sonu\u00e7lar\u0131 filtrelerse, ve veritaban\u0131nda b\u00f6yle bir <code>SSN<\/code>&#8216;e sahip bir \u00e7al\u0131\u015fan varsa (ancak RLS nedeniyle g\u00f6r\u00fcnm\u00fcyorsa), <code>COUNT(*)<\/code> sonucu <code>1<\/code> d\u00f6nebilir. E\u011fer b\u00f6yle bir \u00e7al\u0131\u015fan yoksa, <code>0<\/code> d\u00f6ner. Bu, sald\u0131rgan\u0131n gizli bir <code>SSN<\/code>&#8216;in varl\u0131\u011f\u0131n\u0131 do\u011frudan veri g\u00f6rmeden tespit etmesine olanak tan\u0131r. Bu t\u00fcr bir s\u0131z\u0131nt\u0131y\u0131 \u00f6nlemek i\u00e7in, RLS politikalar\u0131n\u0131n agrega fonksiyonlar\u0131n\u0131 da kapsayacak \u015fekilde geni\u015fletilmesi veya agrega sorgular\u0131n\u0131n yaln\u0131zca yetkili kullan\u0131c\u0131lar i\u00e7in belirli g\u00f6r\u00fcn\u00fcmler \u00fczerinden yap\u0131lmas\u0131 sa\u011flanmal\u0131d\u0131r. Baz\u0131 veritabanlar\u0131, RLS&#8217;in agrega fonksiyonlar\u0131na uygulanmas\u0131 i\u00e7in \u00f6zel mekanizmalar sunar, ancak bunlar dikkatlice yap\u0131land\u0131r\u0131lmal\u0131d\u0131r.<\/p>\n<h3>4. Hata Mesajlar\u0131 Arac\u0131l\u0131\u011f\u0131yla Yan Kanal S\u0131z\u0131nt\u0131lar\u0131: Hatalar Konu\u015fur<\/h3>\n<p>RLS politikalar\u0131, veri eri\u015fimini k\u0131s\u0131tlarken, arka planda meydana gelen veritaban\u0131 hatalar\u0131 veya istisnalar\u0131 (exceptions), sald\u0131rganlara hassas bilgiler hakk\u0131nda ipu\u00e7lar\u0131 verebilir. Bu, bir t\u00fcr yan kanal (side channel) sald\u0131r\u0131s\u0131d\u0131r; burada do\u011frudan veri s\u0131zd\u0131r\u0131lmasa da, sistemin hata tepkileri analiz edilerek gizli bilgiler \u00e7\u0131kar\u0131labilir. E\u011fer bir RLS politikas\u0131, kullan\u0131c\u0131n\u0131n g\u00f6rmemesi gereken bir sat\u0131r\u0131 i\u00e7eren bir i\u015flemi engellerken, bu engelleme sonucunda olu\u015fan hata mesaj\u0131, engellenen sat\u0131r hakk\u0131nda detaylar i\u00e7eriyorsa, bu bir veri s\u0131z\u0131nt\u0131s\u0131 riski olu\u015fturur.<\/p>\n<p>\u00d6rne\u011fin, bir <code>Products<\/code> (\u00dcr\u00fcnler) tablosu ve bir <code>Orders<\/code> (Sipari\u015fler) tablosu oldu\u011funu varsayal\u0131m. RLS politikas\u0131, bir kullan\u0131c\u0131n\u0131n yaln\u0131zca kendi b\u00f6lgesindeki \u00fcr\u00fcnleri g\u00f6rmesine izin veriyor. Kullan\u0131c\u0131, kendi b\u00f6lgesinde olmayan bir \u00fcr\u00fcnle ilgili bir sipari\u015f olu\u015fturmaya \u00e7al\u0131\u015f\u0131rsa ve veritaban\u0131, bu \u00fcr\u00fcn\u00fcn <code>ProductID<\/code>&#8216;sine dayal\u0131 bir yabanc\u0131 anahtar (foreign key) k\u0131s\u0131tlamas\u0131 ihlali hatas\u0131 d\u00f6nd\u00fcr\u00fcrse, bu hata mesaj\u0131n\u0131n i\u00e7eri\u011fi kritik olabilir. E\u011fer hata mesaj\u0131, &#8220;<code>ProductID: 12345<\/code> ile ili\u015fkili \u00fcr\u00fcn bulunamad\u0131&#8221; gibi detayl\u0131 bilgi i\u00e7eriyorsa, sald\u0131rgan bu <code>ProductID<\/code>&#8216;nin var oldu\u011funu (ancak kendi b\u00f6lgesi i\u00e7in eri\u015filebilir olmad\u0131\u011f\u0131n\u0131) \u00f6\u011frenmi\u015f olur. Bu, RLS&#8217;in amac\u0131n\u0131 bo\u015fa \u00e7\u0131kar\u0131r, \u00e7\u00fcnk\u00fc sald\u0131rgan, do\u011frudan g\u00f6remese bile belirli bir \u00fcr\u00fcn\u00fcn varl\u0131\u011f\u0131n\u0131 kan\u0131tlam\u0131\u015f olur.<\/p>\n<p>Bir ba\u015fka senaryo, SQL enjeksiyonu denemelerinde ortaya \u00e7\u0131kabilir. Sald\u0131rgan, RLS taraf\u0131ndan korunan bir tabloya y\u00f6nelik SQL enjeksiyonu denemesi yapt\u0131\u011f\u0131nda, e\u011fer veritaban\u0131 motoru, RLS filtresi nedeniyle &#8220;eri\u015fim reddedildi&#8221; yerine, \u00f6rne\u011fin bir veri tipi uyumsuzlu\u011fu veya s\u00fctun ad\u0131 hatas\u0131 gibi daha spesifik bir hata d\u00f6nd\u00fcr\u00fcrse, bu hata mesaj\u0131 sald\u0131rgan\u0131n \u015fema hakk\u0131nda bilgi edinmesine yard\u0131mc\u0131 olabilir. Bu t\u00fcr s\u0131z\u0131nt\u0131lar\u0131 \u00f6nlemek i\u00e7in, uygulama katman\u0131nda hata mesajlar\u0131n\u0131n genel ve bilgilendirici olmayan bir \u015fekilde i\u015flenmesi ve son kullan\u0131c\u0131ya sunulmas\u0131 esast\u0131r. Veritaban\u0131 seviyesinde ise, hata mesajlar\u0131n\u0131n detay seviyesi minimuma indirilmeli ve hassas bilgiler i\u00e7ermedi\u011finden emin olunmal\u0131d\u0131r. Ayr\u0131ca, veritaban\u0131 loglar\u0131n\u0131n d\u00fczenli olarak izlenmesi, bu t\u00fcr yan kanal sald\u0131r\u0131 denemelerini tespit etmek i\u00e7in \u00f6nemlidir.<\/p>\n<pre><code>\n-- Hata mesaj\u0131 ile veri s\u0131zd\u0131rma \u00f6rne\u011fi\n-- Varsayal\u0131m ki ProductID 500, kullan\u0131c\u0131n\u0131n eri\u015fimine kapal\u0131 bir \u00fcr\u00fcnd\u00fcr.\n-- Kullan\u0131c\u0131, bu ProductID ile bir sipari\u015f eklemeye \u00e7al\u0131\u015f\u0131r.\nINSERT INTO Orders (OrderID, CustomerID, ProductID, Quantity)\nVALUES (1001, 123, 500, 1);\n\n-- E\u011fer veritaban\u0131 \"Foreign key violation: ProductID '500' does not exist in Products table.\"\n-- gibi bir hata mesaj\u0131 d\u00f6nerse, sald\u0131rgan ProductID 500'\u00fcn varl\u0131\u011f\u0131n\u0131 \u00f6\u011frenmi\u015f olur.\n-- Do\u011fru yakla\u015f\u0131m: Hata mesaj\u0131n\u0131 genel bir ifadeyle de\u011fi\u015ftirmek: \"\u0130\u015flem ba\u015far\u0131s\u0131z oldu. L\u00fctfen tekrar deneyin.\"\n    <\/code><\/pre>\n<h3>5. Yanl\u0131\u015f Yap\u0131land\u0131r\u0131lm\u0131\u015f Birle\u015ftirmeler (Joins) ve G\u00f6r\u00fcn\u00fcmler (Views) ile RLS Bypass<\/h3>\n<p>RLS politikalar\u0131 genellikle temel tablolara (base tables) uygulan\u0131r. Ancak, veritaban\u0131 tasar\u0131m\u0131nda veya uygulama kodunda yap\u0131lan yanl\u0131\u015f yap\u0131land\u0131r\u0131lm\u0131\u015f birle\u015ftirmeler (joins) veya g\u00f6r\u00fcn\u00fcmler (views), RLS&#8217;in korumas\u0131n\u0131 atlatarak veri s\u0131z\u0131nt\u0131lar\u0131na yol a\u00e7abilir. RLS&#8217;in yaln\u0131zca belirli bir tabloya uyguland\u0131\u011f\u0131, ancak bu tablonun hassas verilerini i\u00e7eren ba\u015fka bir tabloyla birle\u015ftirildi\u011finde veya bir g\u00f6r\u00fcn\u00fcm arac\u0131l\u0131\u011f\u0131yla if\u015fa edildi\u011finde bu durum ortaya \u00e7\u0131kar. E\u011fer RLS, birle\u015ftirme yap\u0131lan t\u00fcm tablolara veya g\u00f6r\u00fcn\u00fcmlere tutarl\u0131 bir \u015fekilde uygulanmazsa, g\u00fcvenlik zafiyeti olu\u015fur.<\/p>\n<p>\u00d6rne\u011fin, bir <code>Employees<\/code> tablosu ve bir <code>Departments<\/code> tablosu oldu\u011funu varsayal\u0131m. <code>Employees<\/code> tablosunda <code>Salary<\/code> (Maa\u015f) gibi hassas bilgiler var ve bu tabloya RLS uygulanm\u0131\u015f durumda; yani bir y\u00f6netici sadece kendi departman\u0131ndaki \u00e7al\u0131\u015fanlar\u0131n maa\u015flar\u0131n\u0131 g\u00f6rebiliyor. Ancak, <code>Departments<\/code> tablosuna RLS uygulanmam\u0131\u015f ve t\u00fcm kullan\u0131c\u0131lara eri\u015filebilir durumda. E\u011fer bir geli\u015ftirici, <code>Employees<\/code> ve <code>Departments<\/code> tablolar\u0131n\u0131 birle\u015ftiren bir g\u00f6r\u00fcn\u00fcm (view) olu\u015fturur ve bu g\u00f6r\u00fcn\u00fcme RLS politikas\u0131n\u0131 uygulamazsa, bu g\u00f6r\u00fcn\u00fcm \u00fczerinden t\u00fcm \u00e7al\u0131\u015fanlar\u0131n maa\u015f bilgileri, departman bilgileriyle birlikte if\u015fa edilebilir. Y\u00f6netici, kendi departman\u0131 d\u0131\u015f\u0131ndaki \u00e7al\u0131\u015fanlar\u0131n maa\u015flar\u0131n\u0131 do\u011frudan <code>Employees<\/code> tablosundan g\u00f6remese bile, bu yanl\u0131\u015f yap\u0131land\u0131r\u0131lm\u0131\u015f g\u00f6r\u00fcn\u00fcm arac\u0131l\u0131\u011f\u0131yla t\u00fcm maa\u015f bilgilerine eri\u015febilir.<\/p>\n<pre><code>\n-- Employees tablosuna RLS uygulanm\u0131\u015f\n-- CREATE SECURITY POLICY EmployeeFilter ... ON dbo.Employees\n\n-- Departments tablosuna RLS uygulanmam\u0131\u015f\nCREATE TABLE Departments (\n    DepartmentID INT PRIMARY KEY,\n    DepartmentName NVARCHAR(100)\n);\n\n-- Yanl\u0131\u015f yap\u0131land\u0131r\u0131lm\u0131\u015f g\u00f6r\u00fcn\u00fcm\nCREATE VIEW v_AllEmployeeDetails AS\nSELECT e.EmployeeID, e.EmployeeName, e.Salary, d.DepartmentName\nFROM Employees e\nJOIN Departments d ON e.DepartmentID = d.DepartmentID;\n-- Bu g\u00f6r\u00fcn\u00fcme RLS uygulanmad\u0131\u011f\u0131 i\u00e7in, bir kullan\u0131c\u0131 bu g\u00f6r\u00fcn\u00fcm \u00fczerinden t\u00fcm \u00e7al\u0131\u015fanlar\u0131n maa\u015flar\u0131n\u0131 g\u00f6rebilir.\n    <\/code><\/pre>\n<p>Bu t\u00fcr bir s\u0131z\u0131nt\u0131y\u0131 \u00f6nlemek i\u00e7in, RLS politikalar\u0131n\u0131n uygulanmas\u0131 gereken t\u00fcm tablolar\u0131n ve bu tablolar\u0131 kullanan t\u00fcm g\u00f6r\u00fcn\u00fcmlerin, sakl\u0131 yordamlar\u0131n (stored procedures) ve fonksiyonlar\u0131n dikkatlice incelenmesi gerekir. Her bir RLS politikas\u0131, veri ak\u0131\u015f\u0131n\u0131n her noktas\u0131nda tutarl\u0131 bir \u015fekilde uygulanmal\u0131 ve hassas verilerin dolayl\u0131 yollarla if\u015fa edilmedi\u011finden emin olunmal\u0131d\u0131r. Veritaban\u0131 \u015femas\u0131n\u0131 tasarlarken, g\u00fcvenlik katmanlar\u0131n\u0131n her seviyede dikkate al\u0131nmas\u0131 ve yetkilendirmelerin ba\u015ftan sona tutarl\u0131 olmas\u0131 esast\u0131r. Ayr\u0131ca, yeni g\u00f6r\u00fcn\u00fcmler veya birle\u015ftirmeler olu\u015fturuldu\u011funda, mevcut RLS politikalar\u0131n\u0131n bu yeni yap\u0131lar \u00fczerindeki etkisinin titizlikle de\u011ferlendirilmesi gerekmektedir.<\/p>\n<h3>6. Uygulama Katman\u0131nda Veri \u0130hrac\u0131 ve \u00d6nbellekleme: G\u00fcvenlik S\u0131n\u0131rlar\u0131n\u0131 A\u015fmak<\/h3>\n<p>RLS politikalar\u0131, veritaban\u0131 seviyesinde g\u00fc\u00e7l\u00fc bir koruma sa\u011flasa da, uygulama katman\u0131nda verilerin i\u015fleni\u015f \u015fekli veya d\u0131\u015fa aktar\u0131lmas\u0131 (export) ile ilgili zafiyetler, do\u011fru RLS uygulamalar\u0131n\u0131 bile etkisiz hale getirebilir. Veriler, veritaban\u0131ndan do\u011fru bir \u015fekilde filtrelenmi\u015f olarak \u00e7ekilse bile, e\u011fer uygulama bu verileri g\u00fcvensiz bir \u015fekilde \u00f6nbellekler (cache), d\u0131\u015fa aktar\u0131r veya ba\u015fka sistemlere aktar\u0131rsa, RLS&#8217;in sa\u011flad\u0131\u011f\u0131 koruma kaybolur.<\/p>\n<p>Ger\u00e7ek d\u00fcnya senaryosunda, bir web uygulamas\u0131 d\u00fc\u015f\u00fcnelim. Kullan\u0131c\u0131, RLS taraf\u0131ndan filtrelenmi\u015f olarak yaln\u0131zca kendi m\u00fc\u015fteri listesini g\u00f6r\u00fcnt\u00fcler. Ancak, uygulama, kullan\u0131c\u0131n\u0131n &#8220;T\u00fcm M\u00fc\u015fterileri CSV Olarak D\u0131\u015fa Aktar&#8221; veya &#8220;Rapor Olu\u015ftur&#8221; gibi bir \u00f6zelli\u011fe sahipse ve bu d\u0131\u015fa aktarma i\u015flemi, RLS filtresini atlayarak veya sunucu taraf\u0131nda farkl\u0131 bir yetkilendirme ba\u011flam\u0131nda \u00e7al\u0131\u015farak t\u00fcm m\u00fc\u015fteri verilerini \u00e7ekerse, bu b\u00fcy\u00fck bir veri s\u0131z\u0131nt\u0131s\u0131na yol a\u00e7abilir. \u00d6rne\u011fin, sunucu taraf\u0131nda \u00e7al\u0131\u015fan bir raporlama servisi, veritaban\u0131na daha y\u00fcksek yetkilerle (\u00f6rne\u011fin, <code>sysadmin<\/code> veya RLS&#8217;den muaf bir kullan\u0131c\u0131 olarak) eri\u015febilir ve bu yetkileri kullanarak t\u00fcm verileri \u00e7ekip d\u0131\u015fa aktarabilir. Bu durumda, son kullan\u0131c\u0131n\u0131n veritaban\u0131 eri\u015fimi k\u0131s\u0131tl\u0131 olsa bile, uygulama katman\u0131 bu k\u0131s\u0131tlamay\u0131 a\u015fm\u0131\u015f olur.<\/p>\n<p>Bir di\u011fer yayg\u0131n senaryo, uygulama katman\u0131nda verilerin \u00f6nbelle\u011fe al\u0131nmas\u0131d\u0131r. E\u011fer hassas veriler, RLS taraf\u0131ndan filtrelendikten sonra bile, uygulama sunucusunun belle\u011finde veya dosya sisteminde g\u00fcvensiz bir \u015fekilde \u00f6nbelle\u011fe al\u0131n\u0131rsa, bu \u00f6nbelle\u011fe eri\u015febilen ba\u015fka bir s\u00fcre\u00e7 veya sald\u0131rgan bu verilere ula\u015fabilir. \u00d6rne\u011fin, bir kullan\u0131c\u0131n\u0131n oturumu sona erdi\u011finde bile, eski oturuma ait hassas veriler sunucu taraf\u0131ndaki \u00f6nbellekte kalm\u0131\u015f olabilir. Bu t\u00fcr s\u0131z\u0131nt\u0131lar\u0131 \u00f6nlemek i\u00e7in, uygulama katman\u0131nda veri i\u015fleme, d\u0131\u015fa aktarma ve \u00f6nbellekleme s\u00fcre\u00e7lerinin RLS ile uyumlu ve g\u00fcvenli oldu\u011fundan emin olunmal\u0131d\u0131r. D\u0131\u015fa aktarma veya raporlama i\u015flevleri, veritaban\u0131ndan veri \u00e7ekerken her zaman RLS politikalar\u0131n\u0131 g\u00f6z \u00f6n\u00fcnde bulundurmal\u0131 ve kullan\u0131c\u0131 yetkileriyle e\u015fle\u015fen filtrelemeyi uygulamal\u0131d\u0131r. \u00d6nbellekleme stratejileri ise hassas verilerin \u00f6mr\u00fcn\u00fc, eri\u015fimini ve depolama y\u00f6ntemlerini dikkatlice y\u00f6netmelidir.<\/p>\n<h3>Sonu\u00e7 ve \u00d6neriler<\/h3>\n<p>Row-Level Security (RLS) veritaban\u0131 g\u00fcvenli\u011fi i\u00e7in temel bir ara\u00e7 olsa da, do\u011fru bir \u015fekilde uyguland\u0131\u011f\u0131 varsay\u0131lan durumlarda bile veri s\u0131z\u0131nt\u0131lar\u0131na yol a\u00e7abilecek bir\u00e7ok potansiyel zafiyet bulunmaktad\u0131r. \u015eema ve metaveri eri\u015fimi, zaman tabanl\u0131 sald\u0131r\u0131lar, agrega fonksiyonlar\u0131, hata mesajlar\u0131, yanl\u0131\u015f yap\u0131land\u0131r\u0131lm\u0131\u015f birle\u015ftirmeler ve uygulama katman\u0131ndaki veri i\u015fleme s\u00fcre\u00e7leri, RLS&#8217;in \u00f6tesinde dikkat edilmesi gereken kritik noktalard\u0131r. Bu makalede ele al\u0131nan alt\u0131 farkl\u0131 senaryo, RLS&#8217;in tek ba\u015f\u0131na yeterli bir \u00e7\u00f6z\u00fcm olmad\u0131\u011f\u0131n\u0131, katmanl\u0131 bir g\u00fcvenlik yakla\u015f\u0131m\u0131n\u0131n (defense-in-depth) gereklili\u011fini vurgulamaktad\u0131r.<\/p>\n<p>Veritaban\u0131 y\u00f6neticileri ve geli\u015ftiriciler, RLS politikalar\u0131n\u0131 tasarlarken ve uygularken sadece sat\u0131r filtrelemesine odaklanmamal\u0131, ayn\u0131 zamanda verinin ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fcn her a\u015famas\u0131n\u0131 (olu\u015fturulmas\u0131ndan depolanmas\u0131na, i\u015flenmesinden sunulmas\u0131na kadar) g\u00f6z \u00f6n\u00fcnde bulundurmal\u0131d\u0131r. Kullan\u0131c\u0131lara en az yetki (least privilege) ilkesine g\u00f6re izinler vermek, hata mesajlar\u0131n\u0131 genelle\u015ftirmek, agrega sorgular\u0131n\u0131 dikkatlice y\u00f6netmek, t\u00fcm birle\u015ftirme ve g\u00f6r\u00fcn\u00fcmleri RLS ile uyumlu hale getirmek ve uygulama katman\u0131ndaki veri i\u015fleme s\u00fcre\u00e7lerini g\u00fcvenli k\u0131lmak, bu t\u00fcr s\u0131z\u0131nt\u0131lar\u0131 \u00f6nlemek i\u00e7in hayati ad\u0131mlard\u0131r. Unutmay\u0131n, g\u00fcvenlik bir s\u00fcre\u00e7tir, tek seferlik bir uygulama de\u011fil; s\u00fcrekli denetim, test ve iyile\u015ftirme gerektirir.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular<\/h3>\n<ul>\n<li>\n<h4>RLS neden tek ba\u015f\u0131na yeterli de\u011fildir?<\/h4>\n<p>RLS, veritaban\u0131 seviyesinde sat\u0131r baz\u0131nda eri\u015fimi k\u0131s\u0131tlamada \u00e7ok etkilidir. Ancak, metaveri eri\u015fimi, yan kanal sald\u0131r\u0131lar\u0131, agrega fonksiyonlar\u0131 ve uygulama katman\u0131ndaki yanl\u0131\u015f yap\u0131land\u0131rmalar gibi RLS&#8217;in do\u011frudan kapsamad\u0131\u011f\u0131 alanlar \u00fczerinden veri s\u0131z\u0131nt\u0131lar\u0131 ya\u015fanabilir. G\u00fcvenlik, \u00e7ok katmanl\u0131 bir yakla\u015f\u0131mla sa\u011flanmal\u0131d\u0131r.<\/p>\n<\/li>\n<li>\n<h4>Uygulama katman\u0131nda RLS&#8217;i nas\u0131l desteklemeliyim?<\/h4>\n<p>Uygulama katman\u0131, veritaban\u0131ndan \u00e7ekilen verileri i\u015flerken RLS politikalar\u0131n\u0131 dikkate almal\u0131d\u0131r. Veri d\u0131\u015fa aktarma, raporlama ve \u00f6nbellekleme gibi \u00f6zellikler, RLS&#8217;in uygulad\u0131\u011f\u0131 filtrelemeyi atlamamal\u0131d\u0131r. M\u00fcmk\u00fcnse, uygulama, veritaban\u0131na ba\u011flan\u0131rken kullan\u0131c\u0131n\u0131n kendi yetki ba\u011flam\u0131n\u0131 kullanmal\u0131 veya RLS&#8217;i tetikleyecek \u015fekilde tasarlanmal\u0131d\u0131r.<\/p>\n<\/li>\n<li>\n<h4>Agrega fonksiyonlar\u0131 ile veri s\u0131z\u0131nt\u0131s\u0131 nas\u0131l \u00f6nlenebilir?<\/h4>\n<p>Agrega fonksiyonlar\u0131 kullan\u0131l\u0131rken, RLS politikalar\u0131n\u0131n bu fonksiyonlara da uygulanmas\u0131n\u0131 sa\u011flayacak mekanizmalar ara\u015ft\u0131r\u0131lmal\u0131d\u0131r. Baz\u0131 veritabanlar\u0131, RLS fonksiyonlar\u0131n\u0131n agrega sorgular\u0131nda da \u00e7al\u0131\u015fmas\u0131n\u0131 destekler. Alternatif olarak, hassas veriler i\u00e7eren tablolar i\u00e7in agrega sorgular\u0131, yaln\u0131zca tam yetkili kullan\u0131c\u0131lar veya \u00f6zel olarak tasarlanm\u0131\u015f, RLS&#8217;i g\u00f6z \u00f6n\u00fcnde bulunduran g\u00f6r\u00fcn\u00fcmler \u00fczerinden yap\u0131lmal\u0131d\u0131r.<\/p>\n<\/li>\n<li>\n<h4>Hata mesajlar\u0131n\u0131n veri s\u0131zd\u0131rmas\u0131n\u0131 nas\u0131l engellerim?<\/h4>\n<p>Uygulama katman\u0131nda, veritaban\u0131ndan gelen hata mesajlar\u0131 yakalanmal\u0131 ve son kullan\u0131c\u0131ya genel, bilgilendirici olmayan mesajlar olarak sunulmal\u0131d\u0131r. Veritaban\u0131 yap\u0131land\u0131rmas\u0131nda ise, hata mesajlar\u0131n\u0131n detay seviyesi minimuma indirilmeli ve hassas \u015fema veya veri bilgileri i\u00e7ermedi\u011finden emin olunmal\u0131d\u0131r.<\/p>\n<\/li>\n<li>\n<h4>RLS politikalar\u0131n\u0131 test ederken nelere dikkat etmeliyim?<\/h4>\n<p>RLS politikalar\u0131n\u0131 test ederken sadece do\u011frudan veri eri\u015fimini de\u011fil, ayn\u0131 zamanda yan kanal sald\u0131r\u0131lar\u0131n\u0131 (zamanlama, hata mesajlar\u0131), agrega sorgular\u0131n\u0131, farkl\u0131 kullan\u0131c\u0131 rollerini ve \u00e7e\u015fitli uygulama katman\u0131 senaryolar\u0131n\u0131 da kapsaml\u0131 bir \u015fekilde test etmelisiniz. Farkl\u0131 yetki seviyelerindeki kullan\u0131c\u0131lar olarak sisteme giri\u015f yaparak, beklenen ve beklenmeyen t\u00fcm davran\u0131\u015flar\u0131 g\u00f6zlemlemelisiniz.<\/p>\n<\/li>\n<\/ul>\n<p>#RLS #Veritaban\u0131G\u00fcvenli\u011fi #VeriS\u0131z\u0131nt\u0131s\u0131 #SiberG\u00fcvenlik #Eri\u015fimKontrol\u00fc #G\u00fcvenlikPolitikalar\u0131<\/p>\n","protected":false},"excerpt":{"rendered":"Veritaban\u0131 g\u00fcvenli\u011finde Row-Level Security (RLS) (Sat\u0131r Seviyesi G\u00fcvenlik), kullan\u0131c\u0131lar\u0131n yaln\u0131zca yetkili olduklar\u0131 verilere eri\u015fmesini sa\u011flamak i\u00e7in g\u00fc\u00e7l\u00fc bir mekanizmad\u0131r.","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-44513","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>RLS Politikalar\u0131 Do\u011fru Uygulansa Bile Veri S\u0131zd\u0131rman\u0131n Alt\u0131 Yolu - 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\/rls-politikalari-dogru-uygulansa-bile-veri-sizdirmanin-alti-yolu\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"RLS Politikalar\u0131 Do\u011fru Uygulansa Bile Veri S\u0131zd\u0131rman\u0131n Alt\u0131 Yolu\" \/>\n<meta property=\"og:description\" content=\"Veritaban\u0131 g\u00fcvenli\u011finde Row-Level Security (RLS) (Sat\u0131r Seviyesi G\u00fcvenlik), kullan\u0131c\u0131lar\u0131n yaln\u0131zca yetkili olduklar\u0131 verilere eri\u015fmesini sa\u011flamak i\u00e7in g\u00fc\u00e7l\u00fc bir mekanizmad\u0131r.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/rls-politikalari-dogru-uygulansa-bile-veri-sizdirmanin-alti-yolu\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-04T18:04:04+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=\"18 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/rls-politikalari-dogru-uygulansa-bile-veri-sizdirmanin-alti-yolu\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/rls-politikalari-dogru-uygulansa-bile-veri-sizdirmanin-alti-yolu\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"RLS Politikalar\u0131 Do\u011fru Uygulansa Bile Veri S\u0131zd\u0131rman\u0131n Alt\u0131 Yolu\",\"datePublished\":\"2026-09-04T18:04:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/rls-politikalari-dogru-uygulansa-bile-veri-sizdirmanin-alti-yolu\/\"},\"wordCount\":3377,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/rls-politikalari-dogru-uygulansa-bile-veri-sizdirmanin-alti-yolu\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/rls-politikalari-dogru-uygulansa-bile-veri-sizdirmanin-alti-yolu\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/rls-politikalari-dogru-uygulansa-bile-veri-sizdirmanin-alti-yolu\/\",\"name\":\"RLS Politikalar\u0131 Do\u011fru Uygulansa Bile Veri S\u0131zd\u0131rman\u0131n Alt\u0131 Yolu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-09-04T18:04:04+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/rls-politikalari-dogru-uygulansa-bile-veri-sizdirmanin-alti-yolu\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/rls-politikalari-dogru-uygulansa-bile-veri-sizdirmanin-alti-yolu\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/rls-politikalari-dogru-uygulansa-bile-veri-sizdirmanin-alti-yolu\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"RLS Politikalar\u0131 Do\u011fru Uygulansa Bile Veri S\u0131zd\u0131rman\u0131n Alt\u0131 Yolu\"}]},{\"@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":"RLS Politikalar\u0131 Do\u011fru Uygulansa Bile Veri S\u0131zd\u0131rman\u0131n Alt\u0131 Yolu - 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\/rls-politikalari-dogru-uygulansa-bile-veri-sizdirmanin-alti-yolu\/","og_locale":"tr_TR","og_type":"article","og_title":"RLS Politikalar\u0131 Do\u011fru Uygulansa Bile Veri S\u0131zd\u0131rman\u0131n Alt\u0131 Yolu","og_description":"Veritaban\u0131 g\u00fcvenli\u011finde Row-Level Security (RLS) (Sat\u0131r Seviyesi G\u00fcvenlik), kullan\u0131c\u0131lar\u0131n yaln\u0131zca yetkili olduklar\u0131 verilere eri\u015fmesini sa\u011flamak i\u00e7in g\u00fc\u00e7l\u00fc bir mekanizmad\u0131r.","og_url":"https:\/\/fatihsoysal.com\/blog\/rls-politikalari-dogru-uygulansa-bile-veri-sizdirmanin-alti-yolu\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-09-04T18:04:04+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"18 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/rls-politikalari-dogru-uygulansa-bile-veri-sizdirmanin-alti-yolu\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/rls-politikalari-dogru-uygulansa-bile-veri-sizdirmanin-alti-yolu\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"RLS Politikalar\u0131 Do\u011fru Uygulansa Bile Veri S\u0131zd\u0131rman\u0131n Alt\u0131 Yolu","datePublished":"2026-09-04T18:04:04+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/rls-politikalari-dogru-uygulansa-bile-veri-sizdirmanin-alti-yolu\/"},"wordCount":3377,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/rls-politikalari-dogru-uygulansa-bile-veri-sizdirmanin-alti-yolu\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/rls-politikalari-dogru-uygulansa-bile-veri-sizdirmanin-alti-yolu\/","url":"https:\/\/fatihsoysal.com\/blog\/rls-politikalari-dogru-uygulansa-bile-veri-sizdirmanin-alti-yolu\/","name":"RLS Politikalar\u0131 Do\u011fru Uygulansa Bile Veri S\u0131zd\u0131rman\u0131n Alt\u0131 Yolu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-09-04T18:04:04+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/rls-politikalari-dogru-uygulansa-bile-veri-sizdirmanin-alti-yolu\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/rls-politikalari-dogru-uygulansa-bile-veri-sizdirmanin-alti-yolu\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/rls-politikalari-dogru-uygulansa-bile-veri-sizdirmanin-alti-yolu\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"RLS Politikalar\u0131 Do\u011fru Uygulansa Bile Veri S\u0131zd\u0131rman\u0131n Alt\u0131 Yolu"}]},{"@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\/44513","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=44513"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/44513\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=44513"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=44513"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=44513"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}