Коллеги, добрый день. Подскажите пожалуйста как можно усовершенствовать и нужно ли, следующее решение по организации ролевого доступа.
Есть ряд пользовательских приложений (ПП) примерно одинакового профиля, к которым нужно дать доступ пользователям организаций. Организаций достаточно много, есть пожелание гибко управлять контролем доступа организаций к приложениям как со стороны администратора инфраструктуры, так и со стороны администраторов организаций, которые хотели бы определять права своих юзеров. Есть приложение контроля доступа (ПКД), которое отвечает за централизованную аутентификацию и авторизацию доступа.
Предлагаемое решение для контроля доступа пользователей к функциям приложений со стороны администраторов организаций:
- Каждое приложение определяет набор функций, к которым хочет дать доступ, иногда достаточно мелких.
- ПКД хранит данные о связи Функции Приложения - Права - Роль, предполагается что доступ всегда дается по разрешающей модели, то есть если роль пользователя включает права на функции приложения, то пользователь имеет право ими пользоваться, иначе нет.
- Пользователь может обладать одной или несколькими ролями, что позволяет варьировать уровень его доступа. Администратор по умолчанию обладает всеми ролями и таким образом полным набором прав на функции приложения.
- В случае необходимости дать избирательный доступ, можно будет назначить пользователю комбинацию из ролей и прав, или только прав, чтобы не создавать выделенные роли для частных случаев использования приложения.
Предлагаемое решение для контроля доступа самих организаций и их пользователей админом инфраструктуры:
- Каждой организации назначается сет приложений, к которым разрешается доступ. Если у организации нет разрешения на доступ к приложению, то ни один ее пользователь, невзирая на его права, не может пользоваться приложением в целом. Это позволяет решить бизнес-задачу мгновенного ограничения доступа к ресурсам приложения.
- Кроме этого каждой организации назначается сет ролей, которыми может оперировать эта организация.
- ПКД определеяет функции доступные пользователю по пересечению множеств ролей пользователя и ролей доступных организации с учетом доступных приложений и выдает функции только из множества ролей, которые попали в это пересечение.
Таким образом если перед админом стоит задача ограничить функции всех пользователей организации и при этом обрубить доступ организации к одному из приложений он лезет в два разных места и назначает лимитированный набор приложений, и лимитированный набор ролей. Поскольку все приложения носят примерно одинаковый характер и позволяют пользователю приобретать продукты разного плана, администратор может ограничить набор ролей по функциональному признаку, например организации разрешается только просматривать продукты, либо просматривать и покупать, либо просматривать-покупать-осуществлять возврат.
Какие недостатки вы видите в предложенном решении и какие решения знаете, используете в таких случаях?