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

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 в определённом порядке. Обычно применяется следующий алгоритм:

  1. Проверка явных запретов: если субъект указан в записи с запретом, доступ немедленно отклоняется.
  2. Проверка явных разрешений: если субъект указан в записи с разрешением, доступ предоставляется.
  3. Если субъект не найден в 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 →