Список управления доступом
Список управления доступом (англ. Access Control List, ACL) — это механизм, применяемый в компьютерных системах и сетевом оборудовании, который определяет, какие субъекты (пользователи, процессы, устройства) и каким образом могут взаимодействовать с определёнными объектами (файлами, каталогами, сетевыми портами, сервисами). ACL представляет собой упорядоченный перечень правил (записей), каждое из которых содержит информацию о субъекте, типе разрешённого или запрещённого действия и, при необходимости, дополнительные условия (например, время доступа или IP-адрес). Данный подход является одной из базовых моделей управления доступом наряду с мандатной и ролевой моделями.
История и развитие
Концепция списков управления доступом возникла в 1970-х годах в рамках исследований в области операционных систем. Первоначально она была реализована в системе Multics, разработанной Массачусетским технологическим институтом (MIT), General Electric и Bell Labs. В Multics ACL позволяли гибко настраивать права доступа для каждого файла, в отличие от более простой модели, используемой в Unix, где права задавались тремя категориями (владелец, группа, остальные).
В 1980-х годах механизм ACL был адаптирован для файловых систем операционных систем семейства Unix (например, в версиях от Sun Microsystems). Широкое распространение в сетевых технологиях ACL получили благодаря разработке протоколов управления доступом к сетям, в частности, в маршрутизаторах и коммутаторах Cisco Systems.
С развитием облачных вычислений и виртуализации ACL стали применяться для управления доступом к виртуальным машинам, контейнерам и объектным хранилищам (например, Amazon S3). В современных операционных системах (Windows NT, Linux с поддержкой POSIX ACL, FreeBSD) ACL поддерживаются на уровне файловых систем, что позволяет задавать права для большого числа пользователей и групп.
Классификация и виды
Списки управления доступом классифицируются по нескольким критериям: по сфере применения, по типу объектов и по способу обработки правил.
По сфере применения
- Файловые ACL — применяются в операционных системах для управления доступом к файлам и каталогам. Каждый объект файловой системы может содержать список разрешений для отдельных пользователей или групп.
- Сетевые ACL — используются в маршрутизаторах, межсетевых экранах (файрволах) и коммутаторах для фильтрации сетевого трафика. Правила могут основываться на IP-адресах источника и назначения, портах, протоколах (TCP, UDP, ICMP) и других параметрах.
- ACL для облачных сервисов — применяются в платформах типа Amazon Web Services (AWS), Microsoft Azure и Google Cloud для управления доступом к ресурсам (виртуальные машины, хранилища, базы данных). Например, в AWS S3 ACL определяют, кто может читать, записывать или удалять объекты в корзине.
- ACL для баз данных — используются в системах управления базами данных (СУБД) для ограничения доступа к таблицам, представлениям или хранимым процедурам.
По типу объектов
- Дискреционные ACL — основаны на модели дискреционного управления доступом (DAC), где владелец объекта может самостоятельно назначать права другим субъектам. Пример — ACL в файловых системах Windows NTFS.
- Мандатные ACL — реализуют мандатную модель (MAC), где права задаются централизованно на основе меток безопасности, и владелец не может их изменять. Используются в системах с высокими требованиями к безопасности (например, в военных или государственных информационных системах).
По способу обработки правил
- Статические ACL — правила задаются администратором заранее и не изменяются динамически. Применяются в большинстве сетевых устройств.
- Динамические ACL — правила могут изменяться в зависимости от состояния системы, времени суток или действий пользователя. Например, в межсетевых экранах с состоянием (stateful firewalls) правила могут временно разрешать прохождение пакетов, связанных с уже установленным соединением.
Устройство и принцип работы
ACL представляет собой упорядоченный список записей (правил), каждая из которых содержит следующие поля:
- Идентификатор субъекта — имя пользователя, идентификатор группы, IP-адрес, MAC-адрес или другой уникальный идентификатор.
- Тип действия — разрешить (allow/permit) или запретить (deny).
- Объект доступа — путь к файлу, номер порта, URL, имя таблицы в базе данных.
- Дополнительные условия — диапазон IP-адресов, время суток, протокол, флаги пакетов (например, SYN, ACK).
При попытке субъекта выполнить действие над объектом система последовательно перебирает правила ACL сверху вниз. Как только находится правило, соответствующее субъекту и объекту, выполняется указанное в нём действие (разрешение или запрет). Если ни одно правило не подходит, применяется действие по умолчанию (обычно запрет — принцип «всё, что не разрешено, запрещено»).
Пример файлового ACL (Linux)
В операционной системе Linux с поддержкой POSIX ACL права доступа к файлу могут выглядеть следующим образом:
`` user::rw- user:ivan:rwx group::r-- group:developers:rwx mask::rwx other::--- ``
Здесь:
user::rw-— владелец файла имеет права на чтение и запись.user:ivan:rwx— пользователь Иван имеет полные права (чтение, запись, выполнение).group::r--— группа-владелец имеет только право на чтение.group:developers:rwx— группа «developers» имеет полные права.mask::rwx— максимальные права, которые могут быть предоставлены любым субъектам, кроме владельца.other::---— все остальные не имеют никаких прав.
Пример сетевого ACL (Cisco IOS)
В маршрутизаторах Cisco ACL для фильтрации трафика может выглядеть так:
`` access-list 100 permit tcp 192.168.1.0 0.0.0.255 any eq 80 access-list 100 deny ip any any ``
Первое правило разрешает прохождение TCP-пакетов из сети 192.168.1.0/24 к любому адресу назначения на порт 80 (HTTP). Второе правило запрещает весь остальной трафик.
Применение
В операционных системах
ACL используются в файловых системах для тонкой настройки прав доступа. Например, в Windows NTFS ACL позволяют администратору задать индивидуальные разрешения для каждого пользователя или группы, включая такие действия, как чтение, запись, выполнение, изменение атрибутов, удаление и смена владельца. В Linux ACL расширяют стандартную модель прав Unix, позволяя назначать права более чем одной группе или пользователю.
В сетевой безопасности
Сетевые ACL являются ключевым элементом межсетевых экранов и маршрутизаторов. Они используются для:
- Фильтрации входящего и исходящего трафика.
- Ограничения доступа к определённым сервисам (например, блокировка SSH-доступа из внешних сетей).
- Реализации политик безопасности на периметре сети.
- Сегментации сети (например, запрет трафика между отделами).
В облачных вычислениях
В облачных платформах ACL применяются для управления доступом к объектным хранилищам (например, Amazon S3), виртуальным частным облакам (VPC) и сетевым интерфейсам. Например, в AWS ACL для VPC (Network ACL) работают на уровне подсети и позволяют разрешать или запрещать трафик по IP-адресам, портам и протоколам.
В базах данных
В СУБД, таких как PostgreSQL и Oracle, ACL используются для управления доступом к объектам схемы (таблицам, представлениям, функциям). Каждому объекту может быть назначен список прав для конкретных пользователей или ролей.
Преимущества и недостатки
Преимущества
- Гибкость — возможность задавать индивидуальные права для каждого субъекта и объекта.
- Детализация — поддержка множества типов действий и условий.
- Совместимость — ACL поддерживаются большинством современных операционных систем и сетевых устройств.
Недостатки
- Сложность управления — при большом количестве объектов и субъектов ACL становятся трудночитаемыми и подвержены ошибкам.
- Производительность — последовательный перебор правил может замедлять работу системы, особенно при длинных списках.
- Отсутствие централизованного контроля — в дискреционных моделях владельцы объектов могут назначать права, что затрудняет аудит и обеспечение единой политики безопасности.
Критика и альтернативы
Критики ACL указывают на их ограниченность в крупных распределённых системах. Альтернативными подходами являются:
- Ролевое управление доступом (RBAC) — права назначаются не индивидуально, а через роли, что упрощает администрирование.
- Атрибутное управление доступом (ABAC) — доступ определяется на основе атрибутов субъекта, объекта и окружения (например, время, местоположение).
- Мандатное управление доступом (MAC) — используется в системах с высокими требованиями к безопасности.
Тем не менее, ACL остаются востребованными благодаря своей простоте и прозрачности, особенно в небольших и средних системах.
Источники
- Операционные системы: концепции и принципы. Уильям Столлингс, 2018.
- Компьютерные сети. Эндрю Таненбаум, Дэвид Уэзеролл, 2016.
- Документация Microsoft Windows Server: ACL и разрешения NTFS.
- Документация Cisco IOS: конфигурация списков управления доступом.
- POSIX.1e — стандарт для ACL в Unix-подобных системах.
- Amazon Web Services: документация по ACL для S3 и VPC.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →