Sécuriser les services de backend

En plus d'authentifier les requêtes des utilisateurs finaux auprès de votre passerelle déployée, il est important de sécuriser l'accès entre API Gateway et vos services backend. Vous pouvez empêcher l'accès public à vos services gérés de backend (Cloud Run, fonctions Cloud Run, App Engine, etc.) en:

  • Autorisez uniquement l'accès authentifié à votre service de backend.
  • Accordez les autorisations nécessaires au compte de service associé à la configuration d'API de votre passerelle afin que celle-ci soit autorisée à appeler le backend.

Cette page décrit les étapes requises pour sécuriser votre service backend, ainsi que les rôles et les autorisations dont le compte de service de votre passerelle a besoin pour y accéder.

Cloud Run

Tous les services Cloud Run entièrement gérés sont déployés par défaut en mode privé, ce qui signifie qu'ils ne sont pas accessibles sans identifiants d'authentification dans la requête.

Les services Cloud Run sont sécurisés par IAM. Par défaut, les services Cloud Run peuvent être appelés par n'importe quel rôle disposant de l'autorisation run.routes.invoke.

Vous pouvez configurer IAM sur les services Cloud Run (entièrement gérés) pour accorder l'accès à d'autres utilisateurs.

Pour API Gateway, l'accès aux services Cloud Run est activé en accordant les rôles et autorisations appropriés au compte de service de la passerelle : le rôle roles/run.invoker ou un rôle contenant l'autorisation run.routes.invoke.

Vous pouvez contrôler l'accès d'une passerelle à un service individuel avec le rôle IAM au niveau du service ou à tous les services d'un projet avec le rôle IAM au niveau du projet.

Si la requête envoyée par une passerelle à votre service Cloud Run est rejetée, assurez-vous que le compte de service de la passerelle se voit attribuer le rôle roles/run.invoker et que le compte de service de la passerelle dispose de l'autorisation run.routes.invoke. Pour en savoir plus sur les rôles et les autorisations de l'appelant, consultez la documentation de référence IAM Cloud Run.

Cloud Functions

Pour les services backend des fonctions Cloud Run, Identity and Access Management (IAM) permet de contrôler la possibilité d'afficher, de créer, de mettre à jour et de supprimer des fonctions. IAM applique l'authentification des appelants aux services des fonctions Cloud Run, tels qu'API Gateway, en accordant des rôles.

L'attribution de rôles et d'autorisations avec IAM vous permet de contrôler deux ensembles d'actions :

  • Opérations des développeurs : création, mise à jour et suppression de fonctions, ainsi que gestion de l'accès aux fonctions.
  • Appel de fonction : entraîne l'exécution d'une fonction.

Accorder la possibilité d'appeler une fonction diffère pour les fonctions HTTP et les fonctions d'arrière-plan.

Pour permettre à API Gateway d'appeler votre service de backend Cloud Functions, attribuez au compte de service de la passerelle le rôle roles/cloudfunctions.invoker) ou tout rôle contenant l'autorisation cloudfunctions.functions.invoke.

Vous pouvez contrôler l'accès d'une passerelle à une fonction individuelle avec le rôle IAM au niveau du service ou à toutes les fonctions d'un projet avec le rôle IAM au niveau du projet.

Si les requêtes d'une passerelle vers votre service de fonctions Cloud Run sont refusées, assurez-vous que le compte de service de la passerelle dispose du rôle roles/cloudfunctions.invoker et qu'il dispose de l'autorisation cloudfunctions.functions.invoke. Pour en savoir plus sur les rôles et les autorisations de demandeur, consultez la documentation de référence IAM de Cloud Functions.

App Engine

Pour sécuriser votre application App Engine, vous devez utiliser le proxy Identity-Aware Proxy (IAP) afin d'assurer l'authentification des requêtes.

Suivez la procédure pour activer les achats intégrés pour le projet dans lequel votre service backend App Engine est déployé. Activer IAP permet de sécuriser l'accès à votre application backend App Engine.

Pour activer API Gateway afin qu'il appelle votre service de backend App Engine, suivez les étapes décrites dans la section Configurer l'accès IAP pour accorder au compte de service associé à votre passerelle avec le rôle IAP-secured Web App User. Attribuez également au compte de service un rôle contenant les autorisations suivantes :

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