Для управления авторизацией и контролем доступа к 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-токены.