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
 

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

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.