Прирост хакерских атак за 2022 год по данным компании Salt

Разграничение доступа к API с помощью Yandex API Gateway
В этой статье рассказываем про поддержку механизмов авторизации в Yandex API Gateway, а также про новую функциональность сервиса — авторизацию с помощью JWT.
Если у компании есть открытый API, через который передаются данные, она рискует безопасностью этих данных. Хакеры изучают открытые API, находят слабые места и взламывают систему. Результатом такой атаки может стать утечка данных пользователей или похищение денег, а иногда компания может полностью потерять контроль над своей IT-системой.
По статистике

Чтобы защитить свои данные, нужно разграничить уровни доступа к ним с помощью систем авторизации или аутентификации. Если делать это самостоятельно, потребуется много ресурсов, в том числе нужно привлекать специалистов по информационной безопасности.
В этой статье мы расскажем:
С сервисом Yandex API Gateway это сделать гораздо легче. Он позволяет создать управляемый REST API или HTTP API в соответствии с OpenAPI 3.0, а сам служит своего рода прослойкой между пользователем и нужным ресурсом: авторизация происходит на стороне Yandex API Gateway, а потом пользователи получают доступ к целевому ресурсу. Это помогает защитить API продуктов от злоумышленников.
Способы авторизации с Yandex API Gateway
До недавнего времени Yandex API Gateway предлагал разграничивать доступ только одним способом авторизации — с помощью функции Yandex Cloud Functions. Этот способ позволяет контролировать всю логику реализации авторизации, но код функции клиент создает самостоятельно.
Теперь появилась возможность реализовать авторизацию проще — с помощью JWT (JSON Web Token), безопасного веб-токена с закодированной информацией об идентификации пользователя.
Подходящий способ авторизации зависит от схемы безопасности в вашем сервисе.
Схемы безопасности |
Авторизация с Yandex Cloud Functions |
Авторизация через JWT |
HTTP Basic — в заголовке передается логин и пароль пользователя |
✓ |
|
HTTP Bearer — в заголовке передается Bearer-токен |
✓ |
|
Другие HTTP-схемы, определенные RFC 7235 и HTTP Authentication Scheme Registry |
||
API Key — ключ передается в заголовке, строке запроса или файлах cookie |
✓ |
|
OpenID Connect Discovery — механизм с JWT (JSON Web Token) с закодированной идентификационной информацией пользователя |
✓ |
|
Oauth 2 — протокол для авторизации, позволяющий сторонним приложениям получить ограниченный доступ к ресурсам HTTP-сервиса |
Чтобы реализовать авторизацию в API Gateway, в спецификацию вашего API-шлюза необходимо добавить расширение для выбранного способа авторизации.
Рассмотрим особенности настройки шлюза в Yandex API Gateway.
Авторизация через JWT
Чтобы настроить авторизацию через JWT, нужно добавить в спецификацию расширение x‑yc‑apigateway‑authorizer:jwt, а в самом расширении указать необходимые параметры. Все остальное Yandex API Gateway сделает сам.
При авторизации пользователей API Gateway будет валидировать JWT-токен и проверять его подпись с помощью публичных ключей, указанных в расширении. Также в спецификации расширения он проверит поля токена, его актуальность и наличие прав для необходимого доступа. Если права в токене и в спецификации совпадут, API Gateway предоставит пользователю доступ.
Пример использования и подробная информацию об авторизации через JWT есть в руководстве и в документации сервиса.
Авторизация с помощью функции
Если ваш провайдер не поддерживает протокол OpenID Connect, используйте способ авторизации с помощью функции Yandex Cloud Functions.
Как подключить авторизацию:
-
Создайте функцию Yandex Cloud Functions.
-
Настройте API Gateway так, чтобы он вызывал эту функцию перед проксированием запроса в целевой сервис или интеграцию.
-
Добавьте в спецификацию расширение x-yc-apigateway-authorizer:function.
Пример функции и подробную информацию об авторизации с помощью функции можно найти в документации сервиса.
Кеширование данных авторизации
Оба способа авторизации позволяют хранить данные в локальном кеше.
При авторизации через JWT в кеше можно сохранять результаты авторизации и публичные ключи для проверки подписи JWT.
При авторизации с помощью функции Yandex Cloud Functions будет кешироваться ответ функции.
Время хранения данных можно задать в расширении.
Также для каждой авторизации можно передавать контекст — информацию о пользователе и его правах. При авторизации через функцию в контексте также можно прописывать и другие опциональные данные. Если авторизация проходит успешно, контекст будет передаваться в целевую интеграцию — в функцию или serverless-контейнер.