Перейти к основному содержимому

Envoy (Авторизация в Service Mesh)

envoy-authz — это сервис внешней авторизации Envoy, использующий Casbin для RBAC/ABAC. Он реализует gRPC API внешней авторизации Envoy и работает с Istio или любой сетью на основе Envoy.

Предварительные требования​

  • Envoy версии 1.17 или новее
  • Istio или другая service mesh на основе Envoy
  • Зависимости gRPC

Зависимости управляются через go.mod.

Как это работает​

  • Клиент инициирует HTTP-запрос
  • Envoy перехватывает запрос и перенаправляет его на gRPC-сервер авторизации
  • Сервер проверяет запрос на соответствие политикам Casbin
  • Авторизованные запросы выполняются; неавторизованные блокируются

gRPC-сервер реализует определение протокола buffer из файла Envoy external_auth.proto:

// A generic interface for performing authorization checks on incoming
// requests to a networked service.
service Authorization {
// Performs an authorization check based on the attributes associated with the
// incoming request and returns a status of `OK` or not `OK`.
rpc Check(v2.CheckRequest) returns (v2.CheckResponse);
}

Сервер авторизации должен реализовать метод Check(), определенный выше.

Использование​

Вы можете протестировать свои политики, используя онлайн-редактор Casbin.

  • Запустите сервер авторизации:
go build .
./authz
  • Примените конфигурацию Envoy:
envoy -c authz.yaml -l info

После запуска Envoy он будет маршрутизировать входящие запросы через промежуточное ПО авторизации.

Интеграция с Istio​

Чтобы включить это промежуточное ПО, настройте вашу систему так, чтобы информация об идентификаторе пользователя передавалась через пользовательские заголовки в токенах JWT или заголовках запроса. Инструкции по изменению заголовков запроса см. в официальной документации Istio.

Comments are powered by giscus and GitHub Discussions. They load from giscus.app and GitHub only after you click the button below.