XACML для Spring Cloud

Я собираюсь защитить свое Spring Cloud Application с помощью OAuth2 и XACML (используя AuthZForce, Balana, AT&T XACML или что-то подобное).

Я хочу использовать микросервисы от Spring-Cloud(-Netflix). Чтобы сделать XACML доступным, я думаю, что мне нужно это:

  1. PEP для каждого существующего API-сервиса
  2. PDP как новые сервисы, используемые PEP. Поскольку Spring-Cloud (-Netflix) имеет функции балансировки нагрузки (Eureka), мне необходимо зарегистрировать эти службы на Eureka и реализовать REST-API.
  3. Поскольку все PDP должны использовать одинаковые политики, они должны храниться централизованно (поставщик политик)

Какая структура наиболее подходит для этого подхода.

обновление 1 Это должно быть возможно с AuthZForce (в соответствии с описанием функции), но я не совсем уверен, как (нет подробных документов или учебных пособий).

1 ответ

Решение

Я не очень хорошо знаю все фреймворки, поэтому не могу дать объективный ответ, какой из них наиболее подходит. Но я могу дать ответ для AuthzForce.

Для части PDP вы можете использовать AuthzForce Core в качестве библиотеки Java. В вики дается информация о провайдерах политик и о том, как добавить свой собственный фреймворк при необходимости. Там упоминается один, который получает политики из базы данных MongoDB. Обратите внимание, что если вы хотите, чтобы PDP использовали одинаковые политики, центральное хранилище - это одно решение, а другое - использовать репликацию / синхронизацию. Например, если вы используете провайдера политик, который поддерживает получение политик в локальной файловой системе, инструмент децентрализованной синхронизации кластера, такой как csync2, может выполнить работу без единой точки отказа.

Кроме того, вас может заинтересовать AuthzForce Server, который предоставляет мультитенантный REST API для PDP и PAP (администрирование политик) в соответствии с профилем XACML REST (для части PDP). Вероятно, это излишне, если вам нужны только PDP, но, возможно, стоит обратить внимание, если ваши требования будут идти в этом направлении.

Для части PEP вы можете повторно использовать authzforce-ce-xacml-модель (и зависимости), доступные в Maven Central (groupId=org.ow2.authzforce, artifactId=authzforce-ce-xacml-model), чтобы манипулировать обменом запросами / ответами XACML с REST API ваших PDP. В основном он содержит все аннотированные JAXB классы, полученные из схемы XACML, и Enums для стандартных идентификаторов XACML: категории, атрибуты, типы данных и т. Д.

Другие вопросы по тегам