RBAC مخفف Role-Based Access Control است و معادل فارسی دقیق آن «کنترل دسترسی مبتنی بر نقش» است. در این روش مجوزهایی مانند مشاهده گزارش یا بازپرداخت سفارش به نقش نسبت داده میشود و کاربران نقش میگیرند.
| نقش | مشاهده سفارش | تغییر قیمت | بازپرداخت |
|---|---|---|---|
| پشتیبان | مجاز | غیرمجاز | غیرمجاز |
| مدیر فروش | مجاز | مجاز | مجاز با کنترل اضافی |
| مشتری | فقط سفارش خود | غیرمجاز | غیرمجاز |
ROLE_PERMISSIONS = {
"support": {"orders:read"},
"manager": {"orders:read", "prices:write"},
}
def can(user_role: str, permission: str) -> bool:
return permission in ROLE_PERMISSIONS.get(user_role, set())
RBAC به خودی خود بررسی مالکیت رکورد را حل نمیکند. برای مثال مشتری با مجوز orders:read فقط باید سفارشهای متعلق به خودش را ببیند. ممکن است سیستم علاوه بر RBAC از ACL یا ABAC نیز استفاده کند.
تفاوت مفاهیم
ACL فهرست مجوزهای یک منبع را نگه میدارد، RBAC اجازهها را به نقش متصل میکند. میتوان هر دو را با سیاستهای آبجکتمحور ترکیب کرد.
اصطلاحات مرتبط: ایسیال، مجوزدهی، احراز هویت، ارجاع مستقیم ناامن به آبجکت.