Как реализовать эти правила в политиках XACML?

Вот требование, которое я пытаюсь реализовать через XACML / ABAC в учебных целях:

Информационная модель

  • Ресурсы: Здание, Блок

    • there are many buildings (ex. B1, B2, B3, ... Bn)
    • в каждом здании много юнитов (т. е. юнит является дочерним по отношению к зданию) (например, B1U1, B1U2, B1U3, ...)
  • Тема: Обслуживающий персонал

Правила

  • A housekeeper can "open" a "unit" if
    • they have "open" permission on that "unit" OR
    • если у них есть «открытое» разрешение на «здание», в котором находится этот «блок».

Есть указатели?

Обновлять

По сути, вот что меня беспокоит: если требование было чем-то вроде, экономка может "открыть" "unitX", если у него / нее есть разрешение "открывать" на "unitX". Здесь я бы просто написал простое правило.

Однако с моими фактическими требованиями есть следующие опасения:

  1. Поскольку существует не один конкретный ресурс, а множество ресурсов одного типа, следует ли мне писать отдельную политику для каждого ресурса? Бывший. отдельная политика для построения «B1», другая для «B2» и так далее?

  2. Как политика «узнает» об иерархической взаимосвязи между зданием и единицей.

Теперь, когда я думаю об этом дальше, я думаю, что следующий подход должен работать (?)

  1. Запрос будет включать следующее

resource: / {buildingId} / {unitId} // вот как политика узнает родительское отношение к потомку

действие: открыть

subject: subjectId и, возможно, все разрешения, которые есть у этого субъекта (все еще думает о том, как представлять разрешения, какие-либо предложения?)

  1. Определите одну политику с помощью rule: // псевдокод if (subject.permissions включает open on {buildingId} OR open on {unitId}), затем разрешить else deny.

Какие-либо предложения?

Спасибо,

Джатин


person Jatin    schedule 07.07.2017    source источник
comment
Есть указатели? Покажите, что у вас есть на данный момент, или хотя бы объясните ту часть, которая вызывает у вас трудности.   -  person Robby Cornelissen    schedule 07.07.2017
comment
Спасибо, конечно, обновлю вопрос через некоторое время.   -  person Jatin    schedule 07.07.2017
comment
Спасибо @DavidBrossard   -  person Jatin    schedule 09.07.2017


Ответы (1)


Вам необходимо определить следующие атрибуты в модели ABAC:

Атрибут ресурса

Атрибут - Здание, Значения атрибутов - B1, B2, B3

Атрибут - Единица, Значения атрибутов - B1U1, B1U2, B1U3, B2U1, B2U2, B2U3, B3U1, B3U2, B3U3

Атрибут действия

Атрибут - действие при построении, значение атрибута - открыть

Атрибут темы

Атрибут - Житель здания, Значения атрибутов - Житель1, Житель2

Иерархические отношения между зданием и строительными единицами необходимо определить на основе отношения наследования ресурсов.

Наследование ресурсов

Бенефициар - Здание: B1, Унаследованные значения - Блок: B1U1, Блок: B1U2, Блок: B1U3

Бенефициар - Здание: B2, Унаследованные значения - Блок: B2U1, Блок: B2U2, Блок: B2U3

Бенефициар - Здание: B3, Унаследованные значения - Блок: B3U1, Блок: B3U2, Блок: B3U3

Теперь вам нужно определить правила для политики ABAC. Теперь вы можете использовать инструменты автоматизации политик, так что вам не нужно думать об отношениях наследования во время создания правил. Вы определяете эти отношения один раз, а затем, когда вы создаете правила, инструмент автоматизации автоматически запомнит эти отношения и автоматически создаст правила для вас. Вы можете скачать такое средство под названием «Инструмент политики безопасности». Это коммерческий инструмент, но вы можете скачать бесплатную демонстрацию, которая также включает в себя полный редактор xacml. Пожалуйста, проверьте ниже снимок экрана вашей модели в SPT:

Снимок экрана вашей модели, определенной в инструменте политики безопасности

Затем с помощью этого инструмента вы можете автоматически преобразовать свои политики ABAC в XACML и далее редактировать во встроенном редакторе xacml для точной настройки.

Политика XACML, автоматически преобразованная инструментом политики безопасности

person Jayanta Debnath    schedule 19.09.2017