Row Level Security (RLS) Politikaları#
Bu bölümde Supabase veritabanında kullanılan tüm RLS politikalarının detaylı açıklamaları bulunmaktadır.
RLS Politikaları Listesi#
Schools Tablosu#
- anyone_can_view_schools - Herkes okul listesini görüntüleyebilir
Classes Tablosu#
- users_can_view_relevant_classes - Kullanıcılar ilgili oldukları sınıfları görür
- teachers_admins_editors_can_create_classes - Yetkili roller sınıf oluşturabilir
- owners_can_update_classes - Sahipler sınıfları güncelleyebilir
- owners_can_delete_classes - Sahipler sınıfları silebilir
Class Members Tablosu#
- users_can_view_memberships - Kullanıcılar ilgili üyelikleri görür
- authenticated_can_insert_memberships - Giriş yapmış kullanıcılar üyelik ekleyebilir
- students_can_update_own_memberships - Öğrenciler kendi üyeliklerini güncelleyebilir
RLS Nedir?#
Row Level Security (Satır Seviyesi Güvenlik), PostgreSQL’in güvenlik özelliğidir. Her kullanıcının sadece kendisine ait veya yetkili olduğu verileri görmesini ve değiştirmesini sağlar.
Avantajları#
- Tablo seviyesinde güvenlik
- Her sorgu için otomatik kontrol
- Backend kod gerektirmez
- SQL injection’a karşı koruma
- Multi-tenant mimaride veri izolasyonu
Politika Türleri#
SELECT Politikaları#
Kullanıcının hangi satırları görebileceğini belirler.
CREATE POLICY "policy_name"
ON table_name FOR SELECT
USING (condition);INSERT Politikaları#
Kullanıcının hangi satırları ekleyebileceğini belirler.
CREATE POLICY "policy_name"
ON table_name FOR INSERT
WITH CHECK (condition);UPDATE Politikaları#
Kullanıcının hangi satırları güncelleyebileceğini belirler.
CREATE POLICY "policy_name"
ON table_name FOR UPDATE
USING (condition)
WITH CHECK (condition);DELETE Politikaları#
Kullanıcının hangi satırları silebileceğini belirler.
CREATE POLICY "policy_name"
ON table_name FOR DELETE
USING (condition);RLS Nasıl Aktif Edilir?#
-- RLS'yi aktif et
ALTER TABLE table_name ENABLE ROW LEVEL SECURITY;
-- RLS'yi devre dışı bırak
ALTER TABLE table_name DISABLE ROW LEVEL SECURITY;
-- Politika oluştur
CREATE POLICY "policy_name"
ON table_name
FOR operation
USING (condition);İlgili Bölümler#
Not: Politika detaylarını ilgili sayfalarda bulabilirsiniz.