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 su API Gateway APIs ayuda a garantizar que su aplicación sin servidor sea segura y solo se pueda acceder a ella mediante la autorización que habilite. Puedes habilitar la autorización en tu AWS SAM plantilla para controlar quién puede acceder a tu API Gateway APIs.

AWS SAM admite varios mecanismos para controlar el acceso a su API Gateway APIs. 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
OAuth autorizadores 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 sobre los autorizadores Lambda conAWS::Serverless::HttpApi, consulte Trabajar con AWS Lambda autorizadores para HTTP en la Guía para desarrolladores de APIs API Gateway. Para obtener más información sobre los autorizadores de Lambda con AWS::Serverless::Api, consulta 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, consulta Ejemplos de autorizadores Lambda para AWS SAM.

  • 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, consulta Control del acceso a las API con permisos de IAM en la Guía para desarrolladores de API Gateway. Para ver un ejemplo, consulta Ejemplo de permiso de IAM para AWS SAM.

  • 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, consulta 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, consulta Ejemplo de grupo de usuarios de Amazon Cognito para AWS SAM.

  • 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, consulta 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, consulta Ejemplo de clave de API para AWS SAM.

  • 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 AWS::Serverless::Api recurso admite las políticas de recursos como mecanismo para controlar el acceso a API Gateway APIs.

    Para obtener más información sobre las políticas de recursos, consulta 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, consulta Ejemplo de política de recursos para AWS SAM.

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

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

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

Elegir un mecanismo para controlar el acceso

El mecanismo que elija utilizar para controlar el acceso a su API Gateway APIs 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 tu 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 tu 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 hayas elegido qué mecanismo usar, consulta la sección correspondiente en la sección correspondiente Ejemplos para saber cómo configurar tu aplicación para que use 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, consulta el tema Respuestas de Gateway en API Gateway en la Guía para desarrolladores de API Gateway. Para ver un ejemplo de respuestas personalizadas, consulta Ejemplo de respuesta personalizada para AWS SAM.

Ejemplos