Access Control List
Access Control List (список управления доступом, ACL) — это набор правил, определяющих, какие субъекты (пользователи, процессы, устройства) и каким образом могут получать доступ к определённым объектам (файлам, сетевым ресурсам, системным функциям). ACL является одним из основных механизмов разграничения доступа в информационных системах, наряду с мандатным и ролевым управлением.
История
Идея списков управления доступом возникла в 1960-х годах в рамках развития многопользовательских операционных систем. Первые реализации ACL появились в операционной системе Multics (1965), где каждый файл имел список пользователей с указанием прав на чтение, запись и выполнение. В 1970-х годах концепция была развита в операционной системе UNIX, где использовалась упрощённая модель с тремя категориями субъектов (владелец, группа, остальные) и тремя правами (чтение, запись, выполнение).
С развитием компьютерных сетей в 1980-х годах ACL стали применяться для управления доступом к сетевым ресурсам. В 1990-х годах корпорация Microsoft внедрила ACL в операционную систему Windows NT, где они стали основой для разграничения доступа к файлам, реестру и другим объектам. Впоследствии ACL были стандартизированы в рамках протоколов сетевого управления (например, в IEEE 802.1X) и систем управления доступом к данным.
Классификация
По типу объектов управления
- Файловые ACL — определяют права доступа к файлам и каталогам в файловых системах. Примеры: NTFS ACL в Windows, POSIX ACL в Linux.
- Сетевые ACL — управляют доступом к сетевым ресурсам (портам, IP-адресам, протоколам). Примеры: ACL на маршрутизаторах Cisco, ACL в брандмауэрах.
- Системные ACL — регулируют доступ к системным объектам (реестру, процессам, службам). Примеры: ACL в реестре Windows, ACL в системе безопасности SELinux.
По способу определения прав
- Дискреционные ACL — права назначаются владельцем объекта произвольно. Владелец может добавлять, удалять или изменять записи для любого субъекта. Этот тип наиболее распространён в современных операционных системах.
- Мандатные ACL — права определяются на основе меток безопасности (например, уровней секретности) и не могут быть изменены владельцем. Используются в системах с высокими требованиями к безопасности (военные, правительственные).
По структуре
- Простой ACL — содержит только одну запись для каждого субъекта. Пример: стандартный ACL в UNIX.
- Расширенный ACL — позволяет задавать сложные условия, включая маски, наследование прав и множественные записи для одного субъекта. Пример: NTFS ACL в Windows.
Устройство и характеристики
Структура записи ACL
Каждая запись (ACE — Access Control Entry) в ACL содержит следующие поля:
- Субъект — идентификатор пользователя, группы, процесса или устройства.
- Тип доступа — разрешение или запрет на выполнение определённого действия.
- Права — конкретные операции (чтение, запись, выполнение, удаление, изменение атрибутов и т.д.).
- Флаги — дополнительные параметры (например, наследование прав для дочерних объектов).
Порядок обработки ACL
При проверке доступа система последовательно просматривает записи ACL в определённом порядке. Обычно применяется следующий алгоритм:
- Проверка явных запретов: если субъект указан в записи с запретом, доступ немедленно отклоняется.
- Проверка явных разрешений: если субъект указан в записи с разрешением, доступ предоставляется.
- Если субъект не найден в ACL, доступ отклоняется по умолчанию (принцип «всё, что не разрешено, запрещено»).
Наследование прав
В иерархических структурах (например, файловых системах) ACL могут поддерживать наследование прав. Это означает, что права, заданные для родительского объекта (каталога), автоматически применяются к дочерним объектам (файлам и подкаталогам). Наследование может быть отключено для отдельных объектов.
Применение
Операционные системы
В операционных системах ACL используются для управления доступом к файлам, каталогам, реестру, процессам и другим объектам. В Windows NTFS ACL поддерживают до 32 различных прав, включая чтение, запись, выполнение, удаление, изменение разрешений и смену владельца. В Linux POSIX ACL позволяют задавать права для конкретных пользователей и групп, а также устанавливать маски прав.
Сетевые устройства
На маршрутизаторах и коммутаторах ACL применяются для фильтрации трафика. Например, в оборудовании Cisco ACL могут блокировать или разрешать пакеты на основе IP-адресов, портов, протоколов и времени суток. Стандартные ACL работают только с IP-адресами, а расширенные — с дополнительными параметрами (порты, протоколы, флаги TCP).
Базы данных
В системах управления базами данных (СУБД) ACL определяют права доступа к таблицам, представлениям, хранимым процедурам и другим объектам. Например, в Microsoft SQL Server ACL задаются через команды GRANT, DENY и REVOKE.
Веб-приложения
В веб-приложениях ACL используются для разграничения доступа к страницам, API-эндпоинтам и другим ресурсам. Например, в фреймворке Django ACL реализованы через систему разрешений и групп.
Примеры
Пример ACL в Windows NTFS
Для файла report.docx может быть задан следующий ACL:
| Субъект | Тип доступа | Права |
|---|---|---|
| Пользователь Иванов | Разрешить | Чтение, запись |
| Группа «Бухгалтерия» | Разрешить | Чтение |
| Пользователь Петров | Запретить | Чтение |
В этом случае Иванов может читать и редактировать файл, члены группы «Бухгалтерия» — только читать, а Петров не имеет доступа, несмотря на возможное членство в группе «Бухгалтерия» (запрет имеет приоритет).
Пример ACL на маршрутизаторе Cisco
ACL, блокирующий входящий трафик с IP-адреса 192.168.1.100:
`` access-list 100 deny ip host 192.168.1.100 any access-list 100 permit ip any any ``
Первая запись запрещает весь трафик от указанного хоста, вторая — разрешает весь остальной трафик.
Критика
ACL имеют ряд недостатков, которые ограничивают их применение в современных системах:
- Сложность управления — при большом количестве субъектов и объектов ACL становятся громоздкими и трудно поддерживаемыми.
- Отсутствие контекстной адаптации — ACL не учитывают динамические факторы (время, местоположение, поведение пользователя).
- Уязвимость к ошибкам — неправильная настройка ACL может привести к утечке данных или блокировке легитимного доступа.
- Неэффективность для больших систем — в распределённых системах с тысячами пользователей ACL требуют значительных ресурсов для хранения и обработки.
Для преодоления этих ограничений применяются более современные модели управления доступом, такие как ролевое управление доступом (RBAC) и атрибутивное управление доступом (ABAC).
Источники
- Таненбаум Э., Бос Х. «Современные операционные системы». — 4-е изд. — СПб.: Питер, 2015.
- Столлингс У. «Основы безопасности сетей: приложения и стандарты». — М.: Вильямс, 2014.
- Документация Microsoft по управлению доступом в Windows (Windows Security documentation).
- Документация Cisco по спискам управления доступом (Cisco ACL Configuration Guide).
- Стандарт POSIX 1003.1e — Draft Standard for Information Technology — Portable Operating System Interface (POSIX) — Security Extensions.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →