Захист ваших API

Розроблення застосунків на AWS

Ricardo Sueiras

Principal Technologist

Захист API в AWS

 

захист api

  • Захист API критично важливий для хмарних застосунків.
  • Вони надають доступ до чутливої бізнес-логіки.
  • Часто це публічна точка входу до бекенду.
  • API Gateway допомагає безпечно публікувати API.
Розроблення застосунків на AWS

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

 

автентифікація й авторизація

  • Два ключові поняття:
  • Authentication: хто ви.
  • Authorization: що вам дозволено робити.
Розроблення застосунків на 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

Який авторизатор обрати

 

вибір авторизатора

  • Обирайте Cognito для користувацьких застосунків.
  • Дає керований реєстр, вхід і перевірку токенів.
  • Власний код не потрібен.
  • Обирайте Lambda, коли потрібна своя логіка.
  • Підходить для сторонніх провайдерів ідентичності.
  • Або для правил понад можливості Cognito.
Розроблення застосунків на AWS

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

 

кешування авторизації

  • Відповіді авторизатора кешуються.
  • Це зменшує затримку й вартість на частих ендпойнтах.
  • TTL кешу налаштовується.
  • Діапазон: від 0 до 3600 секунд.
  • Типово — 300 секунд.
  • TTL = 0 вимикає кешування.
Розроблення застосунків на AWS

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

 

політики ресурсів

  • Визначайте політики, хто може доступатися до API.
  • Обмежуйте за обліковим записом AWS.
  • Обмежуйте за діапазоном IP-адрес.
  • Обмежуйте за VPC.
  • Допомагає закрити внутрішні API та зменшити експозицію.
Розроблення застосунків на AWS

Шифрування

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

 

шифрування

Розроблення застосунків на AWS

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

 

  • API Gateway підтримує взаємний TLS (mTLS).
  • Автентифікує клієнтів за сертифікатами.
  • Потрібно налаштоване доменне ім'я.
  • Поширено для взаємодії «машина до машини».
  • Обидві сторони перевіряють особу одна одної.

 

mtls

Розроблення застосунків на AWS

Обмеження швидкості та rate limiting в API

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

 

обмеження швидкості

Розроблення застосунків на AWS

Захист від типових атак

 

waf

  • Під'єднайте AWS WAF до API Gateway.
  • Блокує зловмисні запити до того, як вони дістануться API.
  • Зупиняє спроби SQL-ін'єкцій.
  • Блокує міжсайтові сценарії (XSS).
  • Відсікає трафік із відомих зловмисних діапазонів IP.
Розроблення застосунків на AWS

Плани використання та ключі API

 

плани використання

  • Керуйте тим, як клієнти споживають ваші API.
  • Налаштовуйте квоти запитів.
  • Визначайте ліміти швидкості.
  • Задавайте рівні підписок.
  • Призначайте ліміти споживання для кожного клієнта.
Розроблення застосунків на AWS

Cross-Origin Resource Sharing (CORS)

 

CORS

  • CORS дозволяє браузерам надсилати міждоменно запити до API.
  • Без нього коректні запити з браузера можуть блокуватись.
  • Надто широкі налаштування CORS — ризик безпеки.
  • У продакшені уникайте Access-Control-Allow-Origin: *.
  • Завжди обмежуйте CORS довіреними джерелами.
Розроблення застосунків на AWS

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

  • Попередній запит OPTIONS виконується перед основним.
  • Підтверджує, що API дозволяє міждоменно доступ.
  • API Gateway додає потрібні заголовки відповіді CORS.
  • Для Non-Proxy інтеграцій — робить це автоматично.
  • Для Proxy інтеграцій ваша Lambda має повертати заголовки CORS.
  • Ваша Lambda також має обробляти попередній OPTIONS.

 

заголовки CORS

Розроблення застосунків на AWS

Давайте потренуємось!

Розроблення застосунків на AWS

Preparing Video For Download...