В компьютерной безопасности список контроля доступа ( ACL ) — это список разрешений [a] , связанных с системным ресурсом (объектом или средством). ACL определяет, каким пользователям или системным процессам предоставляется доступ к ресурсам, а также какие операции разрешены с данными ресурсами. [1] Каждая запись в типичном ACL определяет субъект и операцию. Например,
Многие виды операционных систем реализуют ACL или имеют историческую реализацию; первая реализация списков ACL была в файловой системе Multics в 1965 году. [ 2]
ACL файловой системы — это структура данных (обычно таблица), содержащая записи, которые определяют права отдельного пользователя или группы на определенные системные объекты, такие как программы, процессы или файлы. Эти записи известны как записи контроля доступа (ACE) в Microsoft Windows NT , [3] OpenVMS и Unix-подобных операционных системах , таких как Linux , macOS и Solaris . Каждый доступный объект содержит идентификатор своего ACL. Привилегии или разрешения определяют конкретные права доступа, например, может ли пользователь читать, записывать или выполнять объект. В некоторых реализациях ACE может контролировать, может ли пользователь или группа пользователей изменять ACL для объекта.
Одной из первых операционных систем, предоставивших ACL файловой системы, была Multics . PRIMOS использовал ACL как минимум еще в 1984 году. [4]
В 1990-е годы модели ACL и RBAC тщательно тестировались [ кем? ] и используется для администрирования прав доступа к файлам.
Рабочая группа POSIX 1003.1e/1003.2c предприняла попытку стандартизировать списки ACL, в результате чего появилось то, что теперь известно как «POSIX.1e ACL» или просто «POSIX ACL». [5] Черновики POSIX.1e/POSIX.2c были отозваны в 1997 году из-за того, что участники потеряли интерес к финансированию проекта и обратились к более мощным альтернативам, таким как NFSv4 ACL. [6] По состоянию на декабрь 2019 года [обновлять]в Интернете не удалось найти живые исходники проекта, но его все еще можно найти в Интернет-архиве . [7]
Большинство Unix и Unix-подобных операционных систем (например, Linux с 2.5.46 или ноября 2002 года, [8] FreeBSD или Solaris ) поддерживают списки ACL POSIX.1e (не обязательно черновик 17). В этих системах списки ACL обычно хранятся в расширенных атрибутах файла.
ACL NFSv4 гораздо мощнее черновых ACL POSIX. В отличие от проектов списков ACL POSIX, списки ACL NFSv4 определяются фактически опубликованным стандартом как часть сетевой файловой системы .
ACL NFSv4 поддерживаются многими Unix и Unix-подобными операционными системами. Примеры включают AIX , FreeBSD , [9] Mac OS X , начиная с версии 10.4 (« Tiger »), или Solaris с файловой системой ZFS , [10] поддерживают списки ACL NFSv4 , которые являются частью стандарта NFSv4. Существует две экспериментальные реализации списков ACL NFSv4 для Linux: поддержка списков ACL NFSv4 для файловой системы Ext3 [11] и более поздняя версия Richacls , которая обеспечивает поддержку списков ACL NFSv4 для файловой системы Ext4 . [12] Как и списки ACL POSIX, списки ACL NFSv4 обычно хранятся в виде расширенных атрибутов в Unix-подобных системах.
Списки ACL NFSv4 организованы почти идентично спискам ACL Windows NT, используемым в NTFS . [13] Списки ACL NFSv4.1 представляют собой расширенный набор списков ACL NT и черновых версий ACL POSIX. [14] Samba поддерживает сохранение списков ACL NT для файлов, совместно используемых по SMB, разными способами, один из которых — в виде списков ACL в кодировке NFSv4. [15]
Служба Active Directory от Microsoft реализует сервер LDAP , который хранит и распространяет информацию о конфигурации пользователей и компьютеров в домене. [16] Active Directory расширяет спецификацию LDAP, добавляя тот же тип механизма списков управления доступом, который Windows NT использует для файловой системы NTFS. Затем Windows 2000 расширила синтаксис записей управления доступом, чтобы они могли не только предоставлять или запрещать доступ ко всем объектам LDAP, но также и к отдельным атрибутам внутри этих объектов. [17]
На некоторых типах проприетарного компьютерного оборудования (в частности, маршрутизаторах и коммутаторах ) список контроля доступа содержит правила, которые применяются к номерам портов или IP-адресам , доступным на узле или другом уровне 3 , каждый из которых содержит список узлов и /или сети, которым разрешено использовать услугу. Хотя дополнительно можно настроить списки контроля доступа на основе имен сетевых доменов , это сомнительная идея, поскольку отдельные заголовки TCP , UDP и ICMP не содержат имен доменов. Следовательно, устройство, реализующее список управления доступом, должно отдельно преобразовывать имена в числовые адреса. Это представляет собой дополнительную поверхность атаки для злоумышленника, который пытается поставить под угрозу безопасность системы, которую защищает список контроля доступа. Как отдельные серверы , так и маршрутизаторы могут иметь сетевые списки управления доступом. Списки контроля доступа обычно можно настроить для управления как входящим, так и исходящим трафиком, и в этом контексте они аналогичны брандмауэрам . Как и межсетевые экраны, списки ACL могут подпадать под действие правил и стандартов безопасности, таких как PCI DSS .
Алгоритмы ACL были портированы на SQL и системы реляционных баз данных . Многие «современные» (2000-е и 2010-е годы) системы на базе SQL , такие как системы планирования ресурсов предприятия и системы управления контентом , использовали модели ACL в своих модулях администрирования.
Основной альтернативой модели ACL является модель управления доступом на основе ролей (RBAC). «Минимальную модель RBAC», RBACm , можно сравнить с механизмом ACL, ACLg , где в качестве записей в ACL разрешены только группы. Баркли (1997) [18] показал, что RBACm и ACLg эквивалентны.
В современных реализациях SQL списки ACL также управляют группами и наследованием в иерархии групп. Таким образом, «современные ACL» могут выражать все, что выражает RBAC, и являются особенно мощными (по сравнению со «старыми ACL») в своей способности выражать политику контроля доступа с точки зрения того, как администраторы рассматривают организации.
Для обмена данными и для «сравнений высокого уровня» данные ACL можно преобразовать в XACML . [19]
В новой версии Gnet-II (версия 3.0) добавлен механизм безопасности линии, реализованный в подсистеме Primos ACL.
Функции EA (расширенные атрибуты) и ACL (списки управления доступом) теперь доступны для файловых систем ext3. Кроме того, для NFS доступна функциональность ACL.