ACL
ACL (от англ. Access Control List — список управления доступом) — это механизм, используемый в компьютерных системах, сетевом оборудовании и операционных системах для разграничения прав доступа субъектов (пользователей, процессов, устройств) к объектам (файлам, каталогам, сетевым интерфейсам, портам). ACL представляет собой упорядоченный набор правил (записей), каждое из которых определяет, разрешить или запретить определённое действие (например, чтение, запись, выполнение, подключение) для конкретного субъекта или группы субъектов.
История
Концепция списков управления доступом возникла в 1970-х годах в рамках развития систем защиты операционных систем. Одной из первых реализаций ACL стала система Multics, разработанная в Массачусетском технологическом институте (MIT). В Multics каждый файл и каталог имел ассоциированный ACL, который позволял гибко настраивать права для отдельных пользователей, а не только для владельца, группы и всех остальных, как в более простых моделях (например, в Unix).
В 1980-х годах механизмы ACL были внедрены в операционные системы семейства Unix (включая POSIX-совместимые системы) и в протоколы сетевого управления, такие как IP-фильтрация в маршрутизаторах. В 1990-х годах с развитием Windows NT компания Microsoft (организация признана нежелательной в РФ) включила ACL в свою модель безопасности, основанную на NTFS. С тех пор ACL стали стандартным компонентом современных ОС (Linux, FreeBSD, macOS, Windows) и сетевого оборудования (Cisco, Juniper, MikroTik).
Классификация ACL
ACL делятся на несколько типов в зависимости от области применения:
По типу субъектов и объектов
- Файловые ACL — применяются к файлам и каталогам в файловой системе. Определяют, какие пользователи или группы могут читать, записывать, выполнять или изменять атрибуты объекта.
- Сетевые ACL — применяются к сетевым интерфейсам (маршрутизаторам, межсетевым экранам). Фильтруют трафик на основе IP-адресов, портов, протоколов (TCP, UDP, ICMP) и других параметров.
- ACL баз данных — используются в СУБД (например, Oracle, PostgreSQL) для ограничения доступа к таблицам, представлениям, хранимым процедурам.
По способу задания правил
- Дискреционные ACL (DACL) — каждый объект имеет владельца, который может изменять ACL. Правила задаются явно для каждого субъекта или группы. Это наиболее распространённый тип.
- Мандатные ACL (MACL) — правила задаются системным администратором и не могут быть изменены владельцем объекта. Используются в системах с высокими требованиями безопасности (например, в военных или правительственных системах).
- Ролевые ACL (RBAC) — доступ предоставляется на основе ролей (например, «администратор», «оператор», «читатель»), а не конкретных пользователей. Роли задаются в ACL.
По порядку обработки
- Стандартные ACL — обрабатываются последовательно сверху вниз. Первое совпадение правила определяет решение (разрешить или запретить). Если ни одно правило не подходит, применяется неявное запрещающее правило (deny all).
- Расширенные ACL — позволяют задавать более сложные условия, включая временные интервалы, состояние соединения (established), тип протокола и другие параметры.
Устройство и характеристики
Структура записи ACL
Каждая запись ACL (ACE — Access Control Entry) содержит:
- Идентификатор субъекта (SID в Windows, UID/GID в Unix, IP-адрес в сетевых ACL).
- Тип доступа (разрешить или запретить).
- Права доступа (чтение, запись, выполнение, удаление, изменение атрибутов и т.д.).
- Флаги наследования (для файловых ACL) — указывают, распространяется ли правило на вложенные объекты (подкаталоги, файлы).
Порядок применения
В большинстве систем ACL обрабатываются по принципу «первое совпадение»: система просматривает записи в порядке их расположения и применяет первое подходящее правило. Если правило явно разрешает доступ, доступ предоставляется; если явно запрещает — запрещается. Если ни одно правило не подходит, по умолчанию доступ запрещается (принцип минимальных привилегий).
Наследование в файловых ACL
В файловых системах (например, NTFS, ext4 с поддержкой ACL) правила могут наследоваться от родительского каталога к дочерним объектам. Это упрощает администрирование: достаточно задать ACL на корневом каталоге, и все вложенные файлы и папки унаследуют эти правила, если не заданы явные исключения.
Применение
В операционных системах
- Windows (NTFS) — ACL используются для защиты файлов, папок, реестра, принтеров и других объектов. Каждый объект имеет дескриптор безопасности, содержащий DACL и SACL (системный ACL для аудита).
- Linux (POSIX ACL) — реализованы в файловых системах ext2/ext3/ext4, XFS, Btrfs. Позволяют задавать права для дополнительных пользователей и групп, выходя за рамки классической триады (владелец, группа, остальные).
- macOS (HFS+, APFS) — поддерживают ACL, совместимые с POSIX, с расширениями от Apple.
В сетевом оборудовании
- Маршрутизаторы Cisco — ACL применяются для фильтрации трафика на интерфейсах, ограничения доступа к сетевым ресурсам, реализации политик безопасности (например, запрет доступа из внешней сети к внутренним серверам).
- Межсетевые экраны — ACL являются основой для правил фильтрации пакетов (stateful inspection). Например, в iptables (Linux) или pf (FreeBSD).
- Беспроводные точки доступа — ACL по MAC-адресам позволяют разрешить или запретить подключение конкретных устройств.
В базах данных
- Oracle — ACL используются для управления доступом к сетевым ресурсам (например, к внешним веб-сервисам) и к объектам базы данных.
- PostgreSQL — ACL задаются через команды GRANT и REVOKE, которые модифицируют системные таблицы pg_class и pg_namespace.
Примеры
Пример файлового ACL (Linux)
`` user::rw- user:john:rwx group::r-- group:developers:rwx mask::rwx other::--- `` В этом примере:
- Владелец имеет права на чтение и запись (rw-).
- Пользователь john имеет полные права (rwx).
- Группа «developers» имеет полные права (rwx), но маска ограничивает их до rwx.
- Остальные пользователи не имеют доступа (---).
Пример сетевого ACL (Cisco)
`` access-list 100 permit tcp 192.168.1.0 0.0.0.255 any eq 80 access-list 100 deny ip any any `` Этот ACL разрешает HTTP-трафик (порт 80) из сети 192.168.1.0/24 на любой адрес, а весь остальной трафик запрещает.
Критика и ограничения
Несмотря на широкое распространение, ACL имеют ряд недостатков:
- Сложность управления — при большом количестве объектов и субъектов ACL становятся громоздкими и трудночитаемыми. Ошибки в порядке правил могут привести к уязвимостям.
- Проблема масштабирования — в распределённых системах (например, в облачных хранилищах) поддержка ACL для миллионов объектов требует значительных ресурсов.
- Отсутствие контекстной информации — ACL не учитывают динамические факторы (время суток, местоположение пользователя, состояние системы), что делает их менее гибкими по сравнению с современными моделями (например, атрибутивный контроль доступа — ABAC).
- Наследование — неправильная настройка наследования может привести к непреднамеренному раскрытию данных (например, если ACL на корневом каталоге разрешает доступ, а на вложенном файле — нет, но наследование переопределяет правило).
Альтернативы
В современных системах всё чаще используются более гибкие модели управления доступом:
- RBAC (Role-Based Access Control) — доступ определяется ролями, а не отдельными пользователями. Упрощает администрирование в крупных организациях.
- ABAC (Attribute-Based Access Control) — доступ вычисляется на основе атрибутов субъекта, объекта, среды и действий. Позволяет реализовать сложные политики (например, «разрешить чтение только в рабочее время»).
- PBAC (Policy-Based Access Control) — использует централизованные политики, часто реализуемые через XACML (eXtensible Access Control Markup Language).
Тем не менее, ACL остаются базовым механизмом для большинства операционных систем и сетевых устройств благодаря своей простоте и прозрачности.
Источники
- Таненбаум Э., Бос Х. Современные операционные системы. 4-е изд. — СПб.: Питер, 2015.
- Столлингс У. Операционные системы: внутренняя структура и принципы проектирования. 9-е изд. — М.: Вильямс, 2020.
- Документация Microsoft по безопасности Windows (NTFS ACL).
- POSIX.1e — стандарт для ACL в Unix-подобных системах (черновик).
- Cisco IOS Access Control Lists: Configuration Guide.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →