XACML: как управлять доступом к свойствам ресурса

Я понимаю, что XACML может предоставить детальный контроль доступа к ресурсу на основе различных категорий, таких как тема, ресурс, среда и действия.

Но как только оценка сделана и принято решение о получении ресурса, можем ли мы контролировать, к каким полям/свойствам в ресурсе может получить доступ пользователь/субъект?

Например, есть ресурс под названием «Клиент» со следующими полями.

клиент: {имя, isVip, номер телефона}

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

Это должен быть ответ на API информации о клиенте GET:

звонит обычный агент по продажам: {name, isVip}

звонит выбранный агент по продажам: {name, isVip, phoneNumber}

Могу ли я добиться этого с помощью XACML? Если да, то как?


person ndsurendra    schedule 21.12.2016    source источник


Ответы (1)


Да, ты можешь!

Все зависит от того, как вы определяете свои ресурсы и как вы пишете для них политики. В вашем случае у вас есть объект типа «Клиент» и у вас есть объекты типа «поле». Name, isVip и phoneNumber — все это поля объекта Customer.

Вы можете написать следующие политики:

  • Агенты по продажам могут просматривать объект клиента клиента в том же регионе
  • Агенты по продажам могут просматривать поле phoneNumber клиента, если они назначены этому клиенту.

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

  • Может ли агент по продажам Алиса просмотреть запись клиента № 123?
  • Разрешать

Затем приложение извлекает запись. Когда запись возвращается из базовой системы через PEP, вы просматриваете запись, обнаруживаете, что у вас есть 3 раздела, к которым стоит контролировать доступ, а затем вы спрашиваете PDP:

  • Может ли агент по продажам Алиса просматривать разделы № 1, № 2, № 3 записи клиента № 123?
  • Разрешить, Запретить, Запретить

Кстати, последнее является примером запроса множественного решения. Подробнее о MDP можно прочитать здесь и здесь.

person David Brossard    schedule 21.12.2016