Для управления авторизацией и контролем доступа к workload можно использовать модуль istio. Перед настройкой авторизации убедитесь, что модуль включен в кластере.
Авторизация
Управление авторизацией осуществляется с помощью ресурса AuthorizationPolicy от Istio. Когда для сервиса создается этот ресурс, применяются следующие правила принятия решения о запросах:
- Если запрос попадает под политику
DENY
— запретить запрос. - Если для данного сервиса нет политик
ALLOW
— разрешить запрос. - Если запрос попадает под политику
ALLOW
— разрешить запрос. - Все остальные запросы — запретить.
Иными словами, если явно что-то запретить, работает только запрет. Если же что-то явно разрешить, будут разрешены только явно одобренные запросы (запреты при этом имеют приоритет).
Для написания правил авторизации можно использовать следующие аргументы:
- идентификаторы сервисов и wildcard на их основе (
mycluster.local/ns/myns/sa/myapp
илиmycluster.local/*
); - пространство имен;
- диапазоны IP;
- HTTP-заголовки;
- JWT-токены из прикладных запросов.
Ресурс AuthorizationPolicy
Подробнее ознакомиться с AuthorizationPolicy можно в документации Istio.
Ресурс AuthorizationPolicy включает и определяет контроль доступа к workload. Поддерживает как ALLOW-, так и DENY-правила, описанные выше.
Аргументы для принятия решения об авторизации:
source
:namespace
;principal
(идентификатор юзера, полученный после аутентификации);- IP.
destination
:method
(GET
,POST
и т. д.);host
;port
;- URI.
conditions
:- HTTP-заголовки;
- аргументы
source
; - аргументы
destination
; - JWT-токены.