ایجاد اعتماد از طریق کنترل دسترسی

اکثر اپلیکیشن‌ها تصور می‌کنند چون صفحه ورود دارند، امن هستند.

ورود تنها اولین قدم است. وقتی کاربر وارد شد، باید به یک سوال پاسخ دهید: این کاربر چه کاری می‌تواند انجام دهد؟

بسیاری از افراد احراز هویت (Authentication) را با تعیین سطح دسترسی (Authorization) اشتباه می‌گیرند.

• احراز هویت می‌پرسد: شما کی هستید؟ • تعیین سطح دسترسی می‌پرسد: شما اجازه انجام چه کاری را دارید؟

یک کاربر ممکن است با موفقیت وارد شود، اما این به معنای آن نیست که باید تمام رکوردها را ببیند یا تمام پروفایل‌ها را ویرایش کند.

برای شفاف‌سازی قوانین، از کنترل دسترسی مبتنی بر نقش (RBAC) استفاده کنید.

RBAC با بررسی نقش کاربر در برابر فهرستی از نقش‌های مجاز کار می‌کند. اگر از کنترل دسترسی استفاده نکنید، با ریسک‌هایی مانند موارد زیر روبرو خواهید شد:

  • داشبوردهای بیش از حد در دسترس
  • مجوزهای داخلی بیش از حد
  • نشت تصادفی داده‌ها
  • ردپای حسابرسی (Audit trail) ضعیف
  • از دست رفتن اعتماد

از اصل «حداقل امتیاز» (Principle of Least Privilege) پیروی کنید. به کاربران فقط همان دسترسی‌هایی را بدهید که برای انجام شغلشان نیاز دارند.

• کارکنان پشتیبانی نباید تمام سوابق مشتریان را ببینند. • مهندسان نباید به طور پیش‌فرض به محیط عملیاتی (Production) دسترسی داشته باشند. • داده‌های منابع انسانی (HR) باید بخش‌بندی شده باقی بمانند. • نقش‌های مدیر (Admin) باید نادر و قابل بازرسی باشند.

گاهی اوقات نقش‌ها کافی نیستند. شما به مجوزهای مبتنی بر عمل (Action-based permissions) نیاز دارید. یک کاربر ممکن است بتواند یک رکورد را مشاهده کند اما نتواند آن را حذف کند. این کار به شما کنترل دقیق و جزئی (Granular control) می‌دهد.

همچنین باید داده‌ها را بر اساس حساسیت جدا کنید: • داده‌های عمومی: نام و عکس. • داده‌های خصوصی: ایمیل و تلفن. • داده‌های حساس: حقوق یا شماره‌های شناسایی.

در کد خود با این دسته‌ها متفاوت برخورد کنید. این کار مدیریت امنیت را آسان‌تر می‌کند.

اعتماد همچنین مستلزم پاسخگویی است. هر بار که کسی به داده‌های حساس دسترسی پیدا می‌کند، سیستم شما باید یک ردپای حسابرسی (Audit trail) ایجاد کند. اقدامات حساس باید اثری از خود به جای بگذارند.

قبل از عرضه اپلیکیشن خود، این موارد را بررسی کنید:

  • آیا جریان‌های ورود و نشست (Session) امن هستند؟
  • آیا مجوزها بر اساس نقش‌ها و اقدامات هستند؟
  • آیا داده‌های حساس بخش‌بندی شده‌اند؟
  • آیا تنظیمات پیش‌فرض شما محدودکننده هستند؟
  • آیا تمام دسترسی‌ها را ثبت (Log) می‌کنید؟
  • آیا می‌توانید مجوزها را برای کاربران خود توضیح دهید؟

احراز هویت کاربران را وارد سیستم می‌کند، اما تعیین سطح دسترسی، سیستم شما را قابل اعتماد نگه می‌دارد. اعتماد، یک ویژگی محصول است.

Source: https://dev.to/samiatakande11/building-trust-into-authentication-practical-access-control-patterns-for-modern-apps-55pc