Autoriser l'accès avec IAM
Vous utilisez Identity and Access Management (IAM) pour autoriser les identités à effectuer des actions d'administration sur les fonctions créées à l'aide de l'API Cloud Functions v2, par exemple à l'aide de gcloud functions
, de l'API REST ou de Terraform. Les actions d'administration incluent la création, la mise à jour et la suppression de fonctions. Pour en savoir plus sur l'accès IAM pour les fonctions créées avec Cloud Run, consultez Contrôle des accès avec IAM.
Dans IAM, vous accordez aux comptes principaux (les identités que vous souhaitez activer, généralement une adresse e-mail d'utilisateur ou de compte de service) les rôles IAM appropriés sur la fonction ou le projet. Ces rôles incluent des autorisations qui définissent les actions que le compte principal est autorisé à effectuer.
Avant de commencer
Pour obtenir l'autorisation dont vous avez besoin pour contrôler l'accès à une fonction spécifique ou à toutes les fonctions d'un projet, demandez à votre administrateur de vous accorder le rôle IAM Administrateur Cloud Functions (roles/roles/cloudfunctions.admin
) sur la fonction ou le projet.
Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.
Ce rôle prédéfini contient l'autorisation cloudfunctions.functions.setIamPolicy
, qui est nécessaire pour contrôler l'accès à une fonction spécifique ou à toutes les fonctions d'un projet.
Vous pouvez également obtenir cette autorisation avec des rôles personnalisés ou d'autres rôles prédéfinis.
Consultez la page Rôles IAM de Cloud Functions pour obtenir la liste complète des rôles et des autorisations associées.
Activer l'accès à une fonction
Vous pouvez contrôler les actions sur une fonction en attribuant ou en limitant des rôles à des identités individuelles via IAM.
Ajouter des comptes principaux et attribuer des rôles
Exécutez la commande gcloud functions add-iam-policy-binding
:
gcloud functions add-iam-policy-binding FUNCTION_NAME \ --member=PRINCIPAL_ID \ --role=ROLE
où FUNCTION_NAME
correspond au nom de la fonction, PRINCIPAL_ID
à l'identifiant du compte principal (généralement une adresse e-mail) et ROLE
au rôle.
Pour obtenir la liste des sources pouvant fournir un PRINCIPAL_ID
, consultez Identifiants des comptes principaux.
Pour obtenir la liste des valeurs acceptées pour ROLE
, consultez la page de référence sur les rôles IAM.
Supprimer des rôles attribués à des comptes principaux
Exécutez la commande gcloud functions remove-iam-policy-binding
:
gcloud functions remove-iam-policy-binding FUNCTION_NAME \ --member=PRINCIPAL_ID \ --role=ROLE
où FUNCTION_NAME
correspond au nom de la fonction, PRINCIPAL_ID
à l'adresse e-mail qui identifie le compte de service, précédé de serviceAccount:
, et ROLE
au rôle.
Pour obtenir la liste des sources acceptables pour PRINCIPAL_ID
, consultez Identifiants des comptes principaux.
Pour obtenir la liste des valeurs possibles pour ROLE
, consultez la page de référence sur les rôles IAM.
Si plusieurs rôles ont été attribués au compte principal, veillez à spécifier celui que vous souhaitez supprimer.
Ajouter des comptes principaux de manière groupée
Créez une stratégie IAM nommée, par exemple, policy.json
:
{ "bindings": [ { "role": ROLE, "members": [ PRINCIPAL_ID ] } ] }
Exécutez la commande gcloud functions set-iam-policy
:
gcloud functions set-iam-policy FUNCTION_NAME policy.json
Pour obtenir la liste des sources acceptables pour PRINCIPAL_ID
, consultez Identifiants des comptes principaux.
Pour obtenir la liste des valeurs acceptées pour ROLE
, consultez la page de référence sur les rôles IAM.
Afficher les comptes principaux
Pour afficher les comptes principaux, utilisez la commande gcloud functions get-iam-policy
:
gcloud functions get-iam-policy FUNCTION_NAME
Autoriser l'appel de fonctions HTTP sans authentification
Pour autoriser les appels non authentifiés, vous devez le spécifier lors du déploiement, ou après.
Vous utilisez une variante spéciale de l'approche décrite ci-dessus pour autoriser les appelants non authentifiés à appeler une fonction HTTP.
Si vous développez des fonctions dans un projet soumis à une règle d'administration de partage restreint de domaine, vous ne pouvez pas autoriser les appels non authentifiés d'une fonction.
Lors du déploiement
La commande gcloud functions deploy
inclut une invite pour vous aider à configurer les autorisations d'appel lors de la création de la fonction. Elle peut également inclure l'option --allow-unauthenticated
:
gcloud functions deploy FUNCTION_NAME \ --trigger-http \ --allow-unauthenticated \ ...
Les déploiements ultérieurs de la même fonction ne modifient pas son état, même si vous n'utilisez pas cette option.
Après le déploiement
Utilisez la commande gcloud run services add-iam-policy-binding
pour accorder le rôle roles/run.invoker
à la fonction spécifique.
gcloud run services add-iam-policy-binding FUNCTION_NAME \ --member="allUsers" \ --role="roles/run.invoker"
Pour en savoir plus sur ces champs, consultez la documentation de référence sur gcloud run add-iam-policy-binding
.