ACL

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

Списки контроля доступа являются основой систем с избирательным управлением доступа (DAC).

Впервые введены в ОС Multics в 1965 году, с тех пор получили широкое распространение и множественные реализации практически во всех типах программ с распределяемым доступом.

Введение 
В типичных ACL каждая запись определяет субъект воздействия и операцию: например, запись (Vasya, delete) в ACL для файла XYZ даёт возможность пользователю Vasya удалить файл XYZ.

В системе с моделью безопасности, основанной на ACL, когда субъект запрашивает выполнение операции над объектом, система сначала проверяет список разрешённых для этого субъекта операций, и только после этого даёт (или не даёт) доступ к запрошенному действию.

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

При централизованном хранении списков контроля доступа можно говорить о матрице доступа, в которой по осям размещены объекты и субъекты, а в ячейках — соответствующие права. Однако в большом количестве систем списки контроля доступа к объектам хранятся отдельно для каждого объекта, зачастую — непосредственно с самим объектом.

Традиционные ACL системы назначают права индивидуальным пользователям, и со временем и ростом числа пользователей в системе списки доступа могут стать громоздкими. Вариантом решения этой проблемы является назначение прав группам пользователей, а не персонально. Другим вариантом решения этой проблемы является «Управление доступом на основе ролей», где функциональные подмножества прав к ряду объектов объединяются в «роли», и эти роли назначаются пользователям. Однако, в первом варианте группы пользователей также часто называются ролями.

Файловые системы с ACL 
В файловых системах для реализации ACL используется идентификатор пользователя процесса (UID в терминах POSIX).

Список доступа представляет собой структуру данных (обычно таблицу), содержащую записи, определяющие права индивидуального пользователя или группы на специальные системные объекты, такие как программы, процессы или файлы. Эти записи также известны как ACE () в операционных системах Microsoft Windows и OpenVMS. В операционной системе Linux и Mac OS X большинство файловых систем имеет расширенные атрибуты, выполняющие роль ACL. Каждый объект в системе содержит указатель на свой ACL. Привилегии (или полномочия) определяют специальные права доступа, разрешающие пользователю читать из (), писать в () или исполнять () объект. В некоторых реализациях ACE (Access Control Entries) могут определять право пользователя или группы на изменение ACL объекта.

Концепции ACL в разных операционных системах различаются, несмотря на существующий «стандарт» POSIX (проекты безопасности POSIX, .1e и .2c, были отозваны, когда стало ясно, что они затрагивают слишком обширную область и работа не может быть завершена, но хорошо проработанные части, определяющие ACL, были широко реализованы и известны как «POSIX ACLs»).

Сетевые ACL 
В сетях ACL представляют список правил, определяющих порты служб или имена доменов, доступных на узле или другом устройстве третьего уровня OSI, каждый со списком узлов и/или сетей, которым разрешен доступ к сервису. Сетевые ACL могут быть настроены как на обычном сервере, так и на маршрутизаторе и могут управлять как входящим, так и исходящим трафиком, в качестве межсетевого экрана.

См. также 
 Информационная безопасность

Ссылки 
 RSBAC Access Control Lists on Linux 
 Generic Access Control Lists for PHP/Perl 
 C2-Wiki Discussion and Relational Implementation 
 Information Security Definitions: ACL 
 Easy and detailed ACL howto for linux
 Security Briefs: Access Control List Editing in .NET
 MS Windows .NET ACL Technology 
 What could have been IEEE 1003.1e/2c
 Apple Mac OS X Server version 10.4+ File Services Administration Manual (see pages 16-26)
 ACLbit — ACL Backup and Inspect Tool for Linux 
 Настройка и описание ACL на маршрутизаторе Cisco

Контроль доступа
Безопасность операционных систем