Autoriser l'accès avec IAM

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. 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/function.admin) sur la fonction ou le projet. Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

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 Cloud 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

  1. Accédez à Google Cloud Console :

    Accéder à Google Cloud Console

  2. Cochez la case en regard de la fonction qui vous intéresse.

  3. Cliquez sur Autorisations en haut de l'écran. Le panneau Autorisations s'affiche.

  4. Cliquez sur Ajouter un compte principal.

  5. 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.

  6. 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.

  7. 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

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 Cloud Functions.

Supprimer des rôles attribués à des comptes principaux

Console

  1. Accédez à Google Cloud Console :

    Accéder à Google Cloud Console

  2. Cochez la case en regard de la fonction qui vous intéresse.

  3. Cliquez sur Autorisations en haut de l'écran. Le panneau Autorisations s'affiche.

  4. Recherchez le compte principal que vous souhaitez supprimer. Examinez chaque rôle attribué à ce compte principal.

  5. 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

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 Cloud Functions.

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

  1. Accédez à Google Cloud Console :

    Accéder à Google Cloud Console

  2. Cochez les cases situées à côté des fonctions auxquelles vous souhaitez accorder ou limiter l'accès.

  3. Cliquez sur Autorisations en haut de l'écran. Le panneau Autorisations s'affiche.

Pour ajouter des comptes principaux :

  1. Cliquez sur Ajouter un compte principal.

  2. Dans le champ Nouveaux comptes principaux, saisissez toutes les identités devant accéder à votre fonction.

  3. 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.

  4. 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 Cloud Functions.

Afficher les comptes principaux

Console

  1. Accédez à Google Cloud Console :

    Accéder à Google Cloud Console

  2. Cliquez sur le nom de la fonction qui vous intéresse.

  3. Sélectionnez l'onglet Autorisations. Le panneau Autorisations s'affiche.

  4. 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

Cloud Functions (1st gen) :

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

  1. Accédez à Google Cloud Console :

    Accéder à Google Cloud Console

  2. Cochez la case en regard de la fonction de réception. (Ne cliquez pas sur la fonction elle-même.)

  3. Cliquez sur Autorisations en haut de l'écran. Le panneau Autorisations s'affiche.

  4. Cliquez sur Ajouter un compte principal.

  5. Dans le champ Nouveaux comptes principaux, saisissez allUsers.

  6. Sélectionnez le rôle Cloud Functions > Demandeur Cloud Functions dans le menu déroulant Sélectionner un rôle.

  7. 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.

Cloud Functions (2nd gen) :

Console

  1. Accédez à Google Cloud Console :

    Accéder à Google Cloud Console

  2. Cliquez sur le lien du nom de la fonction à laquelle vous souhaitez accorder l'accès.

  3. Cliquez sur le lien Fourni par Cloud Run dans l'angle supérieur droit de la page de présentation des fonctions.

  4. Accédez à l'onglet Sécurité puis, sous Authentification, sélectionnez Autoriser les appels non authentifiés.

  5. 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.