Controla el acceso a la API con tu AWS SAM plantilla - AWS Serverless Application Model

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Controla el acceso a la API con tu AWS SAM plantilla

Controlar el acceso a las API de API Gateway ayuda a garantizar que tu aplicación sin servidor sea segura y solo se pueda acceder a ella mediante la autorización que habilites. Puedes habilitar la autorización en tu AWS SAM plantilla para controlar quién puede acceder a tus API de API Gateway.

AWS SAM admite varios mecanismos para controlar el acceso a las API de API Gateway. El conjunto de mecanismos admitidos varía entre los tipos de recursos AWS::Serverless::HttpApi y AWS::Serverless::Api.

En la tabla siguiente se resumen los mecanismos que admite cada tipo de recurso.

Mecanismos para controlar el acceso AWS::Serverless::HttpApi AWS::Serverless::Api
Autorizadores de Lambda
Permisos de IAM
Grupos de usuarios de Amazon Cognito ✓ *
Claves de API
Políticas de recursos
Autorizadores de OAuth 2.0/JWT

* Puede utilizar Amazon Cognito como emisor de un token web JSON (JWT) con el tipo de recurso AWS::Serverless::HttpApi.

  • Autorizadores de Lambda: un autorizador de Lambda (que anteriormente se denominaba autorizador personalizado) es una función de Lambda que se proporciona para controlar el acceso a los métodos de la API. Cuando se llama a su API, esta función de Lambda se invoca con un contexto de solicitud o un token de autorización que proporciona la aplicación cliente. La función de Lambda responde si la persona que llama está autorizada a realizar la operación solicitada.

    Tanto el tipo de recurso AWS::Serverless::HttpApi como el tipo de recurso AWS::Serverless::Api admiten autorizadores de Lambda.

    Para obtener más información acerca de los autorizadores de Lambda para AWS::Serverless::HttpApi, consulte Trabajar con autorizadores AWS Lambda para API HTTP en la Guía para desarrolladores de API Gateway. Para obtener más información sobre los autorizadores de Lambda con AWS::Serverless::Api, consulte Uso de autorizadores Lambda en la Guía para desarrolladores de API Gateway.

    Para ver ejemplos de autorizadores de Lambda para cualquier tipo de recurso, consulte Ejemplos de autorizadores de Lambda.

  • Permisos de IAM: puede controlar quién puede invocar su API mediante los permisos de AWS Identity and Access Management (IAM). Los usuarios que llamen a su API deben estar autenticados con credenciales de IAM. Las llamadas a su API solo se realizan correctamente si hay una política de IAM asociada al usuario de IAM que represente a la persona que llama a la API, un grupo de IAM que contenga al usuario o un rol de IAM que asuma el usuario.

    Solo el tipo de recurso AWS::Serverless::Api admite los permisos de IAM.

    Para obtener más información, consulte Control del acceso a las API con permisos de IAM en la Guía para desarrolladores de API Gateway. Para ver un ejemplo, consulte Permisos de IAM de ejemplo.

  • Grupos de usuarios de Amazon Cognito: los grupos de usuarios de Amazon Cognito son directorios de usuarios de Amazon Cognito. Un cliente de su API primero debe iniciar sesión con un usuario en el grupo de usuarios y obtener una identidad o un token de acceso para el usuario. A continuación, el cliente llama a la API con uno de los tokens devueltos. La llamada a la API solo se realiza correctamente si el token requerido es válido.

    El tipo de recurso AWS::Serverless::Api admite grupos de usuarios de Amazon Cognito. El tipo de recurso AWS::Serverless::HttpApi admite el uso de Amazon Cognito como emisor de JWT.

    Para obtener más información, consulte Control del acceso a una API de REST con grupos de usuarios de Amazon Cognito como autorizador en la Guía para desarrolladores de API Gateway. Para ver un ejemplo, consulte Ejemplo de grupo de usuarios de Amazon Cognito.

  • Claves de API: son valores de cadenas alfanuméricas que distribuye a los clientes desarrolladores de aplicaciones para concederles acceso a su API.

    Solo el tipo de recurso AWS::Serverless::Api admite claves de API.

    Para obtener más información sobre claves de API, consulte el tema Creación y utilización de planes de uso de claves API en la Guía para desarrolladores de API Gateway. Para ver un ejemplo de claves de API, consulte Ejemplo de clave de API.

  • Políticas basadas en recursos: son documentos de política JSON que se adjuntan a una API de API Gateway. Utilice políticas de recursos para controlar si una entidad principal especificada (normalmente un usuario o rol de IAM) puede invocar la API.

    Solo el tipo de recurso AWS::Serverless::Api admite las políticas de recursos como mecanismo para controlar el acceso a las API de API Gateway.

    Para obtener más información sobre las políticas de recursos, consulte Controlar el acceso a una API con las políticas de recursos de API Gateway en la Guía para desarrolladores de API Gateway. Para ver ejemplos de políticas de recursos, consulte Ejemplo de política de recursos.

  • Autorizadores de OAuth 2.0/JWT: puede utilizar los JWT como parte de los marcos OpenID Connect (OIDC) y OAuth 2.0 para controlar el acceso a las API. API Gateway valida los JWT que envían los clientes con solicitudes de la API y permite o deniega las solicitudes basándose en la validación del token y, opcionalmente, de los ámbitos del token.

    Solo el tipo de recurso AWS::Serverless::HttpApi admite los autorizadores de OAuth 2.0/JWT.

    Para obtener más información, consulte Control del acceso a las API HTTP con autorizadores de JWT en la Guía para desarrolladores de API Gateway. Para ver un ejemplo, consulte Ejemplo de autorizadores de OAuth 2.0/JWT.

Elegir un mecanismo para controlar el acceso

El mecanismo que elija utilizar para controlar el acceso a las API de API Gateway depende de varios factores. Por ejemplo, si tiene un proyecto totalmente nuevo sin configurar la autorización ni el control de acceso, los grupos de usuarios de Amazon Cognito podrían ser su mejor opción. Esto se debe a que, al configurar grupos de usuarios, también configura automáticamente la autenticación y el control de acceso.

Sin embargo, si su aplicación ya tiene configurada la autenticación, la mejor opción podría ser utilizar autorizadores de Lambda. Esto se debe a que puede llamar a su servicio de autenticación actual y devolver un documento de política en función de la respuesta. Además, si su aplicación requiere una autenticación personalizada o una lógica de control de acceso que los grupos de usuarios no admiten, los autorizadores de Lambda podrían ser su mejor opción.

Cuando haya elegido qué mecanismo utilizar, consulte la sección correspondiente en la sección correspondiente Ejemplos para saber cómo configurar la aplicación para que utilice ese mecanismo. AWS SAM

Personalizar respuestas de error

Se puede utilizar AWS SAM para personalizar el contenido de algunas respuestas de error de API Gateway. Solo el tipo de recurso AWS::Serverless::Api admite respuestas personalizadas de API Gateway.

Para obtener más información, consulte el tema Respuestas de Gateway en API Gateway en la Guía para desarrolladores de API Gateway. Para ver un ejemplo de respuestas personalizadas, consulte Respuesta personalizada de ejemplo.

Ejemplos