Построчная защита корпоративных данных с помощью 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.