Набор политик динамического корня для мультитенантности с использованием Authzforce Core

Я в основном хочу использовать Authzforce в многопользовательской системе.

Прямо сейчас у меня есть одна корневая политика, в которой есть несколько PolicySetIdReference элементов, которые указывают на другие наборы политик (для каждой организации), но я заметил, что она пытается разрешить каждый ссылочный элемент и запрашивает базу данных (я установил свою собственную версию MongoDbBasedRefProvider ). Меня беспокоит, что я без нужды загружу все остальные политики для других организаций.

<PolicySet PolicySetId="ROOT" ....>
    <PolicySetIdReference>ID-for-org-1</PolicySetIdReference>
    <PolicySetIdReference>ID-for-org-2</PolicySetIdReference>
</PolicySet>

Могу ли я заставить корневого поставщика политики проверять какое-либо условие (на основе организации), чтобы проверяемые мной политики были значительно меньше? В приведенном выше примере я хочу получить только тот для ID-for-org-1


person Samuel    schedule 03.03.2020    source источник


Ответы (1)


Для полной мультитенантности я рекомендую иметь по одному экземпляру PDP на каждого арендатора, то есть отправлять запрос конкретному PdpEngine экземпляру на основе идентификатора арендатора (организации), например через карту String-to-PdpEngine или что-то еще, просто предложение.

Если вы по-прежнему хотите использовать один и тот же механизм PDP для всех клиентов (т. Е. Обработку политик для всех), убедитесь, что вы сделали все это:

  1. Используйте алгоритм комбинирования политик first-applicable в политике ROOT (чтобы оценка останавливалась на первом применимом наборе политик внутри).
  2. Убедитесь, что в запросах XACML присутствует атрибут идентификатора арендатора / организации.
  3. Определите цель XACML в каждом наборе политик организации с помощью Match (равного) для этого атрибута идентификатора клиента / организации, чтобы убедиться, что набор политик применяется (оценивается) только при совпадении идентификатора клиента / организации.
  4. Внедрите и включите Decision Cache на PDP.
person cdan    schedule 05.03.2020