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

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

Список контроля доступа (англ. Access Control List, ACL) — это механизм, применяемый в компьютерных системах, телекоммуникационных сетях и системах управления базами данных, который определяет, какие субъекты (пользователи, процессы, устройства) и каким образом могут получать доступ к определённым объектам (файлам, каталогам, сетевым портам, записям в базе данных). ACL представляет собой упорядоченный набор правил (записей), каждое из которых связывает субъект с набором разрешённых или запрещённых операций.

История

Концепция списков контроля доступа возникла в 1970-х годах в рамках развития многопользовательских операционных систем. Одной из первых реализаций стала система Multics, где ACL применялись для разграничения доступа к файлам. В 1983 году в операционной системе MS-DOS (версия 3.0) появилась базовая поддержка атрибутов файлов, но полноценные ACL были внедрены лишь в Windows NT (1993 год). В мире Unix-подобных систем стандартные права доступа (чтение, запись, выполнение для владельца, группы и остальных) были дополнены механизмом ACL в стандарте POSIX.1e (1997 год), хотя этот стандарт так и не был полностью принят, но его идеи реализованы в большинстве современных дистрибутивов Linux (через утилиты setfacl и getfacl).

В сетевых технологиях ACL стали неотъемлемой частью маршрутизаторов и межсетевых экранов. Первые коммерческие реализации появились в оборудовании Cisco Systems в конце 1980-х годов (протокол IP, затем расширенные ACL для TCP/UDP).

Классификация

По типу объекта управления

По способу задания правил

По направлению обработки (сетевые ACL)

Устройство и принцип работы

Каждая запись ACL содержит следующие элементы:

  1. Идентификатор субъекта — имя пользователя, UID (идентификатор пользователя), IP-адрес, MAC-адрес, имя группы.
  2. Тип доступа — разрешение (permit) или запрет (deny).
  3. Объект доступа — файл, каталог, порт, протокол, диапазон адресов.
  4. Права — конкретные операции (чтение, запись, выполнение, отправка пакетов, соединение).

При попытке доступа система последовательно просматривает записи ACL в порядке их следования. Если найдено правило, соответствующее субъекту и объекту, применяется указанное в нём действие (разрешение или запрет). Если ни одно правило не подходит, применяется действие по умолчанию (обычно запрет, в сетевых ACL — «deny all»).

Пример файлового ACL в Linux

`` user::rw- user:john:r-- group::r-- mask::r-- other::--- `` Здесь владелец имеет права на чтение и запись, пользователь john — только на чтение, группа — на чтение, остальные — без доступа.

Пример сетевого 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 `` Это правило разрешает трафик из подсети 192.168.1.0/24 к любому адресу на порт 80 (HTTP), все остальные пакеты запрещаются.

Применение

Операционные системы

Сетевые устройства

Базы данных

Облачные сервисы и виртуализация

Преимущества и недостатки

Преимущества

Недостатки

Критика и альтернативы

Списки контроля доступа критикуются за неэффективность в крупных распределённых системах. Вместо них в современных средах часто применяются:

Тем не менее, ACL остаются базовым механизмом для большинства файловых систем и сетевых устройств благодаря своей простоте и прозрачности.

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →