Gérer les accès avec IAM

Vous pouvez utiliser Cloud Identity and Access Management (Cloud IAM) pour contrôler la capacité d'un développeur à afficher, créer, mettre à jour et supprimer des fonctions. Vous pouvez également contrôler si une authentification est nécessaire pour appeler une fonction. Pour ce faire, vous attribuez des rôles aux différents membres.

Contrôler les accès à une fonction

Cloud IAM vous permet de contrôler les accès à une fonction en attribuant des rôles à des utilisateurs spécifiques ou en les limitant.

Ajout de comptes utilisateur

Console

  1. Accédez à Google Cloud Console :

    Accéder à Google Cloud Console

  2. Cochez la case directement à côté de la fonction à laquelle vous souhaitez autoriser l'accès.

  3. Cliquez sur Afficher le panneau d'informations en haut à droite pour afficher l'onglet Autorisations.

  4. Dans le champ Ajouter des membres, saisissez une ou plusieurs identités nécessitant un accès à votre fonction.

  5. Sélectionnez un ou plusieurs rôles dans le menu déroulant 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.

  6. Cliquez sur Enregistrer.

gcloud

Utilisez la commande gcloud functions add-iam-policy-binding :

gcloud functions add-iam-policy-binding FUNCTION_NAME \
  --member=MEMBER_TYPE \
  --role=ROLE

FUNCTION_NAME correspond au nom de la fonction, MEMBER_TYPE au type de membre et ROLE au rôle.

Pour obtenir la liste des valeurs acceptées pour MEMBER_TYPE, consultez la section sur les concepts de Cloud 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 utilisateurs

Console

  1. Accédez à Google Cloud Console :

    Accéder à Google Cloud Console

  2. Cochez la case directement à côté de la fonction à laquelle vous souhaitez limiter l'accès.

  3. Cliquez sur Afficher le panneau d'informations en haut à droite pour afficher l'onglet Autorisations.

  4. Recherchez l'utilisateur que vous souhaitez supprimer ou développez un rôle détenu par cet utilisateur.

  5. Au niveau du rôle, cliquez sur la corbeille en regard du type de membre pour supprimer le rôle du membre.

gcloud

Utilisez la commande gcloud functions remove-iam-policy-binding :

  gcloud functions remove-iam-policy-binding FUNCTION_NAME \
    --member=MEMBER_TYPE \
    --role=ROLE

FUNCTION_NAME correspond au nom de la fonction, MEMBER_TYPE au type de membre et ROLE au rôle.

Pour obtenir la liste des valeurs acceptées pour MEMBER_TYPE, consultez la section sur les concepts de Cloud IAM. Pour obtenir la liste des valeurs acceptées pour ROLE, consultez la page de référence Rôles IAM pour Cloud Functions.

Ajouter ou supprimer des utilisateurs 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 Afficher le panneau d'informations en haut à droite pour afficher l'onglet Autorisations.

Pour ajouter des utilisateurs :

  1. Dans le champ Ajouter des membres, saisissez toutes les identités nécessitant un accès à votre fonction.

  2. Sélectionnez un ou plusieurs rôles dans le menu déroulant 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.

  3. Cliquez sur Enregistrer.

Pour supprimer des utilisateurs :

  1. Recherchez l'utilisateur que vous souhaitez supprimer ou développez un rôle détenu par cet utilisateur.

  2. Au niveau du rôle, cliquez sur la corbeille en regard du type de membre pour supprimer le rôle du membre.

gcloud

Créez une stratégie IAM nommée, par exemple, policy.json :

{
  "bindings": [
    {
      "role": ROLE,
      "members": [
        MEMBER_TYPE
      ]
    }
  ]
}

Utilisez la commande gcloud functions set-iam-policy :

gcloud functions set-iam-policy FUNCTION_NAME policy.json

Pour obtenir la liste des valeurs acceptées pour MEMBER_TYPE, consultez la section sur les concepts de Cloud 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 utilisateur

Console

  1. Accédez à Google Cloud Console :

    Accéder à Google Cloud Console

  2. Sélectionnez la fonction pour laquelle vous souhaitez afficher les utilisateurs et les rôles.

  3. Cliquez sur Afficher le panneau d'informations en haut à droite pour afficher l'onglet Autorisations.

  4. Tous les utilisateurs seront affichés, regroupés par rôle attribué.

gcloud

Utilisez la commande gcloud functions get-iam-policy :

gcloud functions get-iam-policy FUNCTION_NAME

Contrôler l'accès à toutes les fonctions d'un projet

Si vous souhaitez accorder des rôles à certains membres pour toutes les fonctions d'un projet, vous pouvez utiliser Cloud IAM au niveau du projet.

Autoriser les appels de fonction non authentifiés

Vous pouvez utiliser l'approche décrite ci-dessus pour accorder ou limiter la possibilité d'appeler une fonction. Cela vous permet de spécifier si un appelant doit être authentifié pour appeler une fonction. Ce concept ne s'applique qu'aux fonctions HTTP. Les fonctions d'arrière-plan ne peuvent être appelées que par la source de l'événement auquel elles sont abonnées.

Pour autoriser les appels non authentifiés d'une fonction après son déploiement, vous devez ajouter le type de membre spécial allUsers à la fonction et lui octroyer le rôle Demandeur Cloud Functions :

Console

  1. Accédez à Google Cloud Console :

    Accéder à Google Cloud Console

  2. Cochez la case directement à côté de la fonction à laquelle vous souhaitez autoriser l'accès.

  3. Cliquez sur Afficher le panneau d'informations en haut à droite pour afficher l'onglet Autorisations.

  4. Cliquez sur Ajouter un membre.

  5. Dans le champ Nouveaux membres, saisissez allUsers.

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

  7. Cliquez sur Enregistrer.

gcloud

Utilisez la commande gcloud functions add-iam-policy-binding pour ajouter le type de membre spécial allUsers à une fonction et accordez-lui le rôle roles/cloudfunctions.invoker :

gcloud functions add-iam-policy-binding FUNCTION_NAME \
 --member="allUsers" \
 --role="roles/cloudfunctions.invoker"

Vous pouvez également utiliser Google Cloud Console pour modifier ces autorisations.

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 inclut également l'option --allow-unauthenticated :

gcloud functions deploy FUNCTION_NAME \
  --trigger-http \
--allow-unauthenticated \
...

Il vous suffit de spécifier l'option --allow-unauthenticated lors de la création de la fonction initiale. Les déploiements suivants qui ne spécifient pas l'option --allow-unauthenticated ne modifieront pas les autorisations Cloud IAM.

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.

Étape suivante

Découvrez comment authentifier en toute sécurité les développeurs, les fonctions et les utilisateurs finaux pour les fonctions que vous venez de sécuriser.