Proteger servicios de backend

Además de autenticar las solicitudes de los usuarios finales a tu pasarela implementada, es importante proteger el acceso entre API Gateway y tus servicios de backend. Puedes impedir el acceso público a tus servicios gestionados de backend (Cloud Run, funciones de Cloud Run, App Engine, etc.) de las siguientes formas:

  • Permitir solo el acceso autenticado a tu servicio de backend.
  • Conceder los permisos necesarios a la cuenta de servicio asociada a la configuración de la API de tu pasarela para que esta tenga autorización para invocar el backend.

En esta página se describen los pasos necesarios para proteger tu servicio backend y los roles y permisos que necesita la cuenta de servicio de tu gateway para acceder a esos servicios.

Cloud Run

Todos los servicios totalmente gestionados de Cloud Run se despliegan 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, los servicios de Cloud Run pueden invocarse con cualquier rol que contenga el permiso run.routes.invoke.

Puedes configurar IAM en servicios de Cloud Run (completamente gestionado) para conceder acceso a más usuarios.

En API Gateway, el acceso a los servicios de Cloud Run se habilita asignando a la cuenta de servicio de la pasarela 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 pasarela a un servicio concreto con la gestión de identidades y accesos a nivel de servicio o a todos los servicios de un proyecto con la gestión de identidades y accesos a nivel de proyecto.

Si se rechaza la solicitud de una pasarela a tu servicio de Cloud Run, asegúrate de que la cuenta de servicio de la pasarela tenga asignado el rol roles/run.invoker y de que tenga el permiso run.routes.invoke. Consulta más información sobre los roles y permisos de invocador en la referencia de gestión de identidades y accesos de Cloud Run.

Cloud Run Functions

En el caso de los servicios backend de las funciones de Cloud Run, se usa Gestión de Identidades y Accesos (IAM) para controlar la capacidad de ver, crear, actualizar y eliminar funciones. IAM aplica la autenticación de las llamadas a los servicios de funciones de Cloud Run, como API Gateway, mediante la concesión de roles.

Conceder roles y permisos con Gestión de identidades y accesos permite controlar dos conjuntos de acciones:

  • Operaciones de desarrollador: crear, actualizar y eliminar funciones, así como gestionar el acceso a las funciones.
  • Invocación de funciones: hace que se ejecute una función.

La forma de conceder la capacidad de invocar una función varía en función de si se trata de una función HTTP o de una función en segundo plano.

Para permitir que API Gateway llame a tu servicio de backend de Cloud Functions, concede a la cuenta de servicio de la pasarela el rol roles/cloudfunctions.invoker o cualquier rol que contenga el permiso cloudfunctions.functions.invoke.

Puedes controlar el acceso de una pasarela a una función concreta con la gestión de identidades y accesos a nivel de servicio o a todas las funciones de un proyecto con la gestión de identidades y accesos a nivel de proyecto.

Si se rechazan las solicitudes de una pasarela a tu servicio de funciones de Cloud Run, asegúrate de que la cuenta de servicio de la pasarela tenga asignado el rol roles/cloudfunctions.invoker y de que la cuenta de servicio de la pasarela tenga el permiso cloudfunctions.functions.invoke. Consulta más información sobre los roles y permisos de invocador en la referencia de gestión de identidades y accesos de Cloud Functions.

App Engine

Para proteger tu aplicación de App Engine, debes usar Identity-Aware Proxy (IAP) para asegurarte de que las solicitudes se autentiquen.

Sigue los pasos para habilitar las compras en la aplicación en el proyecto en el que se haya desplegado tu servicio de backend de App Engine. Al habilitar IAP, te asegurarás de 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 Configurar el acceso de IAP para asignar el rol IAP-secured Web App User a la cuenta de servicio asociada a tu gateway. Además, concede a la cuenta de servicio un rol que contenga los siguientes permisos:

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

Otras APIs de Google Cloud

API Gateway no admite el proxy a otras APIs de Google Cloud . Esto significa que las configuraciones de API que hagan referencia a uno o varios back-ends con *.googleapis.com (como bigquery.googleapis.com) provocarán que las llamadas fallen y se devuelva un código de respuesta 401.

API Gateway se autentica en los backends con un token de ID, mientras que otras APIs Google Cloud requieren un token de acceso. Por el momento, no hay ninguna solución alternativa integrada.