Autoriser l'accès avec IAM
Vous utilisez Identity and Access Management (IAM) pour autoriser les identités à effectuer des actions d'administration sur des fonctions créées à l'aide de l'API Cloud Functions v2 (par exemple, en utilisant gcloud functions
, l'API REST ou 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 aux fonctions créées avec Cloud Run, consultez la page 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 fonctions Cloud Run (roles/function.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 Cloud Run Functions pour obtenir la liste complète des rôles Cloud Run Functions 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
Console
Accédez à Google Cloud Console :
Cochez la case en regard de la fonction qui vous intéresse.
Cliquez sur Autorisations en haut de l'écran. Le panneau Autorisations s'affiche.
Cliquez sur Ajouter un compte principal.
Dans le champ Nouveaux comptes principaux, saisissez une ou plusieurs identités devant accéder à votre fonction. Il s'agit généralement d'une adresse e-mail d'utilisateur ou de compte de service.
Sélectionnez un ou plusieurs rôles dans le menu déroulant Select a role (Sélectionnez un rôle). Les rôles sélectionnés apparaissent dans le volet et sont accompagnés d'une brève description des autorisations auxquelles ils correspondent.
Cliquez sur Enregistrer.
gcloud
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 la page sur les concepts IAM.
Pour obtenir la liste des valeurs acceptées pour ROLE
, consultez la page de référence Rôles IAM pour fonctions Cloud Run.
Supprimer des rôles attribués à des comptes principaux
Console
Accédez à Google Cloud Console :
Cochez la case en regard de la fonction qui vous intéresse.
Cliquez sur Autorisations en haut de l'écran. Le panneau Autorisations s'affiche.
Recherchez le compte principal que vous souhaitez supprimer. Examinez chaque rôle attribué à ce compte principal.
Lorsque vous avez trouvé le compte principal dans le rôle que vous souhaitez supprimer, cliquez sur l'icône de corbeille située à côté. Si vous souhaitez supprimer complètement l'accès du compte principal, répétez l'opération pour chaque rôle attribué à ce compte.
gcloud
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 la page sur les concepts IAM.
Pour obtenir la liste des valeurs possibles pour ROLE
, consultez la page de référence sur les rôles IAM pour fonctions Cloud Run.
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
Console
Accédez à Google Cloud Console :
Cochez les cases situées à côté des fonctions auxquelles vous souhaitez accorder ou limiter l'accès.
Cliquez sur Autorisations en haut de l'écran. Le panneau Autorisations s'affiche.
Pour ajouter des comptes principaux :
Cliquez sur Ajouter un compte principal.
Dans le champ Nouveaux comptes principaux, saisissez toutes les identités devant accéder à votre fonction.
Sélectionnez un ou plusieurs rôles dans le menu déroulant Select a role (Sélectionnez un rôle). Les rôles sélectionnés apparaissent dans le volet et sont accompagnés d'une brève description des autorisations auxquelles ils correspondent.
Cliquez sur Enregistrer.
gcloud
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 la page sur les concepts IAM.
Pour obtenir la liste des valeurs acceptées pour ROLE
, consultez la page de référence Rôles IAM pour fonctions Cloud Run.
Afficher les comptes principaux
Console
Accédez à Google Cloud Console :
Cliquez sur le nom de la fonction qui vous intéresse.
Sélectionnez l'onglet Autorisations. Le panneau Autorisations s'affiche.
Sélectionnez l'onglet Afficher par compte principal pour afficher la liste de tous les comptes principaux disposant d'autorisations sur la fonction sélectionnée.
gcloud
Exécutez la commande gcloud functions get-iam-policy
:
gcloud functions get-iam-policy FUNCTION_NAME
Autoriser l'appel de fonctions HTTP sans authentification
Depuis le 15 janvier 2020, les fonctions HTTP sans l'option Autoriser les appels non authentifiés activée limitent l'accès aux utilisateurs finaux et aux comptes de service ne disposant pas des autorisations appropriées.
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.
Lors du déploiement
Console
Sélectionnez Autoriser les appels non authentifiés dans la section Authentification du panneau Déclencheur.
gcloud
La commande gcloud functions deploy
inclut une requête pour vous aider à configurer les autorisations d'appel lors de la création de la fonction. Il 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
Console
Accédez à Google Cloud Console :
Cliquez sur le lien du nom de la fonction à laquelle vous souhaitez accorder l'accès.
Cliquez sur le lien Fourni par Cloud Run dans l'angle supérieur droit de la page de présentation des fonctions.
Accédez à l'onglet Sécurité puis, sous Authentification, sélectionnez Autoriser les appels non authentifiés.
Cliquez sur Enregistrer.
gcloud
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="user:USER_EMAIL"\ --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
.
Partage restreint de domaine
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. Cette règle limite le partage de données publiques afin de réduire le risque d'exfiltration de données.
Si vous souhaitez déployer des fonctions autorisant les appels non authentifiés, nous vous recommandons de supprimer cette règle du projet. Les règles d'administration peuvent être définies au niveau de l'organisation, du dossier ou du projet.
Une fois que vous avez créé votre fonction autorisant les appels non authentifiés, vous pouvez réactiver la règle d'administration comme suit :
- Les fonctions déployées avant la réactivation de la règle d'administration continueront d'autoriser les appels non authentifiés.
- De nouvelles versions de ces fonctions peuvent être déployées sans nécessiter l'authentification des appels.
- Les nouvelles fonctions qui autorisent les appels non authentifiés ne peuvent pas être déployées.