Ролевое управление.
Ролевое управление.
По терминологии в теме вроде все ясно - пользователь, группы, ресурсы, права.
Можно даже приспособить что-то системное для управления - Активе Директори, ЛДАП, АЦЛ -
или даже рулить всем руками.
Но руками - не интересно, хочется нормальным внятным автоматом с легкой правкой при проблемах
и, самое основное, работающее быстро именно для задачи и адаптируемое под меняющиеся
требования.
Задачка выглядит так (возможно что-то упускаю).
Работает сервис. Веб-сервис, если точнее.
Есть куча пользователей. Ну скажем порядка 100.000, т.е. система нагруженная.
Пользователи загружают и система исполняет некоторый код. Вопрос безопасности загружаемого кода пока опускается.
Количество загружаемого кода - много. Можно считать под 100.000 единиц.
Юзвери могут быть следующие:
- админ, только управление пользователями
- владелец, тот кто загрузил ресурс
- член группы, кто-то с правами на пользование
Загружаемый код делится на 3 категории:
- общий, доступный всем юсерам
- групповой, доступный членам определенной группы и, рекурсивно, включенных групп
- частный, доступный только загрузившему пользователю.
Права на выполнение операций с кодом, насколько Я понимаю ситуацию, будут нужны следующие. На:
- создание, вообще создать что-то в группе
- изменение, что-то изменить в имеющемся в группе
- удаление
- использование
Отдельная процедура - передача прав на код между группами пользователей.
Что-то типа: передать можно только в одну сторону или передать можно только право использования.
Тут думать надо.
Еще где-то с боку лежит версионность кода.
Допустим сделали какой-то специфический чекбох версии 1.0.0.1, потом его 20 раз существенно
модифицировали, дойдя до версии 1.0.20.1. При этом версии 7, 12 и 15 - несовместимы с 1.0.0.1
(совместимость остальных пока опускаем).
Надо как-то управлять доступом к версиям.
Я не тестировал виндовую версию, но по ощущениям она начнет тормозить уже при 2-3 тыс юзеров
и 3-4 тыс управляемых единиц на усера. Не спасет даже отдельный контроллер домена.
Вопросик такой - кто-нибудь видел компактную, независимую от оси, достаточно гибкую систему
управления доступом к ресурсам?
Вопрос второй - какой структурой надо описать отношение между кодом, юсерами, группами и версиями
чтобы время верификации доступа было минимальным. Надо понимать, что приведенные списки
явно неполные и будут модифицироваться.