Защита API

Разработка приложений на AWS

Ricardo Sueiras

Principal Technologist

Защита API на AWS

 

securing api

  • Безопасность API критически важна для облачных приложений.
  • API открывают доступ к чувствительной бизнес-логике.
  • Они часто служат публичной точкой входа в серверные системы.
  • API Gateway позволяет безопасно публиковать API.
Разработка приложений на AWS

Авторизация и аутентификация

 

authnauthz

  • Два ключевых понятия:
  • Аутентификация: кто вы такой.
  • Авторизация: что вам разрешено делать.
Разработка приложений на AWS

Авторизация через IAM

 

iam

  • API Gateway может использовать IAM для аутентификации и авторизации.
  • Защищает API с помощью Signature Version 4 (SigV4).
  • Клиенты подписывают каждый запрос.
  • API Gateway проверяет подпись перед обработкой.
  • Политики IAM определяют, какие действия доступны каждому субъекту.
  • Оптимально для взаимодействия сервисов внутри AWS.
Разработка приложений на AWS

Авторизаторы Amazon Cognito

  • Cognito аутентифицирует пользователей с помощью JSON Web Tokens (JWT).
  • Типичные сценарии: мобильные и веб-приложения, потоки входа.
  • Поддерживает федеративные удостоверения.
  • Работает с внешними провайдерами: Google, Apple, Facebook.
  • Корпоративные провайдеры — через SAML или OIDC.
  • Проверяет JWT нативно, без написания собственного кода авторизатора.

 

cogauthz

Разработка приложений на AWS

Lambda-авторизаторы

  • Функция Lambda выполняет вашу логику авторизации.
  • Она возвращает политику IAM, разрешающую или запрещающую доступ.
  • Используйте её для проверки пользовательских токенов.
  • Интегрируйтесь со сторонними провайдерами удостоверений.
  • Применяйте собственные правила доступа.

 

lambda authorizer

Разработка приложений на AWS

Lambda-авторизаторы

  • Пример: проверка JWT от провайдера, например Auth0.
  • Приходит запрос — API Gateway вызывает авторизатор.
  • Функция проверяет токен и возвращает политику IAM.
  • Политика определяет доступ: разрешить или запретить.
  • При разрешении запрос передаётся на серверную часть.
  • При отказе API Gateway немедленно возвращает 401.

 

lambda authorizer

Разработка приложений на AWS

Выбор авторизатора

 

choosing which authorizer

  • Используйте Cognito для пользовательских приложений.
  • Он обеспечивает управляемую регистрацию, вход и проверку токенов.
  • Собственный код не требуется.
  • Используйте Lambda, когда нужна нестандартная логика.
  • Подходит для сторонних провайдеров удостоверений.
  • А также для правил, выходящих за рамки возможностей Cognito.
Разработка приложений на AWS

Кеширование авторизатора

 

caching authz

  • Ответы авторизатора кешируются.
  • Это снижает задержки и стоимость для часто используемых эндпоинтов.
  • TTL кеша настраивается.
  • Диапазон — от 0 до 3600 секунд.
  • Значение по умолчанию — 300 секунд.
  • TTL = 0 отключает кеширование.
Разработка приложений на AWS

Политики ресурсов API Gateway

 

resource policies

  • Задавайте политики для управления доступом к API.
  • Ограничивайте доступ по учётной записи AWS.
  • Ограничивайте по диапазону IP-адресов.
  • Ограничивайте по VPC.
  • Помогает защитить внутренние API и сократить поверхность атаки.
Разработка приложений на AWS

Шифрование

  • API Gateway поддерживает HTTPS-эндпоинты с TLS по умолчанию.
  • HTTPS шифрует данные в транзите между клиентом и шлюзом.
  • Интегрируется с AWS Certificate Manager (ACM).
  • ACM упрощает управление сертификатами для пользовательских доменов.
  • Сертификаты для пользовательских доменов предоставляются бесплатно.
  • НИКОГДА не публикуйте API через незашифрованный HTTP.

 

encryption

Разработка приложений на AWS

Взаимный TLS (mTLS)

 

  • API Gateway поддерживает взаимный TLS (mTLS).
  • Аутентифицирует клиентов с помощью сертификатов.
  • Требует настроенного доменного имени.
  • Распространено при взаимодействии машина–машина.
  • Обе стороны проверяют подлинность друг друга.

 

mtls

Разработка приложений на AWS

Троттлинг и ограничение частоты запросов API

  • Троттлинг защищает серверные системы.
  • Повышает надёжность API.
  • Без него серверные сервисы могут перегружаться.
  • Ограничения частоты контролируют стабильный поток запросов в секунду.
  • Burst-лимиты допускают кратковременные пики трафика.
  • При превышении лимитов возвращается 429 Too Many Requests.

 

throttling

Разработка приложений на AWS

Защита от распространённых уязвимостей

 

waf

  • Подключите AWS WAF к API Gateway.
  • Он блокирует вредоносные запросы до того, как они достигнут API.
  • Останавливает попытки SQL-инъекций.
  • Останавливает межсайтовый скриптинг (XSS).
  • Блокирует трафик с известных вредоносных IP-адресов.
Разработка приложений на AWS

Планы использования и ключи API

 

usage plans

  • Управляйте тем, как клиенты потребляют ваши API.
  • Настраивайте квоты запросов.
  • Задавайте ограничения частоты.
  • Устанавливайте тарифные уровни.
  • Назначайте лимиты потребления для каждого клиента.
Разработка приложений на AWS

Совместное использование ресурсов между источниками (CORS)

 

CORS

  • CORS позволяет браузерам выполнять кросс-доменные запросы к API.
  • Без него корректные браузерные запросы могут блокироваться.
  • Слишком широкие настройки CORS создают угрозу безопасности.
  • Избегайте Access-Control-Allow-Origin: * в продакшене.
  • Всегда ограничивайте CORS доверенными источниками.
Разработка приложений на AWS

Заголовки CORS и предварительные запросы

  • Перед основным запросом выполняется предварительный запрос OPTIONS.
  • Он подтверждает, что API разрешает кросс-доменный доступ.
  • API Gateway добавляет необходимые заголовки CORS в ответ.
  • Для интеграций без прокси заголовки обрабатываются автоматически.
  • Для прокси-интеграций Lambda должна самостоятельно возвращать заголовки CORS.
  • Lambda также должна обрабатывать предварительный запрос OPTIONS.

 

CORS headers

Разработка приложений на AWS

Давайте потренируемся!

Разработка приложений на AWS

Preparing Video For Download...