Настройка системы управления пользователями / ролями - с несколькими арендаторами - PullRequest
3 голосов
/ 28 февраля 2011

Есть ли у кого-нибудь какие-либо схемы, модели данных или предложения для создания системы управления пользователями / ролями, которая учитывает мультиарендность. Например, пользователю в организации A может быть назначена роль для определенного проекта, для определенного приложения, в организации B. Есть идеи? Я читал о RBAC, просто ищу хороший пример.

Спасибо

Ответы [ 4 ]

3 голосов
/ 28 февраля 2011
2 голосов
/ 30 июля 2015

Краткая информация о RBAC : Система контроля доступа на основе ролей - это метод ограничения доступа к «некоторым источникам или приложениям или некоторым функциям приложений» на основе ролей пользователей организации.

Здесь ограничения могут быть с помощью нескольких разрешений, которые создаются пользователями-администраторами для ограничения доступа, и эти разрешения вместе представляют роль, которая будет назначена пользователю.

И если мы немного углубимся в RBAC, он в основном содержит 3 функции.

1) Аутентификация - подтверждает личность пользователя. Обычно это делается с помощью учетных записей пользователей и паролей или учетных данных.

2) Авторизация - определяет, что пользователь может делать и чего не может делать в приложении. Ex. «Изменение заказа» разрешено, но «создание нового заказа» запрещено.

3) Аудит действий пользователя над приложениями. - Он отслеживает действия пользователя над приложениями, а также кто и как предоставил доступ к каким пользователям? Это было очень простой вид сверху системы RBAC.

Для мультитенантных приложений я бы порекомендовал «Управление группами и пользователями» с ролями и разрешениями.

Давайте возьмем пример.

Существует несколько клиентов (арендаторов) для приложения:

Client A – has – 100 users [Tenant A]
Client B – has – 50 users [Tenant B]
Client C – has – 100 users [Tenant C]

Таким образом, сценарий будет примерно таким: каждый клиент и пользователи этого клиента должны иметь доступ только к определенным функциям приложения, а администратор этих клиентов должен иметь возможность управлять только своими пользователями.

Итак, чтобы справиться с этим, мы можем

  1. Определение и управление группами (арендаторами)
  2. Определение пользователей или учетных записей и управление ими в качестве членов группы (арендатора)
  3. Ограничить доступ для каждого арендатора в приложении с помощью ролей или разрешений
  4. Делегирование администрирования безопасности локальным пользователям в рамках каждого Клиента или организации
    Нечто подобное показано ниже.

Иерархия групп: Groups Hierarchy1:

Где группа «Клиент А» и ее дочерние группы будут содержать пользователей для «Клиента А» и аналогично для других клиентов или организаций.

Соответственно пользователи будут назначены в соответствующие группы, а роли будут назначены определенным группам.

Вы можете проверить эту статью - в которой показано, как работать с мультитенантными приложениями для управления пользователями и ролями с помощью готовой к использованию инфраструктуры, предоставляемой VisualGuard, где я работаю.

http://www.visual -guard.com / EN / нетто-PowerBuilder-приложения безопасность аутентификация разрешения-контроль доступ-RBAC / безопасный Saas--и-многопользовательские-приложения-с-Asp- нетто-или-ФОС-Silverlight.php

2 голосов
/ 28 февраля 2011

Вы смотрели на Rhino security ?Возможно, это не совсем то, что вы хотите, но Айенде довольно хорошо проведет вас через модель безопасности и процесс ее разработки, что может дать вам хорошую отправную точку.

1 голос
/ 05 сентября 2011

Вы находитесь в .NET, но для нас в мире PHP Zend Framework предоставляет облегченную инфраструктуру управления доступом, которая позволяет вам создавать собственную реализацию ACL, которая может помочь вам понять концепции и создать свою собственную в .NET по адресуhttp://framework.zend.com/manual/en/zend.acl.introduction.html.

Я могу предоставить файл рабочей среды MYSQL с реализацией, которую мы используем в настоящее время, если вам нужна дополнительная помощь

...