Использование агента открытой политики (OPA) в качестве системы ABAC

У меня есть проект, который требует ABAC для контроля доступа к ресурсам моих проектов. Я рассматривал OPA и authzforce, поскольку варианты реализации ABAC и OPA выглядят так, как будто они могут быть менее сложными, чем authzforce. Я вижу, что OPA сравнивает себя с другими системами и парадигмами, но пример, который он дал для ABAC, оставляет желать лучшего. Главным образом потому, что ABAC требует использования точек, которые обеспечивают соблюдение политик, принимает решения относительно политик, выбирает атрибуты объектов и объектов для решений политик. Я чувствую, что у OPA есть все, кроме последней части, но трудно сказать, правда ли это, так как их пример ABAC - только один раз.

Я искал по всему интернету примеры использования OPA в качестве реализации для ABAC, но я ничего не нашел.

Мой проект - это веб-приложение, которое позволяет конечным пользователям создавать ресурсы и создавать политики для своих ресурсов. Я планирую создать пользовательский интерфейс для конечных пользователей, чтобы создавать свои политики. Мой план состоит в том, чтобы абстрагироваться от его аспекта кодирования и вместо этого дать им выпадающие списки и кнопки, этот пользовательский интерфейс будет использовать собственный скрытый синтаксис, который я буду интерпретировать в политику OPA.

Основная проблема, которую я имею, заключается в том, как реализовать это как ABAC, это так же просто, как создать деталь, которая будет извлекать атрибуты для субъекта, объекта и среды и создавать связь между ним и OPA (по сути, создавая PIP).) так как сама OPA, по-видимому, является PEP и PDP по умолчанию?

Я чувствую, что тону в документации, и, похоже, в собственных документах ОРА не хватает, чтобы объяснить, как это можно сделать.

2 ответа

Решение

OPA выглядит так, как будто это не так сложно, как authzforce

Есть пара плюсов и минусов для любого подхода. Прежде всего, поскольку вы поняли, что OPA и AuthZForce являются реализациями ABAC (вы можете прочитать больше об ABAC здесь и здесь).

OPA

Open Policy Agent - это относительно новая модель, нацеленная в основном (но не только) на решение мелкозернистой авторизации для инфраструктуры (например, Kubernetes). У них даже есть заранее построенные точки интеграции для Истио и Кубернетеса. OPA предоставляет PEP (принудительное применение / интеграция) и PDP (точка принятия решения о политике), хотя не обязательно называет их так. Используемый язык называется REGO (производная от DATALOG).

Сама OPA, по-видимому, является дефективным PEP и PDP

Да, вы абсолютно правы, и это накладывает на вас бремя внедрения альтернативы для PIP.

Я чувствую, что тону в документации, и, похоже, в собственных документах ОРА не хватает, чтобы объяснить, как это можно сделать.

Обратитесь к Штире - они продают услуги вокруг OPA. Или пересмотрите свой выбор и посмотрите на XACML (см. Ниже).

Недостатки

  • язык (РЭГО) не легко понять
  • язык не стандартизирован
  • OPA не поддерживает пункты информации о политике (PIP) - это сделано специально.

Реализации

Я искал по всему интернету примеры использования OPA в качестве реализации для ABAC, но я ничего не нашел.

Посмотрите на работу, которую они сделали в Netflix. Это основная реализация, о которой я знаю. Вы также можете связаться со Styra, компанией, которая стоит за OPA, и они смогут помочь.

AuthZForce

AuthZForce - это реализация Java с открытым исходным кодом стандарта XACML (расширяемый язык разметки контроля доступа xacml). Он обеспечивает полную реализацию ABAC (PAP, PEP, PDP, PIP). Это часть Fiware (инициатива с открытым исходным кодом), и она активно разрабатывается командой из Фалеса.

Недостатки AuthZForce

  • похоже, что он не имеет графического интерфейса для политик авторов. Я нашел ссылку на KEYROCK PAP, но не смог увидеть скриншот
  • он не поддерживает ALFA, сокращенный язык для авторизации.

Реализации

Есть много других реализаций XACML, которые вы можете рассмотреть (как с открытым исходным кодом, так и коммерческие):

  • AT & T XACML
  • SunXACML
  • WSO2 - часть их платформы WSO2 Identity Server - она ​​называется Balana
  • Аксиоматика (коммерческая - это то, где я работаю) - у нас большая клиентская база, использующая нашу платформу - от компаний из списка Fortune 50 до гибких стартапов.

Преимущества XACML и ALFA

Одним из ключевых преимуществ XACML / ALFA является то, что они являются стандартами и широко применяются. Стандарт существует с 2001 года и взаимодействует с другими стандартами, такими как SAML, OAuth и SCIM.

Возможно, самый конкретный ответ - это подробное описание того, как Chef Automate использует OPA для реализации авторизации приложений.

В более общем плане мы планируем руководство, описывающее, как использовать OPA для авторизации приложений, - оно требует более подробной информации, чем ответ SO. Но использование OPA (или любого механизма политик) для авторизации приложений в некоторой степени зависит от вашего приложения, его архитектуры, ваших соглашений об уровне обслуживания и т. Д. Но вот несколько ключевых вопросов, которые следует рассмотреть:

  • Политика: насколько выразительность нужна вашей политике конечного пользователя? Они просто определяют, скажем, пользовательские атрибуты или пользовательские роли, или они также сопоставляют пользовательские атрибуты / роли с разрешениями? OPA позволяет запрашивать эти политики конечных пользователей как объекты JSON, а затем писать правила политики, которые принимают решения с использованием этих объектов JSON. А для эффективности вы можете скомпилировать эти объекты JSON в настоящие правила OPA.
  • Применение: где вам нужно применять политики авторизации (например, шлюз, микросервис, база данных)? Ваши требования к задержке, размеру данных, выразительности языков запросов к базе данных будут влиять на это решение. OPA достаточно гибок, чтобы помочь со всем этим, и имеет несколько конкретных интеграций, которые помогут: Envoy и аналогичные системы с сервисными сетками для микросервисов и SQL/ElasticSearch для баз данных.
  • Данные: сколько существует атрибутных данных, как часто они меняются, какие гарантии согласованности вам нужны, какие у вас есть механизмы для передачи данных в OPA (например, кеши, потоки событий). Вот руководство по вводу данных в OPA; он использует LDAP/AD в качестве примера источника данных, но принципы одинаковы для любого источника данных.

Мы всегда рады обсудить детали вашего заявления и помочь вам найти подходящий вариант для OPA. Не стесняйтесь, чтобы связаться по слабому каналу OPA.

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