Cy Logic Insights

امنیت سطح سطر برای داده‌های سازمانی با Supabase RLS

انتقال مجوزدهی از کد کلاینت به پایگاه‌داده: اصول بنیادینی که هنگام طراحی سیاست‌های Row Level Security باید در نظر گرفت.

Kurumsal uygulamalarda en sık yapılan hatalardan biri, yetki kontrolünü yalnızca arayüzde yapmaktır. Bir buton gizlendiğinde verinin de korunduğu varsayılır; oysa API'ye doğrudan istek atan biri için o buton hiç var olmamıştır.

Yetki veritabanında yaşamalı

PostgreSQL'in Row Level Security özelliği, her sorguya otomatik olarak eklenen politika koşulları tanımlamanızı sağlar. Supabase bu politikaları kimlik doğrulama bilgisiyle birleştirir: auth.uid() ile oturumdaki kullanıcıyı tanır ve yalnızca izin verilen satırları döndürür.

Kullanıcının değiştirebildiği veriye güvenmeyin

Rol bilgisini kullanıcı metadata'sında tutmak caziptir, ancak bu alan çoğu zaman istemci tarafından güncellenebilir. Rolleri ayrı tablolarda tutup security definer fonksiyonlarla kontrol etmek daha güvenli bir yaklaşımdır.

Kontrol listesi

  • Her tabloda RLS'i açın ve varsayılan olarak hiçbir şeye izin vermeyin.
  • Anonim okuma politikalarını yalnızca yayınlanmış içerikle sınırlayın.
  • Yazma işlemlerini yetki tablolarına bağlayın.
  • Politikaları otomatik testlerle doğrulayın.

Bu yaklaşım, Cy Logic'te geliştirdiğimiz yönetim panellerinin de temelini oluşturur.