Row-Level Security for Enterprise Data with Supabase RLS
Moving authorisation out of client code and into the database: the core principles to keep in mind when designing Row Level Security policies.
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.