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, funciones de Cloud Run, App Engine, etc.) de las siguientes maneras:

  • Permite solo el acceso autenticado a tu servicio de backend.
  • Otorga los permisos necesarios a la cuenta de servicio asociada con la configuración de la API de tu puerta de enlace para que esta esté autorizada a invocar el backend.

En esta página, se describen los pasos necesarios para proteger tu servicio de backend y los roles y permisos que requiere la cuenta de servicio de tu 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 otorgando a la cuenta de servicio de la puerta de enlace los roles y permisos adecuados: el rol roles/run.invoker o un rol que contenga el permiso run.routes.invoke.

Puedes controlar el acceso de una puerta de enlace a un servicio individual con IAM a nivel del servicio o a todos los servicios dentro de un proyecto con IAM a nivel del 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.

Funciones de Cloud Run

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 Cloud Run Functions, 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.

El proceso para otorgar la capacidad de invocar una función difiere para las funciones de HTTP y las funciones en segundo plano.

Para permitir que API Gateway llame a tu servicio de backend de Cloud Run Functions, otorga a la cuenta de servicio de la puerta de enlace el rol roles/cloudfunctions.invoker o cualquier rol 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 Cloud Run Functions, 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 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) para 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 Cómo configurar el acceso al 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

Otras Google Cloud APIs

API Gateway no admite el proxy a otras APIs de Google Cloud . Esto significa que las configuraciones de la API que hacen referencia a uno o más backends con *.googleapis.com (como bigquery.googleapis.com) generarán llamadas que fallarán con un código de respuesta 401.

API Gateway se autentica en los backends con un token de ID, mientras que otras APIs requieren un token de acceso. Google Cloud Por el momento, no hay soluciones integradas.