Control del acceso a una API con permisos de IAM - Amazon API Gateway

Control del acceso a una API con permisos de IAM

Puede controlar el acceso a su API de Amazon API Gateway con permisos de IAM controlando el acceso a los dos procesos de componentes de API Gateway siguientes:

  • Para crear, implementar y administrar una API en API Gateway, debe conceder al desarrollador de la API permisos para realizar las acciones necesarias admitidas por el componente de administración de la API de API Gateway.

  • Para llamar a una API implementada o para actualizar el almacenamiento en caché de la API, debe conceder al intermediario de la API permisos para realizar las acciones de IAM necesarias admitidas por el componente de ejecución de la API de API Gateway.

El control de acceso para los dos procesos implica diferentes modelos de permisos, que se explican a continuación.

Modelo de permisos de API Gateway para crear y administrar una API

Para permitir a un desarrollador de API crear y administrar una API en API Gateway debe crear políticas de permisos de IAM que permitan a un desarrollador de la API especificado crear, actualizar, implementar, ver o eliminar las entidades de API necesarias. Asocia la política de permisos a un usuario de IAM que representa al desarrollador, a un grupo de IAM que contiene al usuario o a un rol de IAM asumido por el usuario.

Para obtener más información sobre cómo usar este modelo de permisos, consulte Políticas basadas en identidades de API Gateway.

Modelo de permisos de API Gateway para invocar una API

Para permitir a un intermediario de la API invocar la API o actualizar su caché, debe crear políticas de IAM que permitan a un intermediario de la API especificado invocar el método de API para el que se ha habilitado la autenticación de usuarios de IAM. El desarrollador de la API establece la propiedad authorizationType del método en AWS_IAM para exigir que el intermediario envíe las clave de acceso del usuario de IAM que se va a autenticar. A continuación, asocia la política de permisos a un usuario de IAM que representa al intermediario de la API, a un grupo de IAM, que contiene al usuario o a un rol de IAM asumido por el usuario.

En esta instrucción de política de permisos de IAM, el elemento Resource de IAM contiene una lista de métodos de la API implementada identificados por verbos HTTP y rutas de recursos de API Gateway. El elemento Action de IAM contiene las acciones de ejecución de API de API Gateway necesarias. Estas acciones incluyen execute-api:Invoke o execute-api:InvalidateCache, donde execute-api designa el componente de ejecución de la API subyacente de API Gateway.

Para obtener más información sobre cómo usar este modelo de permisos, consulte Controlar el acceso para invocar una API.

Cuando una API está integrada con un servicio de AWS (por ejemplo, AWS Lambda) en el backend, API Gateway también debe tener permisos para obtener acceso a los recursos de AWS integrados (por ejemplo, invocar una función de Lambda) en nombre del intermediario de la API. Para otorgar estos permisos, cree un rol de IAM del tipo servicio de AWS para API Gateway. Cuando crea este rol en la consola de administración de IAM, este rol resultante contiene la siguiente política de confianza de IAM que designa a API Gateway como la entidad de confianza capaz de asumir el rol:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "apigateway.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Si crea el rol de IAM llamando al comando create-role de la CLI o a un método del SDK correspondiente, debe proporcionar la política de confianza anterior como el parámetro de entrada de assume-role-policy-document. No intente crear esta política directamente en la consola de administración de IAM ni llamando al comando de la AWS CLI create-policy ni a un método del SDK correspondiente.

Para que API Gateway llame al servicio de AWS integrado, también debe asociar a este rol las políticas de permisos de IAM correspondientes para llamar a los servicios de AWS integrados. Por ejemplo, para llamar a una función de Lambda, debe incluir la siguiente política de permisos de IAM en el rol de IAM:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "*" } ] }

Tenga en cuenta que Lambda admite la política de acceso basada en recursos, que combina políticas de confianza y de permisos. Cuando integre una API con una función de Lambda mediante la consola de API Gateway, no se le pedirá que establezca este rol de IAM explícitamente, porque la consola establece los permisos basados en recursos en la función de Lambda por usted, con su consentimiento.

nota

Para establecer el control del acceso a un servicio de AWS, puede utilizar el modelo de permisos basado en el intermediario, donde una política de permisos se asocia directamente al usuario o grupo de IAM del intermediario, o el modelo de permisos basado en rol, donde una política de permisos se asocia a un rol de IAM que API Gateway puede asumir. Los permisos de políticas pueden ser diferentes en los dos modelos. Por ejemplo, la política basada en el intermediario bloquea el acceso, mientras que la política basada en roles lo permite. Puede aprovechar esto para exigir que un usuario de IAM tenga acceso a un servicio de AWS únicamente a través de la API de API Gateway.