Авторизатор шлюза API AWS: Какую безопасность обеспечивает требование как токена OAuth, так и ключа API?

#amazon-web-services #security #aws-api-gateway #amazon-cognito

Вопрос:

Я играю с защитой шлюза API AWS с помощью токенов пула пользователей AWS Cognito. Настройки авторизации шлюза API позволяют мне требовать, чтобы HTTP-запрос содержал как x-api-key заголовок, так и authorization заголовок (содержащий токен JWT). Я прикрепил фотографию этого.

Мне кажется, что требование ключа API вместе с токеном OAuth является редудантом. Какое практическое преимущество в плане безопасности может быть, если клиенты этой конечной точки будут предоставлять и то, и другое?

Настройки авторизатора шлюза API

Ответ №1:

Ключ Api чаще используется вместе с планом использования для контроля

  • к каким этапам может получить доступ данный клиент.
  • Установите ограничение регулирования, например: 100 звонков в минуту.
  • Установите лимит квоты. например: 100 тыс. звонков в день.

Ключ Api на самом деле не содержит никаких сведений о пользователе, его статическое значение обычно создается для каждого приложения/клиента.

Лично я даже не рассматриваю этот ключ Api AWS как эквивалент заголовка базовой аутентификации старой школы и вообще никогда не использовал его для защиты api.

С другой стороны, заголовок аутентификации-это обычный access_token и/или id_token, созданный, когда конкретный пользователь успешно авторизован/аутентифицирован на сервере аутентификации и получает доступ к API.

Из документов:

Не полагайтесь на ключи API в качестве единственного средства аутентификации и авторизации для ваших API. Во-первых, если у вас есть несколько API в плане использования, пользователь с действительным ключом API для одного API в этом плане использования может получить доступ ко всем API в этом плане использования. Вместо этого используйте роль IAM, лямбда-авторизатор или пул пользователей Amazon Cognito.

Комментарии:

1. Интересный. Таким образом, ключ API меньше связан с безопасностью и/или авторизацией, а больше с Планами использования. Имеет смысл. Я не знал о Планах использования, так что спасибо, что связались с ними.

2. Да. иногда x-api-ключ настраивается прямо в конфигурации среды клиентского приложения(интерфейсного приложения), больше похожего на идентификатор клиента, чем на секрет клиента, я бы не стал полагаться на x-api-ключ 🙂