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

  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 fonctions Cloud Run.

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

  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 fonctions Cloud Run.

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

  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.

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.