Ochrona API

Tworzenie aplikacji na AWS

Ricardo Sueiras

Principal Technologist

Zabezpieczanie API w AWS

 

securing api

  • Zabezpieczanie API to podstawa aplikacji natywnych dla chmury.
  • Udostępniają one wrażliwe funkcje biznesowe.
  • Często stanowią publiczny punkt wejścia do systemów back-endowych.
  • API Gateway pomaga bezpiecznie udostępniać API.
Tworzenie aplikacji na AWS

Autoryzacja i uwierzytelnianie

 

authnauthz

  • Dwa kluczowe pojęcia:
  • Uwierzytelnianie: kim jesteś.
  • Autoryzacja: co możesz robić.
Tworzenie aplikacji na AWS

Autoryzacja IAM

 

iam

  • API Gateway może używać IAM do uwierzytelniania i autoryzacji.
  • Zabezpiecza API za pomocą Signature Version 4 (SigV4).
  • Klienci podpisują każde żądanie.
  • API Gateway weryfikuje podpis przed przetworzeniem.
  • Polityki IAM kontrolują, co może wywoływać każda tożsamość.
  • Najlepsze rozwiązanie dla komunikacji między usługami AWS.
Tworzenie aplikacji na AWS

Autoryzatory Amazon Cognito

  • Cognito uwierzytelnia użytkowników za pomocą tokenów JSON Web Token (JWT).
  • Typowe zastosowania: aplikacje mobilne, webowe, przepływy logowania.
  • Obsługuje tożsamości federacyjne.
  • Współpracuje z zewnętrznymi dostawcami: Google, Apple, Facebook.
  • Dostawcy korporacyjni przez SAML lub OIDC.
  • Waliduje tokeny JWT natywnie — bez własnego kodu autoryzatora.

 

cogauthz

Tworzenie aplikacji na AWS

Autoryzatory Lambda

  • Funkcja Lambda wykonuje własną logikę autoryzacji.
  • Zwraca politykę IAM zezwalającą na dostęp lub go odmawiającą.
  • Używaj jej do walidacji własnych tokenów.
  • Integruj z zewnętrznymi dostawcami tożsamości.
  • Wymuszaj niestandardowe reguły dostępu.

 

lambda authorizer

Tworzenie aplikacji na AWS

Autoryzatory Lambda

  • Przykład: walidacja tokenu JWT od dostawcy takiego jak Auth0.
  • Żądanie trafia do API Gateway, który wywołuje autoryzator.
  • Funkcja waliduje token i zwraca politykę IAM.
  • Polityka decyduje o dostępie: zezwolenie lub odmowa.
  • Jeśli dostęp jest przyznany, żądanie trafia do back-endu.
  • Jeśli odmówiono, API Gateway natychmiast zwraca błąd 401.

 

lambda authorizer

Tworzenie aplikacji na AWS

Który autoryzator wybrać?

 

choosing which authorizer

  • Wybierz Cognito do aplikacji użytkownika.
  • Zapewnia gotową rejestrację, logowanie i walidację tokenów.
  • Bez pisania własnego kodu.
  • Wybierz Lambda, gdy potrzebujesz własnej logiki.
  • Sprawdza się przy zewnętrznych dostawcach tożsamości.
  • Albo gdy reguły wykraczają poza możliwości Cognito.
Tworzenie aplikacji na AWS

Buforowanie autoryzatora

 

caching authz

  • Odpowiedzi autoryzatora są buforowane.
  • Zmniejsza to opóźnienia i koszty na popularnych endpointach.
  • TTL bufora jest konfigurowalny.
  • Zakres od 0 do 3600 sekund.
  • Wartość domyślna to 300 sekund.
  • Ustawienie TTL na 0 wyłącza buforowanie.
Tworzenie aplikacji na AWS

Polityki zasobów API Gateway

 

resource policies

  • Definiuj polityki kontrolujące dostęp do API.
  • Ogranicz dostęp według konta AWS.
  • Ogranicz według zakresu adresów IP.
  • Ogranicz według VPC.
  • Pomaga chronić wewnętrzne API i ograniczać ich ekspozycję.
Tworzenie aplikacji na AWS

Szyfrowanie

  • API Gateway domyślnie obsługuje HTTPS z TLS.
  • HTTPS szyfruje dane w tranzycie między klientem a bramą.
  • Integruje się z AWS Certificate Manager (ACM).
  • ACM upraszcza zarządzanie certyfikatami dla własnych domen.
  • Certyfikaty dla własnych domen są bezpłatne.
  • NIGDY nie udostępniaj API przez nieszyfrowane HTTP.

 

encryption

Tworzenie aplikacji na AWS

Wzajemny TLS (mTLS)

 

  • API Gateway obsługuje wzajemne TLS (mTLS).
  • Uwierzytelnia klientów za pomocą certyfikatów.
  • Wymaga skonfigurowanej nazwy domeny.
  • Typowe przy komunikacji maszyna–maszyna.
  • Obie strony wzajemnie weryfikują swoją tożsamość.

 

mtls

Tworzenie aplikacji na AWS

Throttling i limity żądań API

  • Throttling chroni systemy back-endowe.
  • Zwiększa niezawodność API.
  • Bez niego usługi back-endowe mogą zostać przeciążone.
  • Limity przepustowości kontrolują stałą liczbę żądań na sekundę.
  • Limity skoków pozwalają na chwilowe wzrosty ruchu.
  • Przekroczenie limitów zwraca 429 Too Many Requests.

 

throttling

Tworzenie aplikacji na AWS

Ochrona przed typowymi atakami

 

waf

  • Podłącz AWS WAF do API Gateway.
  • Blokuje złośliwe żądania, zanim dotrą do API.
  • Zatrzymuje ataki SQL injection.
  • Zatrzymuje ataki cross-site scripting (XSS).
  • Blokuje ruch ze znanych złośliwych zakresów IP.
Tworzenie aplikacji na AWS

Plany użycia i klucze API

 

usage plans

  • Kontroluj, jak klienci korzystają z twoich API.
  • Konfiguruj limity żądań.
  • Definiuj ograniczenia przepustowości.
  • Ustalaj poziomy subskrypcji.
  • Przypisuj limity zużycia dla poszczególnych klientów.
Tworzenie aplikacji na AWS

Współdzielenie zasobów między źródłami (CORS)

 

CORS

  • CORS pozwala przeglądarkom wysyłać żądania API z innych źródeł.
  • Bez niego poprawne żądania przeglądarki mogą być blokowane.
  • Zbyt liberalny CORS to zagrożenie bezpieczeństwa.
  • Unikaj Access-Control-Allow-Origin: * w środowisku produkcyjnym.
  • Zawsze ogranicz CORS do zaufanych źródeł.
Tworzenie aplikacji na AWS

Nagłówki CORS i żądania wstępne

  • Żądanie wstępne OPTIONS jest wysyłane przed właściwym żądaniem.
  • Potwierdza, że API dopuszcza dostęp z innego źródła.
  • API Gateway dodaje wymagane nagłówki odpowiedzi CORS.
  • Dla integracji Non-Proxy obsługuje je automatycznie.
  • Dla integracji Proxy twoja Lambda musi zwracać nagłówki CORS.
  • Twoja Lambda musi też obsługiwać żądanie wstępne OPTIONS.

 

CORS headers

Tworzenie aplikacji na AWS

Czas na praktykę!

Tworzenie aplikacji na AWS

Preparing Video For Download...