Ochrana tvých API

Developing Applications on AWS

Ricardo Sueiras

Principal Technologist

Zabezpečení API na AWS

 

zabezpečení api

  • Zabezpečení API je klíčové pro cloud-native aplikace.
  • Vystavují citlivé obchodní funkce.
  • Jsou často veřejným vstupním bodem do back-endových systémů.
  • API Gateway ti pomůže bezpečně publikovat API.
Developing Applications on AWS

Autorizace a autentizace

 

autentizace a autorizace

  • Dva klíčové pojmy:
  • Autentizace: kdo jsi.
  • Autorizace: co smíš dělat.
Developing Applications on AWS

IAM autorizace

 

iam

  • API Gateway může k autentizaci a autorizaci využít IAM.
  • Zabezpečí API pomocí Signature Version 4 (SigV4).
  • Klienti podepisují každý požadavek.
  • API Gateway ověří podpis před zpracováním.
  • IAM politiky řídí, co může každá identita vyvolat.
  • Nejlepší volba pro komunikaci mezi službami AWS.
Developing Applications on AWS

Autorizátory Amazon Cognito

  • Cognito ověřuje uživatele pomocí JSON Web Tokens (JWT).
  • Typické případy: mobilní aplikace, webové aplikace, přihlašování.
  • Podporuje federované identity.
  • Funguje s externími poskytovateli jako Google, Apple nebo Facebook.
  • Podnikové poskytovatele přes SAML nebo OIDC.
  • JWT ověřuje nativně – bez vlastního kódu autorizátoru.

 

cognito autorizace

Developing Applications on AWS

Lambda autorizátory

  • Lambda funkce spouští vlastní autorizační logiku.
  • Vrátí IAM politiku povolující nebo zamítající přístup.
  • Slouží k ověřování vlastních tokenů.
  • Umožňuje integraci s externími poskytovateli identit.
  • Prosazuje vlastní pravidla.

 

lambda autorizátor

Developing Applications on AWS

Lambda autorizátory

  • Příklad: ověření JWT od poskytovatele jako Auth0.
  • Přijde požadavek a API Gateway vyvolá autorizátor.
  • Funkce ověří token a vrátí IAM politiku.
  • Politika rozhodne o přístupu: povolit nebo zamítnout.
  • Pokud je povolen, požadavek se přepošle do back-endu.
  • Pokud je zamítnut, API Gateway ihned vrátí 401.

 

lambda autorizátor

Developing Applications on AWS

Který autorizátor zvolit

 

výběr autorizátoru

  • Pro uživatelské aplikace zvol Cognito.
  • Nabízí správu registrace, přihlášení a ověřování tokenů.
  • Bez vlastního kódu.
  • Lambda autorizátor zvol při potřebě vlastní logiky.
  • Vhodný pro poskytovatele identit třetích stran.
  • Nebo pro pravidla nad rámec možností Cognita.
Developing Applications on AWS

Ukládání autorizace do cache

 

ukládání autorizace do cache

  • Odpovědi autorizátoru se ukládají do cache.
  • Snižuje latenci a náklady u frekventovaných endpointů.
  • TTL cache je konfigurovatelné.
  • Rozsah je 0 až 3 600 sekund.
  • Výchozí hodnota je 300 sekund.
  • Nastavení TTL na 0 cache vypne.
Developing Applications on AWS

Politiky prostředků API Gateway

 

politiky prostředků

  • Definuj politiky řídící přístup k API.
  • Omez přístup podle účtu AWS.
  • Omez přístup podle rozsahu IP adres.
  • Omez přístup podle VPC.
  • Pomáhá zabezpečit interní API a omezit jejich vystavení.
Developing Applications on AWS

Šifrování

  • API Gateway podporuje HTTPS endpointy s TLS ve výchozím nastavení.
  • HTTPS šifruje přenášená data mezi klientem a gateway.
  • Integruje se s AWS Certificate Manager (ACM).
  • ACM zjednodušuje správu certifikátů pro vlastní domény.
  • Certifikáty pro vlastní domény jsou zdarma.
  • API nikdy nevystavuj přes nešifrované HTTP.

 

šifrování

Developing Applications on AWS

Vzájemné TLS (mTLS)

 

  • API Gateway podporuje vzájemné TLS (mTLS).
  • Ověřuje klienty pomocí certifikátů.
  • Vyžaduje nakonfigurovaný název domény.
  • Běžné pro komunikaci stroj–stroj.
  • Obě strany si navzájem ověřují identitu.

 

mtls

Developing Applications on AWS

Throttling a rate limiting API

  • Throttling chrání back-endové systémy.
  • Zvyšuje spolehlivost API.
  • Bez něj mohou být back-endové služby přetíženy.
  • Rate limity řídí stabilní počet požadavků za sekundu.
  • Burst limity umožňují krátkodobé špičky provozu.
  • Překročení limitů vrátí 429 Too Many Requests.

 

throttling

Developing Applications on AWS

Ochrana před běžnými útoky

 

waf

  • Připoj AWS WAF k API Gateway.
  • Blokuje škodlivé požadavky dříve, než dosáhnou tvého API.
  • Zastaví pokusy o SQL injection.
  • Zastaví cross-site scripting (XSS).
  • Blokuje provoz ze známých škodlivých rozsahů IP adres.
Developing Applications on AWS

Plány využití a API klíče

 

plány využití

  • Řiď, jak klienti využívají tvá API.
  • Nastav kvóty požadavků.
  • Definuj rate limity.
  • Nastav úrovně předplatného.
  • Přiřaď limity spotřeby pro každého klienta.
Developing Applications on AWS

Cross-Origin Resource Sharing (CORS)

 

CORS

  • CORS umožňuje prohlížečům odesílat cross-origin požadavky na API.
  • Bez něj mohou být platné požadavky prohlížeče blokovány.
  • Příliš volné CORS nastavení je bezpečnostní riziko.
  • V produkci nepoužívej Access-Control-Allow-Origin: *.
  • CORS vždy omez na důvěryhodné zdroje.
Developing Applications on AWS

CORS hlavičky a preflight požadavky

  • Před skutečným požadavkem proběhne preflight požadavek OPTIONS.
  • Ověří, zda API povoluje cross-origin přístup.
  • API Gateway přidá potřebné CORS hlavičky odpovědi.
  • U Non-Proxy integrací je zpracovává automaticky.
  • U Proxy integrací musí tvá Lambda CORS hlavičky vracet sama.
  • Tvá Lambda musí také zpracovat preflight OPTIONS.

 

CORS hlavičky

Developing Applications on AWS

Pojďme cvičit!

Developing Applications on AWS

Preparing Video For Download...