Иерархические атрибуты в политике XACML

Мы используем WSO2 Identity Server 5.1.0.

У нас есть иерархия местоположений, такая как Plant1-> Area1-> unit1. Теперь, если у пользователя есть атрибут для Plant1, он также должен получить доступ к unit1 (всем дочерним элементам родителя в дереве).

Можем ли мы указать это в XACML? У нас есть иерархия, хранящаяся в БД. Мы также можем предоставить список иерархических элементов в виде списка атрибутов, если это необходимо.

Проблема объяснена в примере: пользователю bob был предоставлен доступ к области 2, как показано ниже:

Завод1

| --Площадь1

     |--Unit1

| --Площадь2

     |--Unit2

Мы хотим указать местоположение Area2 в политике XACML. Теперь, если приходит запрос с area2 или unit2, это должно быть разрешено, а если приходит запрос с plant1, area1 или unit1, он должен быть отклонен.

Мне нужна структура для политики XACML.


person Mayur D1    schedule 21.06.2016    source источник
comment
Да, можно там. Существует дополнительный профиль Axiomatics, который выполняет именно это.   -  person David Brossard    schedule 15.06.2017


Ответы (1)


Вы можете реализовать это с помощью настраиваемого PIP (точка информации о политике, также известная как поставщик атрибутов) в реализациях XACML, таких как AuthzForce . Я не знаю, что WSO2 IS так много, но, согласно документу, он также расширяется с помощью custom PIPs, поэтому я полагаю, что это должно помочь.

Идея состоит в том, что в политике XACML вы используете AttributeDesignator с настраиваемым AttributeId, чтобы указать, что запрашивается верхнее родительское значение в иерархии некоторого атрибута, например AttributeId = resource-id-parent для родительского значения атрибута resource-id.

Что делает ваш настраиваемый PIP: когда запрашивается этот идентификатор настраиваемого атрибута resource-id-parent, PIP получает значение атрибута resource-id из запроса, т. Е. " area2 "или" unit2 ", затем получает соответствующее верхнее значение в иерархии из вашей БД (или все значения выше, если хотите) и возвращает его как мешок. Затем в политике XACML вы можете использовать равную строку в Match или строку-по крайней мере-один-член-из в условии, чтобы сопоставить AttributeDesignator с "area2" (помните, что AttributeDesignator всегда оценивается как мешок).

person cdan    schedule 24.07.2018