2016-11-14 2 views
1

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

Например,

  1. Moderator уполномочен называть GetModerationAwaitingPosts метод сервиса для доступа сообщения от любого посетителя ожидает модерации

  2. Visitor уполномочен называть GetOwnedPosts метод обслуживания, чтобы получить доступ только свои собственные сообщения включая проекты и модерации, необходимые должности

  3. Visitor имеет право называть GetModeratedPosts метода обслуживания для доступа только замедлитель сообщения от всех посетителей

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

  1. Любой зарегистрированный пользователь имеет право называть этот метод.

  2. Сообщения сначала фильтруются в соответствии с ролью вызывающего абонента.

  3. Затем сообщения отфильтровываются в соответствии с параметрами, переданными в методе GetPosts или фильтруются на стороне клиента.

Этот подход используется, например, в службах передачи данных WCF через Interceptors.

Как подход к фильтрации данных на основе пользовательского метода обслуживания, названного и обработанного в разных архитектурах и методологиях, таких как SOA, REST, CQRS? Это твердое решение?

Существуют ли какие-либо книги/статьи, в которых разница между этими подходами подробно рассматривается?

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

ответ

0

Да, существует парадигма контроля доступа, называемая контролем доступа на основе атрибутов (ABAC, ), которая реализует основанную на данных авторизацию на основе контекста, которая использует информацию о пользователе (роль, отдел, возраст, местоположение ...) об объекте (владелец, классификация, тип ...) действие (просмотр, редактирование, удаление) и контекст (время, IP-адрес ...)

ABAC позволит вам внедрить политики, например:

  • случаи медицинского использования
    • врачи могут просматривать медицинские записи пациентов, которым они назначены
    • медсестер может редактировать медицинский журнал пациента в том же deparment
  • Финансы случаи использования
    • Кассир может просматривать счета этих клиентов в своей отрасли
    • Кассир может одобрить передачу до предела утверждения

ДКС обеспечивает архитектуру, как показано ниже.

ABAC Architecture - Axiomatics

В архитектуре у вас есть понятие точки PEP или политики органов, которые вы можете использовать, чтобы обеспечить что-нибудь из ГПИ, API, веб-сервисы, микро-услуг, ESBS и баз данных.

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

Существует один язык, который сегодня реализует ABAC. Этот язык называется XACML (). XACML дает:

  • архитектура
  • языковая политика
  • схема запроса/ответа

С XACML вы можете создавать запросы на авторизацию в формате JSON, отправить их на PDP и получить Ответ JSON назад. Это очень легкий способ получить ответ.

Это означает, что вы можете либо

  • разрешить или запретить доступ к данной записи, или
  • фильтр этих записей пользователь может получить доступ к, как указано в вашем требовании
+0

Как PEP -PDP работают, если любой пользователь имеет право сделать запрос «_Получить все записи, к которым мне разрешен доступ»? Допускается до сотни из миллиона записей. Будет ли PEP отправлять миллион записей в PDP, чтобы решить, к какому из них можно получить доступ? Или PDP всегда возвращается, поскольку любой пользователь имеет право сделать такой запрос? Тогда как это связано со второй частью вопроса о фильтрации данных? – Lightman

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