Открыть сервисСервис

Дискреционный доступ

Дискреционный доступ — это метод управления доступом к объектам информационной системы (файлам, каталогам, устройствам, программам), основанный на идентификации субъекта (пользователя, процесса) и предоставлении ему прав доступа на усмотрение владельца объекта или администратора системы. В отличие от мандатного доступа, дискреционный доступ не опирается на жёсткие метки безопасности, а позволяет явно задавать для каждого субъекта и объекта набор разрешённых операций (чтение, запись, выполнение, удаление и т. д.). Данный подход является основой большинства операционных систем общего назначения (Windows, Linux, macOS) и широко применяется в корпоративных и персональных информационных средах.

История

Концепция дискреционного доступа возникла в 1960-х годах с развитием многопользовательских операционных систем, когда потребовалось разграничивать права пользователей на файлы и ресурсы. Одной из первых реализаций стала система Multics (1965–1969), где ввели понятие списков контроля доступа (ACL) для каждого файла. В 1970-х годах дискреционный доступ был формализован в модели безопасности, предложенной Лэмпсоном и другими исследователями. В 1980-х годах, с выходом UNIX и его производных, модель стала стандартом де-факто: каждый файл имел владельца, группу и три уровня прав (чтение, запись, выполнение). В 1990-х годах Microsoft Windows внедрила более сложную систему ACL, основанную на объектной модели безопасности NT. С развитием облачных технологий и распределённых систем дискреционный доступ дополняется ролевыми и атрибутивными моделями, но остаётся базовым механизмом в локальных и корпоративных сетях.

Основные принципы

Дискреционный доступ строится на следующих ключевых принципах:

Отличительной чертой дискреционного доступа является гибкость — владелец может настраивать доступ для каждого объекта индивидуально, что удобно в небольших коллективах, но создаёт риски при масштабировании.

Модели и реализации

Классическая UNIX-модель

В UNIX-подобных системах (Linux, FreeBSD, macOS) дискреционный доступ реализован через трёхуровневую битовую маску для каждого файла или каталога:

  • Владелец (user) — права для создателя объекта.
  • Группа (group) — права для пользователей, входящих в группу владельца.
  • Прочие (others) — права для всех остальных.

Каждый уровень включает три бита: чтение (r), запись (w), выполнение (x). Например, маска rwxr-xr-- означает, что владелец может читать, записывать и выполнять файл; группа — читать и выполнять; остальные — только читать. Для каталогов бит выполнения означает разрешение на вход.

Списки контроля доступа (ACL)

ACL (Access Control Lists) расширяют базовую модель, позволяя задавать права для произвольного числа отдельных пользователей и групп. ACL поддерживаются в большинстве современных файловых систем (NTFS, ext4, ZFS, APFS). Каждая запись ACL содержит:

  • Субъект (пользователь или группа).
  • Тип доступа (разрешение или запрет).
  • Набор операций (чтение, запись, выполнение, изменение прав и др.).

ACL могут быть дискреционными (управляются владельцем) и системными (задаются администратором). В Windows ACL организованы в виде дескрипторов безопасности, которые включают владельца, группу и список записей (ACE — Access Control Entry).

Модель Windows NT

В Windows дискреционный доступ реализован через объектную модель безопасности. Каждый объект (файл, раздел реестра, процесс) имеет дескриптор безопасности, содержащий:

  • SID владельца.
  • SID группы (по умолчанию).
  • DACL (Discretionary Access Control List) — список разрешений и запретов для субъектов.
  • SACL (System Access Control List) — список аудита (записи событий доступа).

Права наследуются от родительских объектов (каталогов) и могут быть явно переопределены. Система проверяет DACL при каждой попытке доступа: если субъект не указан ни в одной записи, доступ запрещается (по умолчанию).

Применение

Дискреционный доступ используется в широком спектре сценариев:

  • Операционные системы: управление правами на файлы, папки, устройства, процессы.
  • Базы данных: назначение привилегий на таблицы, представления, хранимые процедуры (например, в SQL Server, PostgreSQL).
  • Корпоративные приложения: настройка доступа к документам, папкам, отчётам.
  • Веб-серверы и CMS: управление правами пользователей на контент (например, в WordPress, Joomla).
  • Облачные хранилища: разграничение доступа к файлам и папкам между пользователями (Google Drive, Яндекс.Диск).

В организациях дискреционный доступ часто комбинируется с ролевыми моделями (RBAC) для упрощения администрирования: администратор создаёт группы по должностям, а владельцы объектов назначают права группам, а не отдельным сотрудникам.

Преимущества и недостатки

Преимущества

  • Гибкость: владелец объекта может тонко настраивать права для каждого субъекта.
  • Простота понимания: модель интуитивно понятна пользователям и администраторам.
  • Децентрализация: не требуется централизованного управления — каждый владелец управляет своими объектами.
  • Совместимость: поддерживается практически всеми современными операционными системами и приложениями.

Недостатки

  • Сложность масштабирования: при большом количестве объектов и пользователей управление правами вручную становится трудоёмким.
  • Риск ошибок: владельцы могут случайно предоставить избыточные права, что создаёт уязвимости.
  • Отсутствие контроля целостности: модель не защищает от несанкционированного копирования или распространения данных (владелец может разрешить чтение любому).
  • Уязвимость к атакам: злоумышленник, получивший права владельца, может изменить права для других объектов.
  • Не подходит для высокозащищённых систем: в государственных и военных системах требуется мандатный доступ с метками конфиденциальности.

Сравнение с другими моделями

ХарактеристикаДискреционный доступМандатный доступРолевой доступ (RBAC)
Управление правамиВладелец объектаЦентрализованное (администратор)Администратор (назначение ролей)
ГибкостьВысокаяНизкая (жёсткие метки)Средняя (роли и иерархии)
МасштабируемостьНизкаяВысокаяВысокая
Защита от утечекСлабаяСильная (метки конфиденциальности)Средняя (зависит от реализации)
ПримерыUNIX, Windows, базы данныхSELinux, MILS, системы госсектораActive Directory, Oracle ERP

Интересные факты

  • В ранних версиях UNIX (1970-е) права доступа задавались только для владельца, группы и остальных — ACL появились лишь в 1990-х.
  • В Windows NT 3.1 (1993) впервые была реализована полноценная система ACL, которая стала основой для последующих версий.
  • В Linux поддержка ACL появилась в ядре 2.6 (2003) и требует включения опции CONFIG_FS_POSIX_ACL.
  • В некоторых системах (например, FreeBSD) дискреционный доступ дополняется капабилити — возможностью передавать права на выполнение отдельных операций без полного владения объектом.
  • Стандарт POSIX.1e (1997) описывал расширенные ACL для UNIX, но так и не был полностью принят; его реализация варьируется между дистрибутивами.

Критика

Дискреционный доступ подвергается критике за недостаточную защиту в многопользовательских средах с высокими требованиями к безопасности. Основные претензии:

  • Отсутствие гарантий неотчуждаемости: владелец может случайно или намеренно передать права злоумышленнику.
  • Сложность аудита: при большом количестве объектов и ACL трудно отследить, кто и какие права имеет.
  • Неэффективность против вредоносного ПО: вирус, запущенный от имени пользователя, может получить доступ ко всем его объектам.

В ответ на эти недостатки были разработаны модели мандатного доступа (например, SELinux, AppArmor) и атрибутивного доступа (ABAC), которые дополняют или заменяют дискреционный доступ в критически важных системах. Однако в большинстве коммерческих и частных систем дискреционный доступ остаётся основным механизмом благодаря простоте и низкой стоимости внедрения.

Источники

  • Лэмпсон Б., «Защита информации в компьютерных системах» (1971)
  • Стандарт POSIX.1e (1997) — расширенные списки контроля доступа
  • Документация Microsoft Windows Security (NTFS ACL)
  • Руководство по безопасности Linux (Red Hat, SUSE)
  • Книга «Security in Computing» Чарльза Пфлегера (2006)
  • RFC 2828 — Internet Security Glossary (дискреционный доступ)
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru