ACL

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

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

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

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

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

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

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

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

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

Файловые системы с ACL

[править | править код]

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

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

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

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

Сравнение с RBAC

[править | править код]

Основной альтернативой модели ACL является модель управления доступом на основе ролей (RBAC). «Минимальную модель RBAC», RBACm, можно сравнить с механизмом ACL, ACLg , где в качестве записей в ACL разрешены только группы. Barkley показал, что RBACm и ACLg эквивалентны[1].

В современных реализациях SQL ACL также управляют группами и наследованием в иерархии групп. Таким образом, «современные списки ACL» могут выражать все то, что выражает RBAC, и являются особенно мощными (по сравнению со «старыми ACL») в своей способности выражать политику управления доступом с точки зрения того, как администраторы рассматривают организации[2].

Для обмена данными и для «высокоуровневых сравнений» данные ACL можно преобразовать в XACML[3].

Примечания

[править | править код]
  1. John Barkley. Comparing simple role based access control models and access control lists // Proceedings of the second ACM workshop on Role-based access control - RBAC '97. — New York, New York, USA: ACM Press, 1997. — doi:10.1145/266741.266769.
  2. James Daly, Alex X. Liu, Eric Torng. A difference resolution approach to compressing Access Control Lists // 2013 Proceedings IEEE INFOCOM. — IEEE, 2013-04. — doi:10.1109/infcom.2013.6567005.
  3. Günter Karjoth, Andreas Schade. Implementing ACL-Based Policies in XACML // 2008 Annual Computer Security Applications Conference (ACSAC). — IEEE, 2008-12. — doi:10.1109/acsac.2008.31.