Protege tus APIs

Desarrollo de aplicaciones en AWS

Ricardo Sueiras

Principal Technologist

Asegurar APIs en AWS

 

asegurar api

  • Asegurar APIs es clave en apps cloud-native.
  • Exponen funciones empresariales sensibles.
  • Suelen ser la entrada pública a sistemas back-end.
  • API Gateway te ayuda a exponer APIs con seguridad.
Desarrollo de aplicaciones en AWS

Autorización y autenticación

 

autenticación y autorización

  • Dos conceptos clave:
  • Autenticación: quién eres.
  • Autorización: qué puedes hacer.
Desarrollo de aplicaciones en AWS

Autorización con IAM

 

iam

  • API Gateway puede usar IAM para autenticación y autorización.
  • Protege APIs con Signature Version 4 (SigV4).
  • Los clientes firman cada solicitud.
  • API Gateway valida la firma antes de procesar.
  • Las políticas de IAM controlan qué puede invocar cada identidad.
  • Ideal para comunicación entre servicios de AWS.
Desarrollo de aplicaciones en AWS

Autorizadores de Amazon Cognito

  • Cognito autentica usuarios con JSON Web Tokens (JWT).
  • Casos comunes: apps móviles, web y flujos de inicio de sesión.
  • Admite identidades federadas.
  • Funciona con proveedores externos como Google, Apple y Facebook.
  • Proveedores empresariales vía SAML u OIDC.
  • Valida JWT de forma nativa, sin código de autorizador.

 

autorizadores cognito

Desarrollo de aplicaciones en AWS

Autorizadores Lambda

  • Una función Lambda ejecuta tu lógica de autorización personalizada.
  • Devuelve una política de IAM que permite o deniega acceso.
  • Úsalo para validar tokens personalizados.
  • Integra con proveedores de identidad externos.
  • Aplica tus propias reglas.

 

autorizador lambda

Desarrollo de aplicaciones en AWS

Autorizadores Lambda

  • Ejemplo: validar un JWT de un proveedor como Auth0.
  • Llega una solicitud y API Gateway invoca el autorizador.
  • La función valida el token y devuelve una política de IAM.
  • La política decide el acceso: permitir o denegar.
  • Si se permite, la solicitud va al back-end.
  • Si se deniega, API Gateway devuelve un 401 al instante.

 

autorizador lambda

Desarrollo de aplicaciones en AWS

Qué autorizador elegir

 

elegir autorizador

  • Elige Cognito para apps de cara al usuario.
  • Ofrece registro, inicio de sesión y validación de tokens gestionados.
  • Sin código personalizado.
  • Elige Lambda cuando necesites lógica a medida.
  • Útil con proveedores de identidad de terceros.
  • O reglas que vayan más allá de lo que admite Cognito.
Desarrollo de aplicaciones en AWS

Caché del autorizador

 

caché de autorización

  • Las respuestas del autorizador se almacenan en caché.
  • Reduce latencia y coste en endpoints frecuentes.
  • El TTL de caché es configurable.
  • De 0 a 3600 segundos.
  • Por defecto, 300 segundos.
  • Poner TTL en 0 desactiva la caché.
Desarrollo de aplicaciones en AWS

Políticas de recursos de API Gateway

 

políticas de recursos

  • Define políticas para controlar quién accede a una API.
  • Restringe por cuenta de AWS.
  • Restringe por rango de direcciones IP.
  • Restringe por VPC.
  • Ayuda a cerrar APIs internas y limitar su exposición.
Desarrollo de aplicaciones en AWS

Cifrado

  • API Gateway admite endpoints HTTPS con TLS por defecto.
  • HTTPS cifra los datos en tránsito entre cliente y gateway.
  • Se integra con AWS Certificate Manager (ACM).
  • ACM simplifica certificados para dominios personalizados.
  • Los certificados de dominio personalizado son gratuitos.
  • NUNCA expongas APIs por HTTP sin cifrar.

 

cifrado

Desarrollo de aplicaciones en AWS

TLS mutuo (mTLS)

 

  • API Gateway admite TLS mutuo (mTLS).
  • Autentica clientes con certificados.
  • Requiere un nombre de dominio configurado.
  • Común en comunicación máquina a máquina.
  • Ambas partes verifican la identidad de la otra.

 

mtls

Desarrollo de aplicaciones en AWS

Throttling y rate limiting en APIs

  • El throttling protege los sistemas back-end.
  • Mejora la fiabilidad de la API.
  • Sin él, los servicios back-end pueden saturarse.
  • Los límites de tasa controlan solicitudes por segundo.
  • Los límites de ráfaga permiten picos temporales.
  • Superar los límites devuelve 429 Too Many Requests.

 

limitación de velocidad

Desarrollo de aplicaciones en AWS

Protección frente a exploits comunes

 

waf

  • Adjunta AWS WAF a API Gateway.
  • Bloquea solicitudes maliciosas antes de tu API.
  • Detiene intentos de inyección SQL.
  • Detiene cross-site scripting (XSS).
  • Bloquea tráfico de rangos de IP maliciosos conocidos.
Desarrollo de aplicaciones en AWS

Planes de uso y claves de API

 

planes de uso

  • Controla cómo consumen tus APIs los clientes.
  • Configura cuotas de solicitudes.
  • Define límites de tasa.
  • Establece niveles de suscripción.
  • Asigna límites de consumo por cliente.
Desarrollo de aplicaciones en AWS

Cross-Origin Resource Sharing (CORS)

 

CORS

  • CORS permite a los navegadores hacer solicitudes entre orígenes.
  • Sin ello, solicitudes válidas del navegador podrían bloquearse.
  • Un CORS demasiado permisivo es un riesgo de seguridad.
  • Evita Access-Control-Allow-Origin: * en producción.
  • Restringe CORS siempre a orígenes de confianza.
Desarrollo de aplicaciones en AWS

Encabezados CORS y solicitudes preflight

  • Una solicitud OPTIONS de preflight va antes de la real.
  • Confirma que la API permite acceso entre orígenes.
  • API Gateway añade los encabezados CORS necesarios.
  • En integraciones Non-Proxy, los gestiona automáticamente.
  • En integraciones Proxy, tu Lambda debe devolver los encabezados CORS.
  • Tu Lambda también debe manejar el OPTIONS de preflight.

 

encabezados CORS

Desarrollo de aplicaciones en AWS

¡Vamos a practicar!

Desarrollo de aplicaciones en AWS

Preparing Video For Download...