Дискреционное управление доступом
Дискреционное управление доступом (англ. Discretionary Access Control, DAC) — это метод разграничения доступа субъектов (пользователей, процессов) к объектам (файлам, каталогам, устройствам, сетевым ресурсам), основанный на принципе произвольного контроля владельцем объекта. Владелец объекта (обычно пользователь, создавший его) обладает правом самостоятельно определять, какие субъекты и с какими правами (чтение, запись, выполнение) могут получить доступ к этому объекту. Дискреционное управление доступом является одним из основных типов политик управления доступом, наряду с мандатным (MAC) и ролевым (RBAC).
История
Концепция дискреционного управления доступом возникла в 1960-х — 1970-х годах в рамках развития многопользовательских операционных систем. Первоначально она была реализована в операционной системе Multics (1965—1970), где впервые была введена матрица доступа (Access Control Matrix) — теоретическая модель, описывающая права доступа субъектов к объектам. В 1971 году Дэвид Эллиот Белл и Леонард Лападула разработали модель Белла — Лападулы, которая формализовала мандатное управление доступом, но дискреционная модель оставалась доминирующей в коммерческих системах благодаря своей гибкости.
В 1980-х годах с распространением персональных компьютеров и локальных сетей дискреционное управление доступом стало стандартом для операционных систем семейства UNIX (с правами доступа на основе владельца, группы и прочих) и Windows NT (с системой списков контроля доступа — ACL). В 1985 году Министерство обороны США выпустило «Оранжевую книгу» (Trusted Computer System Evaluation Criteria, TCSEC), которая определила требования к системам с дискреционным управлением доступом как к базовому уровню защиты (класс C1 и C2).
В 1990-х — 2000-х годах развитие сетевых технологий и веб-приложений привело к появлению более сложных реализаций DAC, таких как списки управления доступом (ACL) в файловых системах (NTFS, ext4, ZFS) и базах данных (SQL Server, Oracle). В 2010-х годах с ростом облачных вычислений и контейнеризации (Docker, Kubernetes) дискреционное управление доступом адаптировалось для виртуальных сред, но его недостатки в области безопасности (риск утечки прав) привели к более широкому внедрению ролевого и мандатного управления в корпоративных и государственных системах.
Основные принципы
Дискреционное управление доступом базируется на нескольких фундаментальных принципах:
- Владение объектом: субъект, создавший объект (файл, каталог, процесс), становится его владельцем. Владелец может передавать права собственности другому субъекту (например, через команду
chownв UNIX). - Произвольность контроля: владелец объекта самостоятельно решает, кому и какие права предоставить. Он может выдавать, изменять или отзывать права доступа в любой момент.
- Дискретность (раздельность) прав: права доступа задаются для каждого субъекта или группы субъектов отдельно, а не на основе единой для всей системы политики.
- Идентификация и аутентификация: для реализации DAC необходима надёжная идентификация субъектов (пользователей, процессов) и их аутентификация (например, с помощью пароля, биометрии, сертификата).
Модели реализации
Матрица доступа
Матрица доступа (Access Control Matrix) — теоретическая модель, в которой строки соответствуют субъектам, столбцы — объектам, а в ячейках указываются права доступа (например, чтение, запись, выполнение). На практике матрица редко хранится в полном виде из-за её разрежённости; вместо этого используются более компактные представления:
- Списки управления доступом (ACL): для каждого объекта хранится список субъектов и их прав. Широко применяется в файловых системах NTFS (Windows), ext4 (Linux), ZFS, а также в сетевых устройствах (Cisco ACL).
- Списки возможностей (Capability Lists): для каждого субъекта хранится список объектов и прав доступа к ним. Используется в некоторых операционных системах (например, в ранних версиях AmigaOS, в системе KeyKOS).
Права доступа в UNIX
В операционных системах семейства UNIX (Linux, macOS, BSD) дискреционное управление доступом реализовано через три категории субъектов:
- Владелец (user, u) — пользователь, создавший файл.
- Группа (group, g) — группа пользователей, к которой принадлежит владелец.
- Прочие (others, o) — все остальные пользователи.
Для каждой категории задаются три типа прав:
- Чтение (r, read) — просмотр содержимого файла или списка каталога.
- Запись (w, write) — изменение содержимого файла или создание/удаление файлов в каталоге.
- Выполнение (x, execute) — запуск файла как программы или доступ к каталогу (возможность войти в него).
Права представляются в виде девяти символов (например, rwxr-xr--) или восьмеричного числа (например, 755). Владелец может изменять права с помощью команды chmod, а владельца — с помощью chown.
Списки управления доступом (ACL) в Windows
В операционной системе Windows (начиная с Windows NT) дискреционное управление доступом реализовано через списки управления доступом (ACL), которые являются частью дескриптора безопасности (Security Descriptor) каждого объекта. ACL состоит из записей управления доступом (ACE), каждая из которых определяет:
- Субъект (пользователь, группа, компьютер).
- Тип доступа (разрешение или запрет).
- Права (чтение, запись, выполнение, удаление, изменение прав и т.д.).
- Наследование (распространяется ли правило на дочерние объекты).
ACL в Windows поддерживает явные разрешения и запреты, причём запреты имеют приоритет над разрешениями. Администрирование ACL осуществляется через графический интерфейс (вкладка «Безопасность» в свойствах объекта) или командную строку (утилиты icacls, cacls, Set-Acl в PowerShell).
Применение
Дискреционное управление доступом широко применяется в различных областях информационных технологий:
- Операционные системы: все основные ОС (Windows, Linux, macOS, Android, iOS) используют DAC для управления доступом к файлам, каталогам, реестру, процессам и другим объектам.
- Файловые системы: NTFS, ext4, ZFS, APFS, HFS+ — все поддерживают ACL или права доступа на основе владельца.
- Базы данных: системы управления базами данных (СУБД) — Microsoft SQL Server, Oracle Database, PostgreSQL, MySQL — реализуют DAC на уровне таблиц, представлений, хранимых процедур. Владелец таблицы (обычно создатель) может предоставлять права другим пользователям через команды
GRANTиREVOKE. - Сетевые устройства: маршрутизаторы и межсетевые экраны (Cisco, Juniper, MikroTik) используют ACL для фильтрации трафика на основе IP-адресов, портов и протоколов.
- Веб-приложения: многие фреймворки (Django, Spring Security, ASP.NET Core) реализуют дискреционное управление доступом на уровне контроллеров, маршрутов и данных, позволяя владельцам ресурсов (например, авторам статей) управлять доступом.
- Облачные платформы: Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP) предоставляют сервисы с дискреционным управлением доступом (например, политики IAM с привязкой к владельцу ресурса).
Преимущества и недостатки
Преимущества
- Гибкость: владелец объекта может быстро адаптировать права доступа под конкретные задачи без участия администратора.
- Простота реализации: модель DAC легко реализовать и понять, что делает её подходящей для небольших систем и рабочих групп.
- Децентрализация: управление доступом распределено между владельцами объектов, что снижает нагрузку на централизованную службу безопасности.
- Интуитивность: пользователи привыкли к концепции «моего файла» и «моих прав», что упрощает обучение.
Недостатки
- Риск утечки прав: владелец может случайно или намеренно предоставить доступ неавторизованным субъектам, в том числе вредоносному ПО.
- Отсутствие глобального контроля: администратор не может гарантировать, что все объекты защищены в соответствии с политикой безопасности организации.
- Троянские кони: программа, запущенная от имени владельца, может получить доступ ко всем объектам, к которым владелец имеет доступ, и передать их третьим лицам.
- Сложность аудита: при большом количестве объектов и субъектов отследить, кто и какие права предоставил, становится трудоёмко.
- Неэффективность для больших систем: в крупных организациях с тысячами пользователей и объектов дискреционное управление доступом становится трудноуправляемым.
Сравнение с другими моделями
| Характеристика | Дискреционное (DAC) | Мандатное (MAC) | Ролевое (RBAC) |
|---|---|---|---|
| Кто управляет правами | Владелец объекта | Централизованная политика | Администратор на основе ролей |
| Гибкость | Высокая | Низкая | Средняя |
| Безопасность | Низкая (зависит от владельца) | Высокая (строгая политика) | Средняя (зависит от назначения ролей) |
| Сложность администрирования | Низкая | Высокая | Средняя |
| Применение | Персональные компьютеры, малые сети | Государственные, военные системы | Корпоративные системы, ERP |
Критика
Дискреционное управление доступом подвергается критике за недостаточную защиту от внутренних угроз и вредоносного ПО. В 1970-х годах был описан класс атак «троянский конь», при которых программа, запущенная от имени владельца, может копировать защищённые данные в общедоступный объект. Это привело к разработке мандатного управления доступом, которое предотвращает такие атаки за счёт жёсткой политики, не зависящей от воли владельца.
В современных информационных системах дискреционное управление доступом часто комбинируется с другими моделями. Например, в операционной системе Linux используется DAC для базового управления файлами, а для дополнительной защиты применяются модули безопасности (SELinux, AppArmor), реализующие мандатное управление доступом. В корпоративных средах дискреционное управление доступом часто дополняется ролевым управлением доступом (RBAC) для упрощения администрирования.
Интересные факты
- В 1988 году червь Морриса использовал уязвимости дискреционного управления доступом в UNIX, распространяясь через утилиту
sendmailи используя слабые пароли. - В операционной системе Windows Vista (2007) была введена технология Mandatory Integrity Control (MIC), которая добавляет элементы мандатного управления доступом поверх дискреционного, чтобы ограничить возможности вредоносного ПО.
- В файловой системе ZFS (2005) реализована гибридная модель: дискреционное управление доступом с ACL, но с возможностью включения мандатного контроля через политики.
- В 2019 году в Linux-ядре была добавлена поддержка файловых систем с дискреционным управлением доступом для контейнеров Docker, что позволило изолировать процессы по умолчанию.
Источники
- Bell, D. E., & LaPadula, L. J. (1973). Secure Computer Systems: A Mathematical Model. MITRE Corporation.
- Таненбаум, Э., Бос, Х. (2015). Современные операционные системы. 4-е изд. — СПб.: Питер.
- Russinovich, M., Solomon, D., Ionescu, A. (2012). Windows Internals, Part 1. 6th ed. — Microsoft Press.
- Sandhu, R., & Samarati, P. (1994). Access Control: Principles and Practice. IEEE Communications Magazine, 32(9), 40-48.
- Trusted Computer System Evaluation Criteria (TCSEC). (1985). Department of Defense, USA.
- ГОСТ Р 50922-2006. Защита информации. Основные термины и определения.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →