Elegir un autorizador de API Gateway

Uso de la seguridad de AWS para desarrolladores

Rahul Singh

Technical Product Manager

Se comprueba antes de ejecutar tu código

Una llamada pasa por el autorizador de API Gateway antes de llegar a tu código; si se rechaza, recibe un 401.

Pasa: la solicitud llega a tu código

Falla: 401 no autorizado; tu código no se ejecuta

Uso de la seguridad de AWS para desarrolladores

Quién hace la verificación

Tres autorizadores entre los que elegir
  1. IAM auth (AWS_IAM): AWS comprueba una firma

Una pila vertical en un eje desde que AWS hace la verificación hasta que la haces tú. Solo la primera tarjeta está rellena: IAM auth, donde AWS comprueba una firma.

Uso de la seguridad de AWS para desarrolladores

Quién hace la verificación

Tres autorizadores entre los que elegir
  1. IAM auth (AWS_IAM): AWS comprueba una firma
  2. Autorizador Cognito (COGNITO_USER_POOLS): AWS verifica un token
    • Firma, iss, aud, exp

La misma pila vertical con dos tarjetas rellenas: IAM auth, donde AWS comprueba una firma, y un autorizador Cognito, donde AWS verifica un token.

Uso de la seguridad de AWS para desarrolladores

Quién hace la verificación

Tres autorizadores entre los que elegir
  1. IAM auth (AWS_IAM): AWS comprueba una firma
  2. Autorizador Cognito (COGNITO_USER_POOLS): AWS verifica un token
    • Firma, iss, aud, exp
  3. Autorizador Lambda: tu función devuelve permitir o denegar
    • Para tokens que no son de Cognito

Tres autorizadores ordenados desde que AWS verifica hasta que lo haces tú: IAM auth donde AWS comprueba una firma, un autorizador Cognito donde AWS verifica un token, y un autorizador Lambda donde tú escribes la verificación.

Uso de la seguridad de AWS para desarrolladores

Ajusta la puerta a quien llama

 

Decide quien llama

 

  • Servicio interno: ya tiene credenciales de AWS

La primera de tres filas de emisor a autorizador: un servicio interno asignado a IAM auth.

Uso de la seguridad de AWS para desarrolladores

Ajusta la puerta a quien llama

 

Decide quien llama

 

  • Servicio interno: ya tiene credenciales de AWS
  • Usuario de app: lleva un token de Cognito

Dos de tres filas de emisor a autorizador: un servicio interno asignado a IAM auth y un usuario de app asignado a un autorizador Cognito.

Uso de la seguridad de AWS para desarrolladores

Ajusta la puerta a quien llama

 

Decide quien llama

 

  • Servicio interno: ya tiene credenciales de AWS
  • Usuario de app: lleva un token de Cognito
  • App socia: aporta su propia lógica de autorización

Tres emisores asignados al autorizador que necesitan: un servicio interno a IAM auth, un usuario de app a un autorizador Cognito y una app socia a un autorizador Lambda.

Uso de la seguridad de AWS para desarrolladores

Atiende al tipo de API

REST API

  • Los tres autorizadores, más políticas de recursos
  • Claves de API, limitación por cliente, validación de solicitudes, WAF

Tarjeta comparativa para una REST API, marcando IAM auth, un autorizador de Cognito, un autorizador Lambda y una política de recursos. La tarjeta HTTP API al lado aún no está rellena.

Uso de la seguridad de AWS para desarrolladores

Atiende al tipo de API

REST API

  • Los tres autorizadores, más políticas de recursos
  • Claves de API, limitación por cliente, validación de solicitudes, WAF

 

HTTP API

  • Autorizador JWT, cualquier emisor OIDC
  • Sin políticas de recursos; más barata y rápida

Dos tarjetas comparando qué autorizadores admite cada tipo de API: una REST API añade políticas de recursos, mientras una HTTP API cambia el autorizador Cognito por un autorizador JWT y no tiene políticas de recursos.

Uso de la seguridad de AWS para desarrolladores

El autorizador recuerda

Con caché para ahorrar tiempo

  • Primera llamada: se ejecuta el autorizador
  • Llamadas posteriores: se lee la respuesta en caché

La primera llamada ejecuta el autorizador y escribe un permitir en una caché con tiempo de vida; una llamada posterior lee ese permitir sin volver a ejecutar el autorizador.

Uso de la seguridad de AWS para desarrolladores

El autorizador recuerda

Con caché para ahorrar tiempo

  • Primera llamada: se ejecuta el autorizador
  • Llamadas posteriores: se lee la respuesta en caché

 

TTL de la caché

  • authorizerResultTtlInSeconds: 300 s por defecto, 3600 s máx.
  • Cero desactiva la caché

La primera llamada ejecuta el autorizador y escribe un permitir en una caché con tiempo de vida; una llamada posterior lee ese permitir sin volver a ejecutar el autorizador.

Uso de la seguridad de AWS para desarrolladores

Un permitir en caché puede sobrevivir a su permiso

Una línea temporal de dos carriles. El carril de permisos pasa de válido a revocado en el punto de revocación, mientras que el carril de permitir en caché sigue mostrando permitir más allá de ese punto, con la ventana tras la revocación sombreada.

En el momento de revocar

  • Permiso: revocado al instante
  • Permitir en caché: sigue concediendo
Uso de la seguridad de AWS para desarrolladores

Un permitir en caché puede sobrevivir a su permiso

La misma línea temporal de dos carriles con la ventana entre la revocación y el vencimiento del TTL sombreada y marcada como aún permitido, donde el permiso está revocado pero el permitir en caché sigue dando acceso.

La ventana intermedia

  • Permiso revocado; la caché no lo sabe
  • El acceso dura hasta que expire el TTL
Uso de la seguridad de AWS para desarrolladores

Un permitir en caché puede sobrevivir a su permiso

La misma línea temporal con una flecha sobre la ventana sombreada indicando que un TTL más corto adelanta el vencimiento y reduce el periodo en que un permiso revocado sigue dando acceso.

Controla esa ventana

  • TTL corto cuando la revocación debe ser rápida
  • TTL 0 en las rutas más sensibles
Uso de la seguridad de AWS para desarrolladores

Una llamada se salta la puerta principal

Un tercero dentro de tu cuenta

  • Asume un rol que creaste
  • Le entregas el ARN del rol

Un proveedor de monitorización entre dos cajas de clientes arriba y tu rol abajo. Tu caja entrega el ARN de su rol al proveedor, que asume tu rol. La segunda caja de cliente está atenuada y aún no entra en la historia.

Uso de la seguridad de AWS para desarrolladores

Una llamada se salta la puerta principal

Un tercero dentro de tu cuenta

  • Asume un rol que creaste
  • Le entregas el ARN del rol

El ARN del rol no es un secreto

El problema del «deputy» confundido

La segunda caja de cliente ahora está activa en rojo y entrega el ARN de tu rol como si fuera suyo. Dos flechas van del proveedor de monitorización a tu rol, una llamada por cliente, sin nada que las distinga.

Uso de la seguridad de AWS para desarrolladores

Una llamada se salta la puerta principal

Un tercero dentro de tu cuenta

  • Asume un rol que creaste
  • Le entregas el ARN del rol

El ARN del rol no es un secreto

El problema del «deputy» confundido

La solución: sts:ExternalId

  • El proveedor genera uno por cliente
  • Tu política de confianza exige la coincidencia

Tu rol ahora exige que el external ID sea igual a 12345. La llamada con 12345 llega al rol, y la llamada con 99999 se detiene con una cruz roja antes de llegar.

Uso de la seguridad de AWS para desarrolladores

¡Vamos a practicar!

Uso de la seguridad de AWS para desarrolladores

Preparing Video For Download...