Токен
Описание
Все API в NWS защищены токеном. Токен представляет обычный JWT Token с ограниченным сроком жизни. По окончании срока действия, токен становится не валидным, API перестает работать и нужно получить новый токен в Web консоли. При этом, разумеется, все развернутые сервисы продолжают штатную работу внутри облака.
Использование токена
- Токен является паспортом пользователя в системе и потому считается секретом.
- Токен привязан к акканту и выдается при авторизации через веб интерфейс.
- Факт получения токена не означает доступа к API. Для доступа к API необходимо разрешение от IAM.
- Время жизни токена - 2 часа
Установка токена
- Сгенерировать токен в UI консоли
- Экспорт в shell:
export NWS_API_TOKEN=<your_token> - Проверка установки токена через CLI:
nws check-token
Если все сделано верно, поличим такое:
23 Apr 2024 12:26:54 MSK INFO ✅ Success! Token valid
Схема авторизации
Ниже приведена схема авторизации API.
Обратите внимание, что все инструменты - UI, CLI, Terraform используют API вызовы. Это значит, что в момент окончания работы токена все инструменты доступа к NWS перестают работать до момента получения нового токена.

1 - Пользователь заходит и авторизуется в Web консоли. В случае успешной регистрации, система возвращает token. Пример
2 - Пользователь эскортирует токен export NWS_API_TOKEN=eyJhbGciOiJS... и проверяет доступ к NWS через CLI: nws ct.
При доступе к NWS, запросы роутятся через глобальный DNS сервис, аналог AWS Route53, который называется Flugger. Flugger роутит запрос на нужный Availability Zone и запрос попадает на Elastic Load Balancer.
3 - Elastic Load Balancer - это локальный реплицированный сервис для каждой Availability Zone. Он отвечает за балансировку трафика, health checks, а также за изменение количества реплик сервиса в EKS.
4 - Запрос поступает на Auth Proxy. Это компонент системы, который решает стоит ли пропускать входной API запрос, используя токен. Auth Proxy выполняет роль интеллектуального реплицируемого файровола для каждой Availability Zone. Auth Proxy направляет токен параллельно в MultiPass и IAM для дальнейшего анализа.
5,6 - Auth Proxy посылает токен MultiPath и IAM. Сервис MultiPass проверяет токен при помощи JWKS Endpoint. Отметим, что MultiPass проверяет только валидность токена, а валидацию самого аккаунта дилегирует IdP.
MultiPass проверяет целостность JWT токена и время его жизни
IdP проверяет валидность пользотеля, используя базу RDS. RDS шифруется ключом Data Encryption Key, DEK при помощи сервиса KMS
7 - В случае успешной валидации, Auth Proxy пропускает входящий запрос на нужный API Endpoint и выполняется.