Дискреционный доступ¶
Дискреционный доступ — это метод управления доступом к объектам информационной системы (файлам, каталогам, устройствам, программам), основанный на идентификации субъекта (пользователя, процесса) и предоставлении ему прав доступа на усмотрение владельца объекта или администратора системы. В отличие от мандатного доступа, дискреционный доступ не опирается на жёсткие метки безопасности, а позволяет явно задавать для каждого субъекта и объекта набор разрешённых операций (чтение, запись, выполнение, удаление и т. д.). Данный подход является основой большинства операционных систем общего назначения (Windows, Linux, macOS) и широко применяется в корпоративных и персональных информационных средах.
¶История
Концепция дискреционного доступа возникла в 1960-х годах с развитием многопользовательских операционных систем, когда потребовалось разграничивать права пользователей на файлы и ресурсы. Одной из первых реализаций стала система Multics (1965–1969), где ввели понятие списков контроля доступа (ACL) для каждого файла. В 1970-х годах дискреционный доступ был формализован в модели безопасности, предложенной Лэмпсоном и другими исследователями. В 1980-х годах, с выходом UNIX и его производных, модель стала стандартом де-факто: каждый файл имел владельца, группу и три уровня прав (чтение, запись, выполнение). В 1990-х годах Microsoft Windows внедрила более сложную систему ACL, основанную на объектной модели безопасности NT. С развитием облачных технологий и распределённых систем дискреционный доступ дополняется ролевыми и атрибутивными моделями, но остаётся базовым механизмом в локальных и корпоративных сетях.
¶Основные принципы
Дискреционный доступ строится на следующих ключевых принципах:
- Идентификация субъекта: каждый пользователь или процесс имеет уникальный идентификатор (UID, SID).
- Владение объектом: создатель объекта (файла, каталога) автоматически становится его владельцем и может назначать права другим субъектам.
- Явное задание прав: владелец или администратор вручную определяет, какие операции разрешены для каждого субъекта или группы.
- Контроль передачи прав: владелец может делегировать часть своих полномочий другим пользователям (например, разрешить изменение прав).
Отличительной чертой дискреционного доступа является гибкость — владелец может настраивать доступ для каждого объекта индивидуально, что удобно в небольших коллективах, но создаёт риски при масштабировании.
¶Модели и реализации
¶Классическая 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 (дискреционный доступ)
