Autorización: IAM, Lambda Authorizers y Cognito
Proteja los endpoints de la API con firmas IAM SigV4, Lambda Authorizers personalizados o authorizers de Amazon Cognito User Pool.
Autorización: IAM, Lambda Authorizers y Cognito es una lección gratuita de Cloud & IT Cert Prep en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Cloud & IT Cert Prep, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Cloud & IT Cert Prep incluye 4 lecciones en total.
Por qué es importante la autorización de API
Sin controles de autorización, cualquier cliente de Internet podría llamar a los endpoints de API Gateway y acceder a los datos o modificarlos. API Gateway proporciona tres mecanismos de autorización nativos: IAM (SigV4), autorizadores de Lambda y autorizadores de grupos de usuarios de Amazon Cognito. Cada mecanismo se adapta a distintos casos de uso: IAM para llamadas entre servicios de AWS, los autorizadores de Lambda para autenticación personalizada basada en tokens o solicitudes, y Cognito para la autenticación de usuarios web o móviles.
Autorización de IAM con SigV4
La autorización de IAM requiere que los solicitantes firmen las solicitudes mediante AWS Signature Version 4 (SigV4). El solicitante debe tener credenciales de AWS (clave de acceso y clave secreta, o credenciales temporales de STS), y la política de IAM debe permitir execute-api:Invoke en el ARN de la API. Esto resulta ideal para llamadas entre máquinas (de servidor a servidor) dentro de AWS: Lambda llamando a otra API, EC2 llamando a una API interna o acceso entre cuentas a un servicio. Los clientes de navegador no pueden utilizar SigV4 fácilmente.
# IAM policy to allow invoking a specific API endpoint
{
'Version': '2012-10-17',
'Statement': [{
'Effect': 'Allow',
'Action': 'execute-api:Invoke',
'Resource': 'arn:aws:execute-api:us-east-1:123456789012:abc123/prod/GET/orders'
}]
}Autorizadores de Lambda: basados en tokens
Un autorizador de Lambda (antes denominado autorizador personalizado) es una función de Lambda que usted escribe y que API Gateway invoca antes de llamar a la integración del backend. En los autorizadores basados en tokens, API Gateway extrae un token (JWT, OAuth o clave de API) del encabezado Authorization y lo pasa a Lambda. Su función de Lambda valida el token (por ejemplo, verificando la firma de un JWT con una clave pública o llamando a un proveedor de identidad externo) y devuelve un documento de política de IAM que permite o deniega la solicitud.
def lambda_handler(event, context):
token = event['authorizationToken']
# Validate token (JWT verification, introspect OAuth, etc.)
if is_valid_token(token):
return {
'principalId': 'user123',
'policyDocument': {
'Version': '2012-10-17',
'Statement': [{'Effect': 'Allow', 'Action': 'execute-api:Invoke',
'Resource': event['methodArn']}]
},
'context': {'userId': 'user123', 'role': 'admin'}
}
raise Exception('Unauthorized')Autorizadores de Lambda: basados en solicitudes
En los autorizadores de Lambda basados en solicitudes, API Gateway pasa a Lambda todo el contexto de la solicitud (encabezados, cadenas de consulta, variables de etapa y parámetros de ruta), no solo un token. Esto resulta útil para una autorización que depende de varios atributos de la solicitud: listas de IP permitidas, combinaciones de encabezados o comprobaciones de autenticación multifactor. Los autorizadores basados en solicitudes son compatibles tanto con REST API como con HTTP API.
Almacenamiento en caché de autorizadores de Lambda
Llamar a un autorizador de Lambda en cada solicitud de API añade latencia y costes. Habilite el almacenamiento en caché del resultado del autorizador: almacene en caché la política de IAM devuelta por el autorizador durante un TTL configurable de 0 a 3600 segundos, utilizando el valor del token como clave. Las solicitudes posteriores con el mismo token omiten la invocación de Lambda y utilizan la política almacenada en caché. Establezca el TTL de acuerdo con el tiempo de expiración del token; si un token es válido durante 1 hora, almacene el resultado del autorizador durante el mismo periodo. El almacenamiento en caché está disponible en REST API; los autorizadores JWT de HTTP API incorporan esta función.
Autorizador de grupos de usuarios de Amazon Cognito
Los autorizadores de grupos de usuarios de Cognito validan directamente en API Gateway los JWT emitidos por Cognito, sin necesidad de una función de Lambda. Cuando un usuario se autentica mediante Cognito (a través de Hosted UI, el SDK o un proveedor de identidad federado), Cognito emite un token de ID o un token de acceso. El cliente incluye este token en el encabezado Authorization. API Gateway verifica la firma y la fecha de expiración del token con el grupo de usuarios de Cognito. Si es válido, la solicitud continúa; de lo contrario, API Gateway devuelve 401.
aws apigateway create-authorizer \
--rest-api-id 'abc123' \
--name 'CognitoAuthorizer' \
--type COGNITO_USER_POOLS \
--provider-arns 'arn:aws:cognito-idp:us-east-1:123456789012:userpool/us-east-1_XXXXXXX' \
--identity-source 'method.request.header.Authorization'Autorizador JWT en HTTP API
HTTP API admite de forma nativa los autorizadores JWT, sin Lambda. Debe especificar la URL del emisor del JWT (Cognito, Auth0 u Okta) y la audiencia; API Gateway validará los JWT automáticamente. Es, en esencia, un autorizador de grupos de usuarios de Cognito, pero también funciona con cualquier proveedor de OIDC compatible con los estándares. API Gateway realiza internamente la validación del token (firma, expiración y audiencia), lo que ofrece una latencia menor que los autorizadores de Lambda y no genera costes de Lambda.
aws apigatewayv2 create-authorizer \
--api-id 'abc123' \
--authorizer-type JWT \
--name 'JWTAuthorizer' \
--identity-source '$request.header.Authorization' \
--jwt-configuration '{
"Issuer": "https://cognito-idp.us-east-1.amazonaws.com/us-east-1_XXXXXXX",
"Audience": ["your-client-id"]
}'Grupos de identidades de Cognito frente a grupos de usuarios
Para la autorización de API, utilice grupos de usuarios de Cognito: gestionan la autenticación de usuarios y emiten JWT. Los grupos de identidades de Cognito (identidades federadas) son diferentes: intercambian tokens de terceros (de grupos de usuarios, inicios de sesión sociales o SAML) por credenciales temporales de AWS (mediante STS AssumeRoleWithWebIdentity). Los grupos de identidades se utilizan cuando la aplicación necesita acceder directamente a servicios de AWS (S3 o DynamoDB) desde el cliente. Para la autenticación de API Gateway, los JWT de los grupos de usuarios son la opción adecuada; las credenciales de los grupos de identidades se utilizan para llamadas directas al SDK de AWS desde el navegador o el móvil.
Políticas de recursos en API Gateway
Las API REST admiten políticas de recursos: políticas JSON asociadas a la API que controlan el acceso por dirección IP, endpoint de VPC, cuenta de origen o ARN. Utilice políticas de recursos para: permitir que solo determinados rangos de IP llamen a la API, restringir el acceso a solicitudes procedentes de un endpoint de VPC específico (API privada) o permitir invocaciones entre cuentas. Las políticas de recursos funcionan además de los autorizadores a nivel de método; ambos deben permitir la solicitud para que esta se procese correctamente.
# Allow only specific IP range to call the API
{
'Version': '2012-10-17',
'Statement': [{
'Effect': 'Allow',
'Principal': '*',
'Action': 'execute-api:Invoke',
'Resource': 'arn:aws:execute-api:us-east-1:123456789012:abc123/*',
'Condition': {'IpAddress': {'aws:SourceIp': '203.0.113.0/24'}}
}]
}Autenticación TLS mutua
TLS mutua (mTLS) requiere que tanto el cliente como el servidor presenten certificados durante el handshake de TLS. API Gateway admite mTLS para REST API y HTTP API cuando se configuran nombres de dominio personalizados. Los clientes deben presentar un certificado válido firmado por una entidad de certificación (CA) que usted cargue en un truststore de S3. mTLS se utiliza en servicios financieros, en la autenticación de dispositivos IoT y en integraciones B2B donde se requiere una verificación sólida de la identidad del cliente, más allá de la autenticación basada en tokens.
Elegir el tipo de autorizador adecuado
Selección de autorizadores para el examen SAA-C03: IAM (SigV4) → llamadas entre servicios de AWS dentro de la misma cuenta o entre cuentas; grupo de usuarios de Cognito → usuarios de aplicaciones web o móviles autenticados mediante Cognito; autorizador de Lambda → lógica de autenticación personalizada (proveedores de identidad externos, formatos de token heredados, introspección de OAuth o combinación de IP y token); autorizador JWT (HTTP API) → tokens OIDC/OAuth2 con cualquier proveedor compatible con los estándares, a un coste menor que los autorizadores de Lambda. Sin autorizador → API pública.
Comprobación rápida
Compruebe su comprensión de los conceptos de AWS Solutions Architect (SAA-C03) de esta lección.
Resumen de la lección
En esta lección ha aprendido lo siguiente: la autorización IAM (SigV4) se utiliza para llamadas entre servicios mediante credenciales de AWS; los autorizadores de grupos de usuarios de Cognito validan de forma nativa los JWT emitidos por Cognito para aplicaciones web y móviles; y los autorizadores de Lambda implementan una validación personalizada de tokens para proveedores de identidad externos o lógica de autorización compleja, con almacenamiento opcional de resultados en caché. A continuación, exploraremos la limitación de solicitudes, el almacenamiento en caché y los planes de uso en API Gateway.
Preguntas frecuentes
¿La lección «Autorización: IAM, Lambda Authorizers y Cognito» es gratis?
Sí — el texto completo de «Autorización: IAM, Lambda Authorizers y Cognito» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Cloud & IT Cert Prep, actualiza a CoddyKit PRO. El curso de Cloud & IT Cert Prep incluye 4 lecciones en total.
¿Qué aprenderé en «Autorización: IAM, Lambda Authorizers y Cognito»?
Proteja los endpoints de la API con firmas IAM SigV4, Lambda Authorizers personalizados o authorizers de Amazon Cognito User Pool. Practicas Cloud & IT Cert Prep con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Cloud & IT Cert Prep?
No se requiere experiencia previa. Cloud & IT Cert Prep en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Autorización: IAM, Lambda Authorizers y Cognito»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Cloud & IT Cert Prep?
Sí. Cada lección de Cloud & IT Cert Prep incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- REST API frente a HTTP API y WebSocket API
- Integraciones: Lambda, HTTP y Mock
- Autorización: IAM, Lambda Authorizers y Cognito
- Limitación, almacenamiento en caché y planes de uso