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 los servicios administrados de backend (Cloud Run, Cloud Functions, App Engine, etc.) mediante estas acciones:

  • 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 a fin de 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 las funciones y los permisos que la cuenta de servicio de la puerta de enlace requiere 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 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 Cloud Functions, 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 Cloud Functions, como API Gateway, mediante el otorgamiento defunciones.

Cuando se otorgan roles y permisos con la IAM, puedes 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.

Otorgar la capacidad de invocar una función es distinto para las funciones de HTTP y las funciones en segundo plano.

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 al servicio de Cloud Functions, asegúrate de que la cuenta de servicio de la puerta de enlace tenga 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 permisos y los roles del 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.

Si quieres permitir que API Gateway llame a tu servicio de backend de App Engine, sigue los pasos que se indican en Configura el acceso de IAP para otorgar la función IAP-secured Web App User a la cuenta de servicio asociada con tu puerta de enlace. Además, otorga a la cuenta de servicio una función que contenga los siguientes permisos:

  • appengine.applications.update
  • clientauthconfig.clients.create
  • clientauthconfig.clients.getWithSecret