Базовый контроль доступа
Базовый контроль доступа — это фундаментальный механизм информационной безопасности, определяющий правила, по которым субъекты (пользователи, процессы, устройства) получают доступ к объектам (файлам, базам данных, сетевым ресурсам, аппаратным компонентам) в вычислительной системе. Основная цель базового контроля доступа — предотвращение несанкционированного использования ресурсов, обеспечение конфиденциальности, целостности и доступности данных. В отличие от более сложных моделей (например, мандатного или ролевого управления доступом), базовый контроль доступа обычно реализует простые иерархические или дискреционные правила, часто основанные на идентификаторах субъекта и объекта.
История
Концепция контроля доступа возникла вместе с первыми многопользовательскими компьютерными системами в 1960-х годах. В операционной системе Multics (1965) впервые были реализованы механизмы, позволяющие разграничивать права пользователей на чтение, запись и выполнение файлов. В 1970-х годах модель дискреционного управления доступом (DAC) была формализована в работах Дэвида Белла и Леонарда ЛаПадулы, а также в стандарте Министерства обороны США «Оранжевая книга» (TCSEC, 1983). В 1980-х годах для операционных систем семейства Unix (включая BSD и System V) был разработан стандартный набор прав доступа, основанный на трёх категориях: владелец, группа, остальные. Этот подход, дополненный списками контроля доступа (ACL), стал основой для большинства современных ОС общего назначения.
Основные понятия
Субъект и объект
- Субъект — активная сущность, инициирующая запрос на доступ (пользователь, процесс, программа).
- Объект — пассивная сущность, над которой выполняется операция (файл, каталог, устройство, сетевое соединение, запись в базе данных).
Операции доступа
Типовые операции включают:
- Чтение (read) — получение содержимого объекта.
- Запись (write) — изменение или создание объекта.
- Выполнение (execute) — запуск программы или скрипта.
- Удаление (delete) — уничтожение объекта.
- Изменение атрибутов (chmod, chown) — управление метаданными.
Идентификация и аутентификация
Перед предоставлением доступа система должна однозначно идентифицировать субъекта (например, по имени пользователя) и аутентифицировать его (проверить пароль, биометрические данные, сертификат). Без этого этапа контроль доступа невозможен.
Модели базового контроля доступа
Дискреционное управление доступом (DAC)
В модели DAC (Discretionary Access Control) владелец объекта самостоятельно определяет, кто и как может с ним работать. Права передаются по усмотрению владельца. Примеры:
- Права доступа в файловых системах Unix (rwx для владельца, группы, остальных).
- Списки ACL в Windows NTFS.
- Разрешения на уровне приложений (например, настройки приватности в социальных сетях).
Преимущество — гибкость. Недостаток — риск утечки данных, если владелец случайно или злонамеренно предоставит избыточные права.
Мандатное управление доступом (MAC)
В модели MAC (Mandatory Access Control) права назначаются централизованно на основе меток безопасности (например, «секретно», «совершенно секретно»). Субъект может получить доступ к объекту только если его уровень допуска не ниже метки объекта. Эта модель применяется в государственных и военных системах (например, в ОС SELinux (Security-Enhanced Linux) и FreeBSD с модулем MAC). Базовый контроль доступа в контексте MAC реализуется через жёсткие правила, не подлежащие изменению пользователем.
Ролевое управление доступом (RBAC)
В модели RBAC (Role-Based Access Control) права назначаются не отдельным пользователям, а ролям (например, «администратор», «бухгалтер», «гость»). Пользователь получает доступ, будучи назначенным на одну или несколько ролей. Эта модель широко используется в корпоративных системах (Microsoft Active Directory, Oracle Database). Базовый контроль доступа в RBAC упрощает администрирование за счёт группировки прав.
Реализация в операционных системах
Unix-подобные системы
В Linux и FreeBSD базовый контроль доступа основан на трёх категориях:
- Владелец (user) — создатель файла или каталога.
- Группа (group) — набор пользователей, объединённых общими правами.
- Остальные (others) — все прочие пользователи.
Каждой категории назначаются три бита: чтение (r), запись (w), выполнение (x). Для каталогов бит выполнения означает возможность входа в каталог и доступа к его содержимому. Дополнительно существуют специальные биты:
- SUID (Set User ID) — при запуске файла процесс получает права владельца файла.
- SGID (Set Group ID) — при запуске файла процесс получает права группы файла; для каталогов — новые файлы наследуют группу каталога.
- Sticky bit — только владелец файла может удалить или переименовать его в каталоге (используется в /tmp).
Windows NTFS
В файловой системе NTFS используется список контроля доступа (ACL), который состоит из записей (ACE), каждая из которых определяет разрешение или запрет для конкретного субъекта. Разрешения включают:
- Полный доступ (Full Control)
- Изменение (Modify)
- Чтение и выполнение (Read & Execute)
- Чтение (Read)
- Запись (Write)
ACL в Windows поддерживает наследование прав от родительских каталогов.
Применение
В операционных системах
Базовый контроль доступа является неотъемлемой частью ядра ОС. Он защищает системные файлы, конфигурации и процессы от несанкционированного изменения. Например, в Linux корневой каталог / обычно доступен только для чтения обычным пользователям, а /etc/passwd — только для чтения владельцем root.
В базах данных
Системы управления базами данных (СУБД), такие как PostgreSQL, MySQL, Oracle, реализуют контроль доступа на уровне таблиц, представлений и хранимых процедур. Пользователям назначаются привилегии (SELECT, INSERT, UPDATE, DELETE) с возможностью каскадной передачи прав (GRANT OPTION).
В веб-приложениях
Базовый контроль доступа на уровне приложений проверяет, имеет ли аутентифицированный пользователь право на выполнение определённого действия (например, редактирование статьи, просмотр административной панели). Часто реализуется через middleware (промежуточное ПО) в фреймворках (Django, Spring Security, ASP.NET Core).
В облачных сервисах
Провайдеры облачных услуг (AWS, Microsoft Azure, Яндекс.Облако) предоставляют инструменты для управления доступом к ресурсам: виртуальным машинам, хранилищам, сетям. Например, в AWS используется IAM (Identity and Access Management), где политики доступа определяют разрешения для пользователей, групп и ролей.
Критика и ограничения
Базовый контроль доступа, особенно в модели DAC, имеет ряд недостатков:
- Сложность управления — в больших системах с тысячами пользователей и объектов ручное назначение прав становится трудоёмким и подверженным ошибкам.
- Недостаточная защита от вредоносного кода — если пользователь с высокими привилегиями запускает вредоносную программу, она может получить доступ к его ресурсам.
- Отсутствие контекстной проверки — базовый контроль доступа не учитывает время, местоположение, состояние системы или историю действий субъекта.
- Уязвимость к атакам — например, атака «повышение привилегий» (privilege escalation) может быть выполнена через ошибки в реализации ACL или SUID-битов.
Для преодоления этих ограничений применяются более сложные модели, такие как контроль доступа на основе атрибутов (ABAC), где решение принимается на основе набора атрибутов субъекта, объекта и окружения, а также динамический контроль доступа (например, в системах Zero Trust).
Интересные факты
- В 1970-х годах в системе Multics была впервые реализована концепция «кольца защиты» (ring protection), где код выполнялся на разных уровнях привилегий (0 — ядро, 3 — пользователь). Эта идея позже была адаптирована в архитектуре x86.
- В операционной системе OpenVMS использовалась модель «идентификаторов» (UIC), где каждый пользователь имел числовой идентификатор, а права задавались в виде маски.
- В 2020 году в ядре Linux была обнаружена уязвимость CVE-2020-8835 в модуле bpf, позволяющая обойти контроль доступа и выполнить произвольный код с правами root.
Источники
- Bell, D. E., & LaPadula, L. J. (1976). Secure Computer System: Unified Exposition and Multics Interpretation. MITRE Corporation.
- Sandhu, R. S., Coyne, E. J., Feinstein, H. L., & Youman, C. E. (1996). Role-Based Access Control Models. IEEE Computer, 29(2), 38–47.
- «Linux man pages: chmod, chown, umask, setfacl» — документация ядра Linux.
- «Windows NTFS Security: ACLs and Permissions» — Microsoft Docs.
- «Оранжевая книга» (TCSEC, 1983) — Министерство обороны США.
- «SELinux: Security-Enhanced Linux» — проект National Security Agency (NSA).
- «IAM: Identity and Access Management» — документация Amazon Web Services.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →