Autoriser l'accès avec IAM (1re génération)
Vous utilisez Identity and Access Management (IAM) pour autoriser les identités à effectuer des actions d'administration sur vos fonctions, telles que la création, la mise à jour et la suppression. Vous ajoutez des comptes principaux (des identités que vous souhaitez activer, généralement une adresse e-mail correspondant à un utilisateur ou à un compte de service) à la fonction, puis vous accordez à ces comptes principaux les rôles IAM appropriés. Ces rôles incluent des autorisations qui définissent les actions qu'ils sont autorisés à effectuer.
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 \ --no-gen2 \ --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
Pour autoriser les appels non authentifiés d'une fonction, attribuez le rôle "Demandeur Cloud Functions" au compte principal allUsers
spécial de la fonction :
Console
Accédez à Google Cloud Console :
Cochez la case en regard de la fonction de réception. (Ne cliquez pas sur la fonction elle-même.)
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
allUsers
.Sélectionnez le rôle Cloud Functions > Demandeur Cloud Functions dans le menu déroulant Sélectionner un rôle.
En réponse à la boîte de dialogue, cliquez sur Autoriser l'accès public.
gcloud
Utilisez la commande gcloud functions add-iam-policy-binding
pour accorder le rôle roles/cloudfunctions.invoker
au compte principal allUsers
spécial de la fonction :
gcloud functions add-iam-policy-binding FUNCTION_NAME \ --member="allUsers" \ --role="roles/cloudfunctions.invoker"
Pour en savoir plus sur ces champs, consultez la documentation de référence sur gcloud functions 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.
Contrôler l'accès à toutes les fonctions d'un projet
Si vous souhaitez attribuer des rôles sur toutes les fonctions d'un projet, vous pouvez les attribuer sur le projet.