2014-02-14 3 views
0

Я разрабатываю проект с MongoDB, у меня есть сценарий, поэтому я могу ограничить видимость данных для пользователя на основе их роли, например, если у меня есть документ форма:Лучший способ определить настраиваемую политику авторизации

{ 
    "testme1":"fooo", 
    "testme2":"foobar" 
} 

пользователь с ролью «администратор» можно увидеть как «testme1» и «testme2», в то время как «гость» может видеть только «testme2». Каков наилучший способ определения этого правила авторизации динамически, так что мой app apper должен извлекать данные только в соответствии с правилом. Мой подход заключается в том, чтобы дать пользователю «пользовательский интерфейс» для определения правила и на основе его декларации сохранить на моем сервере «XML» -файл. Пожалуйста, дайте мне знать, если у кого-то есть лучшая идея, также если у них есть подход к уровню базы данных.

ответ

1

Существует стандартный стандарт авторизации, который вы можете использовать для определения ваших политик авторизации. Этот стандарт называется XACML, расширяемым языком разметки доступа. Он реализует модель авторизации, называемую управлением доступом на основе атрибутов (ABAC). Вы можете прочитать на обеих темах здесь:

XACML определяет архитектуру с понятием:

  • политическая точка принятия решения (PDP),
  • пункт обеспечения соблюдения политики (PEP) и
  • Информационный пункт политики (PIP).

В типичном потоке PEP защищает ваши данные/сервис/API. PEP отправит запрос на авторизацию PDP:

  • Может ли пользователь Alice просмотреть запись № 123?

PDP обратился к PIP для получения отсутствующих атрибутов, например. роль пользователя и разрешение, а также атрибуты ресурсов, например. чувствительность данных, белый список или черный список ... Исходя из новой информации, PDP может принять решение: Разрешение или Запрет. Доступ разрешен или заблокирован.

С XACML нет ограничений на богатство политик авторизации. Я работаю в компании, Axiomatics, которая реализует XACML, а наши решения используются в производстве, здравоохранении, банковской деятельности для обеспечения доступа к конфиденциальным данным динамическим способом (например, менеджеры могут редактировать документы, которыми они владеют).

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

HTH

+0

Barbarossa - их хороший инструмент, который может генерировать XACML-файл для моего правила? –

+0

Также мой сценарий заключается в том, чтобы не принимать решение, подобное разрешению, или отклонять, но принимать решение как «какие столбцы» из строки, если пользователю будет предоставлен доступ на основе роли, может ли эта ситуация быть решена с помощью XACML –

+0

. Вы можете добиться «обратного запроса» "с XACML. Я вызываю обратные запросы на такие вопросы, как «что я могу сделать?» или «кто может просматривать эти ресурсы?» или в вашем случае «какие столбцы я могу отобразить?» –

 Смежные вопросы

  • Нет связанных вопросов^_^