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