Proteger los servicios de backend
Además de autenticar las solicitudes de los usuarios finales a la puerta de enlace implementada, es importante proteger el acceso entre API Gateway y tus servicios de backend. Puedes evitar el acceso público a tus servicios administrados de backend (Cloud Run, Cloud Run Functions, App Engine, etc.) de las siguientes maneras:
- Permite solo el acceso autenticado a tu servicio de backend.
- Otorgar los permisos necesarios a la cuenta de servicio asociada con la configuración de la API de tu puerta de enlace para que esta tenga autorización para invocar el backend
En esta página, se describen los pasos necesarios para proteger tu servicio de backend y se describen los roles y permisos que requiere la cuenta de servicio de la puerta de enlace para acceder a esos servicios.
Cloud Run
Todos los servicios de Cloud Run completamente administrados se implementan de forma privada de forma predeterminada, lo que significa que no se puede acceder a ellos sin proporcionar credenciales de autenticación en la solicitud.
Los servicios de Cloud Run están protegidos por IAM. De forma predeterminada, cualquier servicio que contenga el permiso run.routes.invoke
puede llamar a los servicios de Cloud Run.
Puedes configurar IAM en los servicios de Cloud Run (completamente administrados) para otorgar acceso a usuarios adicionales.
Para API Gateway, el acceso a los servicios de Cloud Run se habilita mediante la concesión de las funciones y los permisos adecuados a la cuenta de servicio de la puerta de enlace: la función roles/run.invoker
o una función que contenga el permiso run.routes.invoke
.
Puedes controlar el acceso de una puerta de enlace a un servicio individual con la IAM a nivel de servicio o a todos los servicios dentro de un proyecto con la IAM a nivel de proyecto.
Si se rechaza una solicitud de puerta de enlace al servicio de Cloud Run, asegúrate de que se otorga a la cuenta de servicio de la puerta de enlace la función roles/run.invoker
y de que la cuenta de servicio de la puerta de enlace tiene el permiso run.routes.invoke
. Obtén más información sobre las funciones y los permisos de invocador en la referencia de IAM de Cloud Run.
Cloud Functions
Para los servicios de backend de las funciones de Cloud Run, se usa Identity and Access Management (IAM) para controlar la capacidad de ver, crear, actualizar y borrar funciones. IAM aplica la autenticación de los emisores a los servicios de funciones de Cloud Run, como API Gateway, mediante el otorgamiento de roles.
Otorgar roles y permisos con IAM permite controlar dos conjuntos de acciones:
- Operaciones de desarrollador: crear, actualizar y borrar funciones, así como administrar el acceso a las funciones.
- Invocación de función: hace que se ejecute una función.
La capacidad de invocar una función difiere para las funciones de HTTP y las funciones en segundo plano.
- Las funciones de HTTP requieren autenticación de forma predeterminada. Puedes configurar IAM en funciones de HTTP para especificar si una función permite la invocación no autenticada.
- Las funciones en segundo plano solo se pueden invocar desde la fuente del evento al que están suscritas.
Para permitir que API Gateway llame a tu servicio de backend de Cloud Functions, otorga a la cuenta de servicio de la puerta de enlace la función roles/cloudfunctions.invoker
o cualquier función que contenga el permiso cloudfunctions.functions.invoke
.
Puedes controlar el acceso de una puerta de enlace a una función individual con la IAM a nivel de servicio o a todas las funciones de un proyecto con la IAM a nivel de proyecto.
Si se rechazan las solicitudes de una puerta de enlace a tu servicio de funciones de Cloud Run, asegúrate de que se otorgue a la cuenta de servicio de la puerta de enlace el rol roles/cloudfunctions.invoker
y de que la cuenta de servicio de la puerta de enlace tenga el permiso cloudfunctions.functions.invoke
. Obtén más información sobre los roles y los permisos de invocador en la referencia de IAM de Cloud Functions.
App Engine
Para proteger tu app de App Engine, debes usar el Identity Aware Proxy (IAP) a fin de asegurarte de que las solicitudes se autentiquen.
Sigue los pasos para habilitar IAP en el proyecto en el que se implementa el servicio de backend de App Engine. Habilitar IAP garantizará que el acceso a tu aplicación de backend de App Engine esté protegido.
Para permitir que API Gateway llame a tu servicio de backend de App Engine, sigue los pasos que se indican en Configuración del acceso a IAP para otorgar a la cuenta de servicio asociada con tu puerta de enlace el rol IAP-secured Web App User
. Además, otorga a la cuenta de servicio un rol que contenga los siguientes permisos:
appengine.applications.update
clientauthconfig.clients.create
clientauthconfig.clients.getWithSecret