В інформаційній безпеці, інформатиці та інших галузях принцип найменших привілеїв (, PoLP чи , PoMP чи , PoLA), вимагає, щоб на певному шарі абстракції обчислювального середовища кожен модуль (наприклад, процес, користувач або програма, залежно від контексту) мав доступ лише до тієї інформації та тих ресурсів, які необхідні для виконання його законної мети.
Подробиці
Цей принцип означає, що кожному обліковому запису користувача або процесу надаються лише ті привілеї, які є абсолютно необхідними для виконання його призначених функцій. Наприклад, обліковому запису користувача, призначеному виключно для створення резервних копій, не потрібні права на встановлення програмного забезпечення; тому він має права лише на запуск програм резервного копіювання та пов'язаних із ними застосунків. Будь-які інші привілеї, наприклад встановлення нового програмного забезпечення, блокуються. Цей принцип також застосовується до користувача персонального комп'ютера, який зазвичай працює зі звичайного облікового запису користувача і відкриває привілейований, захищений паролем обліковий запис лише тоді, коли цього абсолютно потребує ситуація.
Коли принцип застосовується до користувачів, також використовуються терміни найменший доступ користувача (least user access) або обліковий запис користувача з найменшими привілеями (least-privileged user account, LUA), що означає, що всі облікові записи користувачів повинні працювати з якомога меншою кількістю привілеїв, а також запускати застосунки з якомога меншою кількістю привілеїв.
Принцип найменших привілеїв широко визнаний важливим принципом проєктування, що сприяє підвищенню рівня захисту даних і функціональності від збоїв (відмовостійкість) та зловмисних дій.
Переваги цього принципу включають:
Інтелектуальну безпеку. Коли код обмежений у можливих змінах, які він може вносити до системи, легше перевірити його можливі дії та взаємодію з іншими застосунками, що забезпечують безпеку. Наприклад, застосунки, які працюють з обмеженими правами, не матимуть можливості виконувати операції, здатні призвести до аварійного завершення роботи системи або негативно вплинути на інші застосунки, що працюють у цій самій системі. Підвищення безпеки системи. Коли код обмежений у системних діях, які він може виконувати, уразливості одного застосунку не можуть бути використані для компрометації всієї системи. Наприклад, Microsoft зазначає: «Робота в режимі стандартного користувача забезпечує користувачам підвищений захист від ненавмисного пошкодження системи на її рівні, спричиненого "атаками shatter" і шкідливим програмним забезпеченням, таким як руткіти, шпигунське програмне забезпечення та невиявлювані комп'ютерні віруси». Спрощення розгортання. Загалом, що менше привілеїв потребує застосунок, то легше його розгорнути у великому середовищі. Зазвичай це є наслідком перших двох переваг: застосунки, які встановлюють драйвери пристроїв або потребують підвищених привілеїв безпеки, як правило, вимагають додаткових кроків під час розгортання. Наприклад, у Windows рішення, яке не використовує драйверів пристроїв, можна запускати безпосередньо без встановлення, тоді як драйвери пристроїв необхідно встановлювати окремо за допомогою служби встановлення Windows, щоб надати драйверу підвищені привілеї.
На практиці існує кілька конкуруючих визначень того, що саме слід вважати справжнім принципом найменших привілеїв. Оскільки складність програм швидко зростає, так само зростає і кількість потенційних проблем, що робить прогностичний підхід непрактичним. До таких проблем належать, наприклад, значення змінних, які оброблятимуться, адреси, які знадобляться, або точний момент, коли вони будуть потрібні. Системи об'єктних можливостей (object capability systems) дають змогу, наприклад, відкладати надання одноразового привілею до моменту, коли він справді знадобиться. На сьогодні найближчим практичним підходом є вилучення привілеїв, які можна вручну визначити як непотрібні. Отриманий набір привілеїв зазвичай перевищує справжній мінімум, необхідний процесу.
Іншим обмеженням є ступінь деталізації, з яким операційне середовище може контролювати привілеї окремого процесу. На практиці рідко вдається контролювати доступ процесу до пам'яті, процесорного часу, адрес або режимів роботи пристроїв введення-виведення з точністю, достатньою для надання лише саме того набору привілеїв, який необхідний процесу.
Реалізація Ядро завжди працює з максимальними привілеями, оскільки є центральною частиною операційної системи і має безпосередній доступ до апаратного забезпечення. Одним з основних обов'язків операційної системи, особливо багатокористувацької, є керування доступністю апаратних ресурсів і обробка запитів на доступ до них від процесів, що виконуються. Коли ядро аварійно завершує роботу, механізми, за допомогою яких воно підтримує стан, також виходять з ладу. Тому навіть якщо існує спосіб відновлення роботи центрального процесора без апаратного скидання, безпека й надалі забезпечуватиметься, але операційна система вже не зможе належним чином реагувати на збій, оскільки вона не в змозі виявити його. Це пов'язано з тим, що виконання ядра або припинилося, або лічильник команд відновив виконання з місця, яке перебуває всередині нескінченного і, як правило, нефункціонального циклу. Це можна порівняти або з амнезією (збій виконання ядра), або з потраплянням у замкнений лабіринт, який щоразу повертає до початкової точки (замкнені цикли).
Якщо після збою виконання поновлюється шляхом завантаження та запуску коду троянської програми, її автор може захопити керування всіма процесами. Принцип найменших привілеїв вимагає, щоб код виконувався з найнижчим можливим рівнем привілеїв або дозволів. Це означає, що код, який поновлює виконання — незалежно від того, чи це троянська програма, чи просто виконання продовжується з неочікуваного місця, — не матиме можливості виконувати зловмисні або небажані дії. Один зі способів реалізації цього принципу може бути забезпечений апаратними засобами мікропроцесора. Наприклад, в архітектурі Intel x86 виробник передбачив чотири режими виконання (кільця від 0 до 3) із поступовим зменшенням рівня доступу, подібно до систем допуску до секретної інформації, що використовуються в оборонних та розвідувальних установах.
У деяких операційних системах процеси виконуються з набором потенційних привілеїв (potential privilege set) і набором активних привілеїв (active privilege set). Такі набори привілеїв успадковуються від батьківського процесу відповідно до семантики системного виклику fork(). Виконуваний файл, який виконує привілейовані функції — а отже, технічно є компонентом довіреної обчислювальної бази (TCB) і відповідно називається довіреною програмою або довіреним процесом, — також може бути позначений певним набором привілеїв. Це є логічним розширенням понять set user ID і set group ID. Успадкування файлових привілеїв процесом визначається семантикою сімейства системних викликів exec(). Точний спосіб взаємодії потенційних привілеїв процесу, фактичних привілеїв процесу та файлових привілеїв може бути досить складним. На практиці принцип найменших привілеїв реалізується шляхом примушування процесу працювати лише з тими привілеями, які потрібні для виконання конкретного завдання. Дотримання цієї моделі також є досить складним і схильним до помилок.
Суміжні поняття ..
Див. також User Account Control Кільця захисту Вибіркове керування доступом Керування доступом на основі ролей Мандатне керування доступом Підвищення привілеїв Інкапсуляція (програмування) sudo
Примітки