Открыть сервис

Список управления доступом

Список управления доступом (англ. 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 →