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 de backend. Vous pouvez empêcher l'accès public à vos services gérés par le backend (Cloud Run, Cloud Functions, App Engine, etc.) en procédant comme suit:
- Autorisez uniquement l'accès authentifié à votre service de backend.
- Accorder les autorisations nécessaires au compte de service associé à la configuration d'API de votre passerelle afin que votre passerelle soit autorisée à appeler le backend.
Cette page décrit la procédure à suivre pour sécuriser votre service de backend, ainsi que les rôles et autorisations requis par le compte de service de la passerelle pour accéder à ces services.
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 tout rôle contenant 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 d'une passerelle adressée à votre service Cloud Run est rejetée, assurez-vous que le compte de service de la passerelle dispose du 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 demandeur, consultez la documentation de référence IAM Cloud Run.
Cloud Functions
Pour les services de backend Cloud Functions, Identity and Access Management (IAM) permet de contrôler la capacité à afficher, créer, mettre à jour et supprimer des fonctions. IAM applique l'authentification des appelants aux services Cloud Functions, tels qu'API Gateway, en attribuant 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.
- Les fonctions HTTP nécessitent une authentification par défaut. Vous pouvez configurer IAM sur les fonctions HTTP pour spécifier si une fonction autorise les appels non authentifiés.
- Les fonctions d'arrière-plan ne peuvent être appelées que par la source de l'événement auquel elles sont abonnées.
Pour autoriser API Gateway à appeler votre service de backend Cloud Functions, accordez au compte de service de la passerelle le rôle roles/cloudfunctions.invoker
) ou tout autre 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 envoyées à votre service Cloud Functions sont refusées, assurez-vous que le compte de service de la passerelle dispose du rôle roles/cloudfunctions.invoker
et que le compte de service de la passerelle 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 sur IAM pour 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 permettant d'activer IAP pour le projet dans lequel votre service de backend App Engine est déployé. L'activation d'IAP garantit que l'accès à votre application backend App Engine est sécurisé.
Pour autoriser API Gateway à appeler le service de backend App Engine, suivez les étapes de la section Configurer l'accès IAP afin d'accorder le rôle IAP-secured Web App User
au compte de service associé à votre passerelle. En outre, accordez au compte de service un rôle comportant les autorisations suivantes:
appengine.applications.update
clientauthconfig.clients.create
clientauthconfig.clients.getWithSecret