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