Использование агента открытой политики (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.