מילון מושגים

Row Level Security (RLS)

שומרים כדי לחזור אחר כך. הסימון נשמר רק בדפדפן הזה, ויימחק אם תנקו את נתוני הדפדפן.

נקרא גם: Row Level Security · RLS · Row-Level Security · Row Security Policies · אבטחה ברמת שורה · הרשאות ברמת שורה · מדיניות שורות · policy בטבלה · כל משתמש רואה רק את הנתונים שלו · הפרדת נתונים בין לקוחות · Postgres RLS · Supabase RLS

תוכן העניינים
  1. הסבר פורמלי
  2. הסבר בגובה העיניים
  3. למה זה חשוב בפועל
  4. תגיות
  5. מקורות

הסבר פורמלי#

Row Level Security (RLS) ב-PostgreSQL מאפשר להגדיר policies שמגבילות, לכל משתמש, אילו שורות שאילתה יכולה להחזיר ואילו שורות פקודות הוספה, עדכון ומחיקה יכולות לשנות. המנגנון פועל בנוסף להרשאות SQL הרגילות (GRANT). הוא מופעל בטבלה עם ALTER TABLE ... ENABLE ROW LEVEL SECURITY. כשהוא מופעל ואין policy שחלה, אף שורה אינה גלויה או ניתנת לשינוי. policy כוללת ביטוי USING שקובע אילו שורות קיימות נגישות, וביטוי WITH CHECK שמגביל שורות חדשות או משתנות.

הסבר בגובה העיניים#

דמיינו טבלת הזמנות אחת שמשרתת הרבה לקוחות. בלי RLS, כל מי שמחובר יכול (תיאורטית) לראות הכול, ואתם סומכים על כך שהקוד באפליקציה יסנן נכון. עם RLS, מסד הנתונים עצמו אוכף את הכלל "לקוח רואה רק שורות שמסומנות כשלו", גם אם יש טעות באפליקציה. חשוב לזכור שיש חריגים: משתמשי-על ותפקידים עם התכונה BYPASSRLS עוקפים את המנגנון, ובעלי הטבלה עוקפים אותו אלא אם הוגדר FORCE ROW LEVEL SECURITY.

למה זה חשוב בפועל#

הפעלת RLS בלי policies חוסמת את כל הגישה, ולכן בדקו כל policy עם משתמשים אמיתיים. RLS הוא מימוש של Authorization ושל Least Privilege ברמת הנתונים.

תגיות#

  • postgresql
  • row level security
  • database security
  • access control

מקורות#

GL-092