اصل حداقل امتیاز

اصل حداقل امتیاز در امنیت شبکه (Principle of Least Privilege) 
در امنیت اطلاعات، علوم رایانه و سایر حوزه‌ها، اصل حداقل امتیاز (PoLP) که با نام‌های اصل کمترین امتیاز (PoMP) یا اصل کمترین اقتدار (PoLA) نیز شناخته می‌شود، ایجاب می‌کند که در یک لایه انتزاعی خاص از یک محیط محاسباتی، هر ماژول (مانند یک فرآیند، یک کاربر یا یک برنامه، بسته به موضوع) باید بتواند تنها به اطلاعات و منابعی دسترسی داشته باشد که برای هدف مشروع و قانونی‌اش ضروری هستند.

 جزئیات 
این اصل به معنای دادن تنها آن دسته از امتیازاتی به حساب‌های کاربری یا فرآیندها است که برای انجام عملکردهای مورد نظر آن‌ها حیاتی و ضروری است. برای مثال، یک حساب کاربری که تنها هدفش ایجاد فایل‌های پشتیبان (Backup) است، نیازی به نصب نرم‌افزار ندارد؛ بنابراین، این حساب تنها حق اجرای برنامه‌های پشتیبان‌گیری و برنامه‌های مرتبط با آن را دارد و سایر امتیازات، مانند نصب نرم‌افزار جدید، برای آن مسدود می‌شود. این اصل همچنین در مورد کاربر یک رایانه شخصی نیز صدق می‌کند؛ کاربری که معمولاً کارهای خود را در یک حساب کاربری عادی انجام می‌دهد و تنها زمانی که موقعیت قطعاً ایجاب می‌کند، یک حساب کاربری دارای امتیاز (مدیر) و محافظت‌شده با رمز عبور را باز می‌کند.

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

اصل حداقل دسترسی به‌طور گسترده به عنوان یک ملاحظه طراحی مهم برای ارتقا و تقویت محافظت از داده‌ها و عملکردها در برابر خطاها (تحمل خطا) و رفتارهای مخرب شناخته می‌شود.

 مزایا 

 امنیت فکری (Intellectual Security): وقتی کد در دامنه تغییراتی که می‌تواند در سیستم ایجاد کند محدود باشد، آزمایش اقدامات احتمالی و تعاملات آن با سایر برنامه‌های امنیتی آسان‌تر است. در عمل، برای مثال، برنامه‌هایی که با حقوق محدود اجرا می‌شوند، به عملیاتی که می‌تواند منجر به از کار افتادن (Crash) دستگاه شود یا بر سایر برنامه‌های در حال اجرا در همان سیستم تأثیر منفی بگذارد، دسترسی نخواهند داشت.
 امنیت بهتر سیستم: وقتی کد در اقدامات سطح سیستم که می‌تواند انجام دهد محدود باشد، آسیب‌پذیری در یک برنامه نمی‌تواند برای سوءاستفاده از بقیه دستگاه استفاده شود. به عنوان مثال، مایکروسافت بیان می‌کند: «اجرا در حالت کاربر استاندارد، محافظت بیشتری در برابر آسیب‌های ناخواسته سطح سیستم ناشی از حملات Shatter و بدافزارهایی مانند روت‌کیت‌ها، جاسوس‌افزارها و ویروس‌های غیرقابل شناسایی به مشتریان می‌دهد.»
 سهولت در استقرار (Deployment): به‌طور کلی، هرچه یک برنامه به امتیازات کمتری نیاز داشته باشد، استقرار آن در یک محیط بزرگتر آسان‌تر است. این موضوع معمولاً از دو مزیت اول ناشی می‌شود؛ برنامه‌هایی که درایورهای دستگاه را نصب می‌کنند یا به امتیازات امنیتی بالا نیاز دارند، معمولاً مراحل اضافی در استقرار خود دارند. به عنوان مثال، در ویندوز، راهکاری که درایور دستگاه ندارد می‌تواند مستقیماً بدون نصب اجرا شود، در حالی که درایورهای دستگاه باید جداگانه با استفاده از سرویس نصب‌کننده ویندوز نصب شوند تا امتیازات بالای لازم به درایور اعطا شود.در عمل، تعاریف متعددی برای «حداقل امتیاز واقعی» وجود دارد. با افزایش سریع پیچیدگی برنامه‌ها، تعداد مشکلات احتمالی نیز افزایش می‌یابد و رویکرد پیش‌بینی‌کننده را غیرعملی می‌کند. برای مثال می‌توان به مقادیر متغیرهایی که برنامه پردازش می‌کند، آدرس‌هایی که نیاز خواهد داشت یا زمان دقیق نیاز به آن‌ها اشاره کرد. سیستم‌های قابلیت شیء (Object capability systems) به عنوان مثال اجازه می‌دهند اعطای یک امتیاز یک‌بار مصرف تا زمانی که قرار است استفاده شود، به تعویق بیفتد. در حال حاضر، نزدیک‌ترین رویکرد عملی، حذف امتیازاتی است که می‌توان به صورت دستی ارزیابی کرد که غیرضروری هستند. مجموعه امتیازات حاصل معمولاً از حداقل واقعی مورد نیاز برای فرآیند بیشتر است.

محدودیت دیگر، دقت کنترلی (Granularity) است که محیط عملیاتی بر امتیازات یک فرآیند فردی دارد. در عمل، به ندرت ممکن است دسترسی یک فرآیند به حافظه، زمان پردازش، آدرس دستگاه‌های ورودی/خروجی یا حالت‌ها را با دقتی کنترل کرد که تنها مجموعه دقیق امتیازات مورد نیاز فرآیند را فراهم کند.

فرمول‌بندی اصلی از جروم سالتزر (Jerome Saltzer) است:«هر برنامه و هر کاربر دارای امتیاز در سیستم باید با استفاده از کمترین مقدار امتیازی که برای تکمیل کار لازم است، فعالیت کند.»پیتر جی. دنینگ در مقاله خود با عنوان «سیستم‌های عامل تحمل‌پذیر خطا»، این اصل را در دیدگاهی گسترده‌تر در میان «چهار اصل اساسی تحمل خطا» قرار داد.

«تخصیص پویای امتیازات» پیش‌تر توسط راجر نیدهام در سال ۱۹۷۲ مورد بحث قرار گرفته بود.

از نظر تاریخی، قدیمی‌ترین نمونه از حداقل امتیاز احتمالاً کد منبع `login.c` است که اجرا را با مجوزهای ابرکاربر (Super-user) شروع می‌کند و در لحظه‌ای که دیگر نیازی به آن‌ها نیست، از طریق `setuid()` با یک آرگومان غیر صفر، آن‌ها را رها می‌کند؛ همان‌طور که در کد منبع نسخه ۶ یونیکس نشان داده شده است.

 پیاده‌سازی 
هسته (Kernel) همیشه با حداکثر امتیازات اجرا می‌شود زیرا هسته سیستم‌عامل است و به سخت‌افزار دسترسی دارد. یکی از مسئولیت‌های اصلی یک سیستم‌عامل، به ویژه سیستم‌عامل چندکاربره، مدیریت در دسترس بودن سخت‌افزار و درخواست‌های دسترسی به آن از سوی فرآیندهای در حال اجرا است. وقتی هسته از کار می‌افتد (Crash)، مکانیسم‌هایی که با آن‌ها وضعیت را حفظ می‌کند نیز با شکست مواجه می‌شوند. بنابراین، حتی اگر راهی برای بازیابی CPU بدون ریست سخت‌افزاری وجود داشته باشد، امنیت همچنان اعمال می‌شود، اما سیستم‌عامل نمی‌تواند به درستی به شکست پاسخ دهد زیرا تشخیص شکست ممکن نبوده است.

اگر اجرا پس از کراش با بارگذاری و اجرای کد تروجان ادامه یابد، نویسنده کد تروجان می‌تواند کنترل تمام فرآیندها را به دست بگیرد. اصل حداقل امتیاز، کد را مجبور می‌کند با کمترین سطح امتیاز/مجوز ممکن اجرا شود. این بدان معناست که کدی که اجرای کد را از سر می‌گیرد - چه تروجان باشد و چه صرفاً اجرای کدی که از یک مکان غیرمنتظره شروع شده است - توانایی انجام فرآیندهای مخرب یا نامطلوب را نخواهد داشت. یکی از روش‌های مورد استفاده برای دستیابی به این هدف می‌تواند در سخت‌افزار ریزپردازنده پیاده‌سازی شود. برای مثال، در معماری Intel x86، سازنده چهار "حالت" اجرا (حلقه ۰ تا حلقه ۳) با درجات دسترسی درجه‌بندی شده طراحی کرده است - مشابه سیستم‌های تعیین صلاحیت امنیتی در آژانس‌های دفاعی و اطلاعاتی.

همان‌طور که در برخی از سیستم‌های عامل پیاده‌سازی شده است، فرآیندها با یک «مجموعه امتیاز بالقوه» و یک «مجموعه امتیاز فعال» اجرا می‌شوند. چنین مجموعه‌های امتیازی از والد (Parent) به ارث می‌رسند. یک فایل اجرایی که یک عملکرد ممتاز را انجام می‌دهد ممکن است با مجموعه‌ای از امتیازات علامت‌گذاری شود. این یک بسط منطقی از مفاهیم set user ID و set group ID است. وراثت امتیازات فایل توسط یک فرآیند توسط خانواده فراخوانی‌های سیستمی `exec()` تعیین می‌شود. روش دقیقی که در آن امتیازات فرآیند بالقوه، امتیازات فرآیند واقعی و امتیازات فایل با هم تعامل دارند، می‌تواند پیچیده شود. در عمل، حداقل امتیاز با مجبور کردن یک فرآیند به اجرا تنها با امتیازات مورد نیاز توسط وظیفه اعمال می‌شود. پایبندی به این مدل بسیار پیچیده و همچنین خطا‌پذیر است.

 اصول مشابه 
مفهوم به حداقل رساندن پایگاه محاسباتی مورد اعتماد (TCB) در معیار ارزیابی سیستم کامپیوتری مورد اعتماد (TCSEC)، الزامی بسیار سخت‌گیرانه‌تر است که فقط برای قوی‌ترین کلاس‌های تضمین عملکردی (یعنی کلاس‌های B3 و A1) قابل اعمال است.

حداقل امتیاز اغلب با **«محدودسازی امتیاز» (Privilege bracketing)** مرتبط است: یعنی به دست آوردن امتیازات لازم در آخرین لحظه ممکن و رها کردن آن‌ها به محض اینکه دیگر اکیداً مورد نیاز نیستند؛ بنابراین ظاهراً پیامدهای ناشی از کد اشتباهی را که ناخواسته از امتیاز بیشتری نسبت به آنچه سزاوار است استفاده می‌کند، کاهش می‌دهد. حداقل امتیاز همچنین در چارچوب توزیع مجوزهای کنترل دسترسی اختیاری (DAC) تفسیر شده است، به عنوان مثال این ادعا که دادن دسترسی خواندن/نوشتن به کاربر U برای فایل F، اصل حداقل امتیاز را نقض می‌کند اگر U بتواند وظایف مجاز خود را تنها با مجوز خواندن انجام دهد.

## جستارهای وابسته

  کنترل حساب کاربری (UAC)
 امنیت مبتنی بر قابلیت
 جداسازی (اطلاعاتی)
 مسئله معاون سردرگم (Confused deputy problem)
 کپسوله‌سازی (برنامه‌نویسی شیءگرا)
 نیاز به دانستن
 ارتقای امتیاز
 لغو امتیاز
 حلقه حفاظتی
 کنترل دسترسی مبتنی بر نقش
 sudo / setuid

*ترجمه شده از ویکی‌پدیای انگلیسی - ۲۰۲۴*