Istio: HTTP-авторизация: убедитесь, что пользователь является владельцем ресурса - PullRequest
1 голос
/ 19 июня 2019

Рассмотрение использования Istio для обработки авторизации для приложения, построенного на архитектуре микросервисов в Кубернетесе.

Одна из целей, которую мы стремимся достичь, - это отделить авторизацию службы с помощью Istio Authorization.

Наш API Gateway (Kong) будет обрабатывать проверку / разбор токенов JWT и передавать любые необходимые атрибуты (имена пользователей, группы, роли и т. Д.) В качестве заголовков, например, x-username: homer@somewhere.com (абстрагирует это отуслуги)

Что мы хотим сделать, это наряду с проверкой на основе ролей и т. д. Мы также хотим убедиться, что x-username также является владельцем ресурса, например, если они обращаются к:

/user/{userID}/resource

Это означало бы, что если userId совпадает со значением заголовка x-username, мы можем продолжить обслуживание запроса, в противном случае мы отправим 401 и т. Д.

Есть ли способ настроить это как часть IstioАвторизация?

Заранее спасибо за ваше время

1 Ответ

1 голос
/ 20 июня 2019

Что вам нужно, так это управление доступом на основе атрибутов (). Посмотрите механизмы авторизации, например. Аксиоматика, которая подключается прямо к Конгу и обеспечивает этот уровень контроля доступа (проверка владения).

Вы также можете позвонить в Axiomatics из Isitio, используя адаптер на основе шаблона авторизации Istio .

Политики в аксиоматике пишутся с использованием XACML или ALFA , которые являются 2 стандартами OASIS для ABAC / мелкозернистой авторизации.

Вы можете легко написать условие в следующем виде:

rule checkOwner{
    deny
    condition not(owner==user.uid)
}

Кстати, вы, вероятно, хотите отправить обратно 403, а не 401. Последнее относится к неудачной аутентификации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...