امنیت سطح ردیف (RLS) چیست؟
Row-level security (RLS) امکانی در پایگاه داده است که ردیف به ردیف تعیین میکند هر کاربر مجاز است کدام رکوردها را بخواند یا تغییر دهد، تا یک مشتری فقط سفارشهای خودش را ببیند، حتی اگر اپ بیشتر درخواست کند.
بدون آن، قانون «کاربران فقط داده خودشان را ببینند» در کد اپ قرار دارد. اگر یک صفحه یا API بررسی را فراموش کند، داده خصوصی میتواند لو برود.
با row-level security، قانون در خود پایگاه داده قرار میگیرد. یک سیاست مینویسید مثل «یک ردیف در orders فقط وقتی دیده میشود که customer_id آن با کاربر واردشده یکی باشد»، و پایگاه داده آن را روی هر پرسوجو اعمال میکند.
Postgres از row-level security پشتیبانی میکند و بعضی سرویسهای بکاند به آن زیاد تکیه دارند، چون اپهایشان مستقیم از مرورگر با پایگاه داده صحبت میکنند. در چنین تنظیماتی، جدولی که سیاست ندارد ممکن است برای هرکسی قابل خواندن باشد.
RLS یک لایه حفاظت است، نه تنها لایه. اپها همچنان به ورود درست، بررسیهای سمت سرور و مدیریت دقیق دسترسی مدیر نیاز دارند.
نمونهها
- مشتریان در یک پورتال فقط مدارک خودشان را میبینند
- هر تیم در یک ابزار فقط پروژههای خودش را میبیند
پرسشها
آیا به row-level security نیاز دارم؟
اگر اپ شما داده خصوصی برای کاربران زیاد ذخیره میکند و بخشی از آن مستقیم از مرورگر پایگاه داده را پرسوجو میکند، بله. اگر همه دسترسیها از یک بکاند میگذرد که مجوزها را بررسی میکند، RLS یک شبکه ایمنی اضافی است.
آیا row-level security همان نقشها (roles) است؟
نه. نقشها مشخص میکنند کاربر چه نوعی است، مثل مدیر یا عضو. Row-level security از اطلاعاتی مثل شناسه یا نقش کاربر استفاده میکند تا تعیین کند او به کدام ردیفهای مشخص دسترسی دارد.
ببینید همچنین
Mythex · Pricing · با هوش مصنوعی هر چیزی بسازید · قالبهای وبسایت و اپلیکیشن · مقایسهی Mythex · واژهنامهی ساخت اپلیکیشن با هوش مصنوعی · ابزارهای رایگان ساخت اپلیکیشن با هوش مصنوعی · English