В информационная безопасность, информатика, и другие поля, принцип наименьших привилегий (PoLP ), также известный как принцип минимальных привилегий или принцип наименьших полномочий, требует, чтобы на конкретном уровне абстракции вычислительной среды каждый модуль (например, процесс, пользователь или программа, в зависимости от темы) должен иметь доступ только к информации и ресурсам, которые необходимы для его законной цели.
Принцип означает предоставление учетной записи пользователя или обрабатывать только те привилегии, которые ich необходимы для выполнения предполагаемой функции. Например, учетная запись пользователя с единственной целью создания резервных копий не требует установки программного обеспечения: следовательно, она имеет права только на запуск приложений резервного копирования и резервного копирования. Любые другие привилегии, такие как установка нового программного обеспечения, заблокированы. Этот принцип применим также к пользователю персонального компьютера, который обычно работает под учетной записью обычного пользователя и открывает привилегированную учетную запись, защищенную паролем (то есть суперпользователя ), только когда этого требует ситуация.
Применительно к пользователям также используются термины наименьший доступ пользователя или учетная запись пользователя с наименьшими привилегиями (LUA), относящиеся к концепции, что все учетные записи пользователей в всегда следует запускать с минимальным количеством привилегий , а также запускать приложения с минимальным количеством привилегий.
Принцип наименьших привилегий широко признан в качестве важного конструктивного решения при усилении защиты данных и функциональных возможностей от сбоев (отказоустойчивость ) и злонамеренного поведения (компьютерная безопасность ).
Преимущества принципа:
В На практике существует несколько конкурирующих определений истинных наименьших привилегий. По мере того, как сложность программы увеличивается с экспоненциальной скоростью, растет и количество потенциальных проблем, что делает прогнозный подход непрактичным. Примеры включают значения переменных, которые он может обрабатывать, адреса, которые ему потребуются, или точное время, когда такие вещи потребуются. Системы возможностей объектов позволяют, например, отложить предоставление привилегии одноразового использования до того момента, когда она будет использована. В настоящее время наиболее близким практическим подходом является устранение привилегий, которые можно вручную оценить как ненужные. Результирующий набор привилегий обычно превышает реальный минимум необходимых привилегий для процесса.
Другим ограничением является степень детализации управления, которое операционная среда имеет над привилегиями для отдельного процесса. На практике редко возможно контролировать доступ процесса к памяти, время обработки, адреса или режимы устройств ввода-вывода с точностью, необходимой для обеспечения только точного набора привилегий, которые потребуются процессу.
Исходная формулировка взята из Джерома Зальцера :
Каждая программа и каждый привилегированный пользователь системы должен работать с минимальным количеством привилегий, необходимых для выполнения работы.
— Джером Зальцер, Связь с ACMПитер Дж. Деннинг в своей статье «Отказоустойчивые операционные системы» установил его в более широкой перспективе среди четырех фундаментальных принципов отказоустойчивости.
Динамическое назначение привилегий ранее обсуждалось Роджером Нидхэмом в 1972 году.
Исторически самым старым экземпляром минимальных привилегий, вероятно, является исходный код login.c, который начинает выполнение с разрешениями суперпользователя и - как только они больше не нужны - отклоняет их с помощью setuid () с ненулевым аргументом, как показано в версии 6 Unix исходный код.
Ядро всегда работает с максимальными привилегиями, поскольку оно является ядром операционной системы и имеет доступ к оборудованию. Одной из основных обязанностей операционной системы, особенно многопользовательской операционной системы, является управление доступностью оборудования и запросами на доступ к нему из запущенных процессов. Когда ядро выходит из строя, механизмы, с помощью которых оно поддерживает состояние , также не работают. Следовательно, даже если для ЦП существует способ восстановления без аппаратного сброса, безопасность продолжает применяться, но операционная система не может должным образом отреагировать на сбой, потому что он не был можно обнаружить неисправность. Это связано с тем, что выполнение ядра либо остановлено, либо счетчик программы возобновил выполнение откуда-то из бесконечного и - обычно нефункционального цикла . Это было бы похоже на амнезию (сбой выполнения ядра) или попадание в замкнутый лабиринт, который всегда возвращается в исходную точку (замкнутые циклы).
Принцип наименьших привилегий, продемонстрированный кольцами привилегий для Intel x86Если выполнение возобновляется после сбоя при загрузке и запуске троянского кода, автор троянского кода может узурпировать контроль всех процессов. Принцип минимальных привилегий заставляет код работать с минимально возможным уровнем привилегий / разрешений. Это означает, что код, который возобновляет выполнение кода - будь то троян или просто запуск кода из неожиданного места - не будет иметь возможности выполнять вредоносные или нежелательные процессы. Один метод, используемый для этого, может быть реализован в аппаратном обеспечении микропроцессора . Например, в архитектуре Intel x86 производитель разработал четыре (от кольца 0 до кольца 3), работающих «режима» с градуированными степенями доступа, подобно системам уровня допуска в обороне и разведке. агентства.
Как реализовано в некоторых операционных системах, процессы выполняются с потенциальным набором привилегий и активным набором привилегий. Такие наборы привилегий наследуются от родителя, как определено семантикой fork (). Исполняемый файл , который выполняет привилегированную функцию - тем самым технически составляя компонент TCB и одновременно называемый доверенной программой или надежным процессом, - также может быть помечен набором привилегий. Это логическое расширение понятий установить идентификатор пользователя и установить идентификатор группы. Наследование файловых привилегий процессом определяется семантикой семейства exec () системных вызовов . Точный способ взаимодействия потенциальных привилегий процессов, фактических привилегий процессов и привилегий файлов может стать сложным. На практике наименьшие привилегии практикуются, заставляя процесс запускаться только с теми привилегиями, которые требуются задаче. Соблюдение этой модели довольно сложно, а также подвержено ошибкам.
Концепция критериев оценки доверенных компьютерных систем (TCSEC) для минимизации доверенной вычислительной базы (TCB) является гораздо более строгим требованием. это применимо только к наиболее функционально строгим классам доверия, а именно, B3 и A1 (которые доказательно различаются, но функционально идентичны).
Наименьшие привилегии часто связаны с брекетингом привилегий : то есть, принятие необходимых привилегий в последний возможный момент и отклонение их, как только больше не является строго необходимым, таким образом якобы уменьшая последствия ошибочного кода это непреднамеренно использует больше привилегий, чем заслужено. Наименьшие привилегии также интерпретировались в контексте распределения разрешений дискреционного управления доступом (DAC), например, утверждение, что предоставление пользователю U доступа для чтения / записи к файлу F нарушает минимальные привилегии, если U может выполнять свои авторизованные задачи с разрешением только на чтение.