Моделирование нескольких точек принятия решения (PDP) в распределенной среде

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

До сих пор я использовал проект AuthzForce Core для настройки одного PDP, для которого у меня есть отправка цикла for. несколько запросов (это можно делать одновременно с помощью потоков). Однако это не похоже на подходящую установку для оценки моих политик в распределенной среде.

Есть ли способ, которым это можно сделать? Возможно, вы используете AuthzForce Server?

Изменить:

Я запускаю приложение Java, которое использует Authzforce Core. Программа создает экземпляр PDP, который загружает один документ политики, а затем цикл for выполняет несколько запросов. Все это делается локально в самой программе.


person rshah    schedule 08.06.2019    source источник
comment
У вас есть несколько вариантов. Один из них - использовать профиль множественных решений. Другой вариант - использовать обратный запрос.   -  person David Brossard    schedule 09.06.2019
comment
Встроен ли PDP в ваше приложение или на удаленный сервер (отправляющий запросы по сети)?   -  person cdan    schedule 10.06.2019
comment
Пока я запускаю приложение Java, которое использует основной проект authzofrce, где я создаю экземпляр pdp, который загружает один документ политики, а затем цикл for выполняет несколько запросов. Так что все это делается локально в программе   -  person rshah    schedule 10.06.2019
comment
@DavidBrossard Можете уточнить?   -  person rshah    schedule 10.06.2019
comment
Откуда вы загружаете политический документ? Локальная файловая система, удаленная база данных ...?   -  person cdan    schedule 23.06.2019


Ответы (2)


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

  1. Поскольку PDP встроен в ваше приложение Java, я предполагаю (или обязательно делаю это) вы используете AuthzForce native Java API (пример в README), который является наиболее эффективным способом оценки.

  2. Я также предполагаю, что вы (повторно) используете один и тот же экземпляр PDP (BasePdpEngine) на протяжении всего жизненного цикла вашего приложения. Это должно быть потокобезопасным.

  3. Чтобы оценить сразу несколько запросов, вы можете попробовать evaluate(List) метод механизма PDP (javadoc) вместо обычного evaluate(DecisionRequest), который быстрее в некоторых случаях.

  4. Если под «распределенной средой» вы имеете в виду, что у вас может быть несколько экземпляров вашего Java-приложения, развернутых в разных местах, следовательно, несколько PDP, правильные настройки зависят от того, где и как вы загружаете документ политики: локальный файл, удаленный db и т.д. См. мой последний комментарий. Как упоминалось в ответе Рафаэля Систо, вы можете повторно использовать некоторые рекомендации из раздела высокой доступности руководства по установке AuthzForce Server.

person cdan    schedule 23.06.2019

Сервер Authzforce имеет вариант высокой доступности: https://github.com/authzforce/fiware/blob/master/doc/InstallationAndAdministrationGuide.rst#high-availability

Вы можете следовать тем же рекомендациям, чтобы реализовать это, используя свой единственный pdp.

person Rafael Sisto    schedule 11.06.2019