Введение
В последнее время любое серьезное программное обеспечение, будь то веб-сайт или десктоп приложение требует от разработчика уделять больше внимания защите данных от несанкционированного доступа т.е. конфиденциальности. Существует такой подход ограничения доступа как ACL. Произносится - эй си эль, аббревиатура расшифровывается как Access Control List, что в переводе означает "список контроля доступа".
Список содержит в себе правила доступа ролей к ресурсам. Под ролью подразумевается субъект, под ресурсом - объект системы в рамках которой применяется ACL. Правила доступа определяют то, какие роли имеют доступ к тем или иным ресурсам. Достигается это методом деления всех пользователей системы на роли, а её компоненты, на ресурсы.
Пример
Можно попробовать рассмотреть это на простом примере, на сайте установлен модуль новостей и существует 3 типа пользователей - Гость Редактор Админ. Список контроля доступом в "облегченном варианте" будет представлять из себя примерно такую таблицу:
| Ресурсы\Роли |
Гость |
Редактор |
Администратор |
| Новости |
Чтение |
Чтение/Создание |
Чтение/Создание/Удаление |
Таким образом Гость не имеет право создавать новую новость, а редактор удалять существующие, админ может все.
Наследование
В этом простом примере уместнее использовать модель наследования прав доступа. Редактор имеет более высокий уровень доступа и наследует возможности пользователя т.е. может читать новости, но так же к этому списку добавляется еще одна возможность присущая именно редактору - "Создавать новость", администратор наследует права всех вышеуказанных пользователей, но имеет свою особенность - удалять новости.
Пока это все, что касается общих понятий и целей ACL.
Комментарии
Хоть бы кто привел пример реализации на языке программирования