Contrôle des accès avec IAM
Cette page fournit des informations supplémentaires sur l'utilisation des rôles IAM (Identity and Access Management) pour définir des contrôles d'accès au niveau du projet, afin de déterminer le niveau d'accès à votre Google Cloud projet et aux fonctions créées à l'aide des commandes gcloud functions
ou de l'API Cloud Functions v2.
Si vous avez créé ou déployé des fonctions à l'aide de Cloud Run, consultez Contrôle des accès avec IAM et Rôles Cloud Run pour obtenir une description détaillée des rôles prédéfinis Cloud Run, du contrôle des accès à des services individuels, de la publication d'un service ou de la configuration de la stratégie de l'organisation pour l'IAM de l'appelant Cloud Run.
Contrôle des accès pour les utilisateurs
Ajoutez des utilisateurs en tant que membres de l'équipe de votre projet et leur attribuez des rôles grâce à IAM.
Cloud Run Functions est compatible avec les rôles suivants:
- Rôles prédéfinis Cloud Run (recommandé)
- Rôles prédéfinis Cloud Functions
- Les rôles de base Éditeur, Propriétaire et Lecteur.
Contrôle des accès pour les comptes de service
Un compte de service est un type de compteGoogle Cloud spécial qui sert d'identité à un utilisateur non humain devant s'authentifier et disposer d'autorisations pour accéder aux données et effectuer diverses opérations. Certains de ces comptes sont créés et gérés par Google et sont appelés agents de service.
Les comptes de service suivants sont utilisés pour Cloud Run Functions :
Nom | ID de membre | Rôle |
---|---|---|
Compte de service Compute Engine par défaut | PROJECT_NUMBER-compute@developer.gserviceaccount.com |
Éditeur |
Agent de service Google Cloud Functions | service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com |
Agent de service Google Cloud Functions |
Ancien compte de service Cloud Build1 | PROJECT_NUMBER@cloudbuild.gserviceaccount.com |
Compte de service Cloud Build |
Compte de service Cloud Build | service-PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com |
Agent de service Cloud Build |
Agent de service Google Container Registry | service-PROJECT_NUMBER@containerregistry.iam.gserviceaccount.com |
Agent de service Container Registry |
Agent de service Artifact Registry | service-PROJECT_NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com |
Agent de service Artifact Registry |
Comptes de service d'exécution
Lors de l'exécution, Cloud Run Functions utilise par défaut le compte de service Compute Engine par défaut (PROJECT_NUMBER-compute@developer.gserviceaccount.com
), qui possède également le rôle d'éditeur sur le projet. Vous pouvez modifier les rôles de ces comptes de service pour limiter ou étendre les autorisations de vos fonctions en cours d'exécution. Vous pouvez également modifier le compte de service utilisé en évitant le compte de service par défaut lors de la configuration de l'identité du service.
Pour en savoir plus sur les comptes de service, consultez la documentation relative aux comptes de service.
Comptes de service d'administration
Pour effectuer des actions d'administration sur votre projet lors de la création, de la mise à jour ou de la suppression de fonctions, tous les projets dans Cloud Run Functions nécessitent le compte de service de l'agent de service Google Cloud Functions (service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com
).
De plus, tous les environnements d'exécution effectuent la compilation et le stockage d'images de conteneur dans votre projet. Pour permettre ceci, vous devez également provisionner les éléments suivants :
- L'ancien compte de service Cloud Build1 (
PROJECT_NUMBER@cloudbuild.gserviceaccount.com
) - Le compte de service de l'agent de service Cloud Build (
service-PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com
) - Le compte de service de l'agent de service Google Container Registry (
service-PROJECT_NUMBER@containerregistry.iam.gserviceaccount.com
)
Ces comptes de service doivent être associés aux rôles répertoriés dans le tableau précédent.
Compte de service de l'agent de service Google Cloud Functions
Par défaut, le compte de service de l'agent de service Google Cloud Functions (service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com
) dispose du rôle cloudfunctions.serviceAgent sur votre projet.
Voici quelques-unes des autorisations notables utilisées par cloudfunctions.serviceAgent
:
Autorisation | Description |
---|---|
roles/artifactregistry.admin |
Gérer les dépôts et stocker des images de compilation dans Artifact Registry. |
roles/cloudbuild.builds.editor |
Nécessaire pour utiliser Cloud Build pour exécuter des builds dans le projet de l'utilisateur. |
roles/cloudbuild.customworkers.builder |
Créer des builds dans des nœuds de calcul personnalisés Cloud Build. |
compute.globalOperations.get ,compute.networks.access ,vpcaccess.connectors.{get, use} |
Provisionner des fonctions ayant accès au VPC des projets client. |
roles/eventarc.developer |
Gérer les déclencheurs Eventarc pour les fonctions. |
firebasedatabase.instances.{get, update} |
Créer des fonctions déclenchées par la base de données Firebase Realtime. |
iam.serviceAccounts.{actAs, getAccessToken, signBlob} |
Utiliser les informations d'identification du compte de service d'exécution. |
iam.serviceAccounts.getOpenIdToken |
Nécessaire pour que l'agent obtienne un jeton OpenID auprès d'une autorité spécifiée par l'utilisateur. Le jeton OpenID est utilisé pour appeler des fonctions exploitant IAM. |
pubsub.subscriptions |
Gérer les abonnements dans le projet de l'utilisateur. |
pubsub.topics |
Gérer les sujets dans le projet de l'utilisateur. |
roles/run.developer |
Gérer le service Cloud Run pour les fonctions. |
storage.buckets.create ,storage.objects.{delete, get, create, list} |
Obligatoire pour le stockage du code source dans le projet de l'utilisateur. |
Vous pouvez afficher l'ensemble des autorisations sous les rôles IAM prédéfinis ou en exécutant la commande suivante :
gcloud iam roles describe roles/cloudfunctions.serviceAgent
Réinitialisez ce compte de service sur le rôle par défaut en supprimant le rôle dont il dispose actuellement et en ajoutant le rôle d'agent de service Cloud Functions:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com \ --role roles/cloudfunctions.serviceAgent
Résolution des erreurs d'autorisation
Si vous obtenez des erreurs d'autorisation lorsque vous déployez, mettez à jour, supprimez ou exécutez des fonctions dans votre projet, procédez comme suit :
Assurez-vous que vous disposez du rôle d'éditeur ou de propriétaire sur votre projet ou que vous utilisez le rôle de développeur Cloud Functions.
Si vous utilisez le rôle de développeur Cloud Functions au niveau du projet, assurez-vous d'avoir attribué à l'utilisateur le rôle d'utilisateur du compte de service IAM.
Actuellement, seules les autorisations d'exécution sont autorisées au niveau de chaque fonction.
Vérifiez que le compte de service de l'agent de service Cloud Functions (
service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com
) dispose du rôle Agent de service Cloud Functions (cloudfunctions.serviceAgent
) pour votre projet.Assurez-vous que la case Inclure les rôles attribués par Google située dans l'onglet Autorisations de la page Console IAM est cochée pour ce compte. Vous pouvez également utiliser
gcloud projects add-iam-policy-binding PROJECT_ID
.Vérifiez que vous disposez des autorisations nécessaires pour les sources de déclenchement, telles que Pub/Sub ou Cloud Storage.
Si vous obtenez une erreur "autorisations insuffisantes" ou rencontrez d'autres problèmes d'authentification lorsque vous exécutez vos fonctions, assurez-vous que le compte de service d'exécution dispose des autorisations nécessaires pour accéder aux ressources dont vos fonctions ont besoin. Répétez ensuite les étapes 2 et 3.
Si vous obtenez une erreur "service indisponible" lors du déploiement, assurez-vous que le compte de service d'exécution PROJECT_ID@appspot.gserviceaccount.com
existe dans votre projet. Pour recréer ce compte de service s'il a été supprimé, consultez la section Annuler la suppression d'un compte de service.
Consultez également Résoudre les problèmes liés à Cloud Run Functions.
1 Les fonctions Cloud Run n'utilisent que l'ancien compte de service Cloud Build pour les projets créés avant juillet 2024.