Набор политик Dynami c root для мультитенантности с использованием Authzforce Core - PullRequest
0 голосов
/ 03 марта 2020

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

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

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

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

1 Ответ

1 голос
/ 05 марта 2020

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

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

  1. Используйте алгоритм объединения политик first-applicable в политике ROOT (чтобы оценка остановилась на первом применимом наборе политик внутри).
  2. Убедитесь, что в запросах XACML присутствует атрибут ID владельца / организации.
  3. Определите цель XACML в каждом наборе политик org с Совпадением (равно) в этом атрибуте идентификатора владельца / организации, чтобы убедиться, что набор правил применяется (оценивается) только в том случае, если совпадает идентификатор id / владельца.
  4. Внедрите и включите Кэш решений на PDP.
...