Contrôle des accès avec IAM

Par défaut, seuls les propriétaires et les éditeurs de projets peuvent créer, mettre à jour, supprimer ou appeler des services et des tâches, et seuls les propriétaires de projets et les administrateurs Cloud Run peuvent modifier les stratégies IAM (Identity and Access Management), par exemple pour rendre un service public. Pour en savoir plus, consultez la page Rôles IAM Cloud Run.

Pour permettre à d'autres comptes principaux ou groupes d'effectuer ces actions, accordez des rôles à différents comptes principaux à l'aide d'IAM.

Rôles prédéfinis Cloud Run

Par rapport aux rôles de base (propriétaire, éditeur et lecteur), les rôles prédéfinis suivants offrent un contrôle d'accès plus précis pour accéder aux ressources Cloud Run :

Rôle Description
Cloud Run Admin (roles/run.admin) Peut créer, mettre à jour et supprimer des services et des jobs, et obtenir, répertorier et supprimer des exécutions de jobs.
Peut appeler des services et des jobs, et annuler des exécutions de jobs.
Peut obtenir et définir des stratégies IAM.
Peut afficher, appliquer et ignorer les recommandations.
Nécessite une configuration supplémentaire pour déployer des services.
Développeur Cloud Run (roles/run.developer) Peut créer, mettre à jour et supprimer des services et des jobs, et obtenir, répertorier et supprimer des exécutions de jobs.
Peut obtenir, mais ne pas définir de stratégies IAM.
Peut afficher, appliquer et ignorer recommandations.
Lecteur Cloud Run (roles/run.viewer) Peut consulter les services, les jobs et les exécutions de jobs.
Peut obtenir des stratégies IAM.
Peut afficher les recommandations.
Demandeur Cloud Run (roles/run.invoker) Peut appeler des services et des jobs, et annuler des exécutions de jobs.

Contrôler l'accès à une tâche ou à un service individuel

IAM vous permet de contrôler les accès par service ou par tâche.

Rendre un service public

Cette option est destinée à un service Cloud Run qui est une API publique ou un site Web.

Vous pouvez autoriser les appels non authentifiés à un service en attribuant le rôle IAM de demandeur Cloud Run au type de membre allUsers.

Vous devez disposer de l'autorisation run.services.setIamPolicy pour configurer l'authentification sur un service Cloud Run. Cette autorisation est incluse dans les rôles Propriétaire et Administrateur Cloud Run. Consultez la page Rôles IAM Cloud Run pour obtenir la liste complète des rôles et des autorisations associées.

Console (UI)

Pour un service Cloud Run existant :

  1. Accédez à Google Cloud Console :

    Accéder à Google Cloud Console

  2. Cochez la case située à gauche du service que vous souhaitez rendre public. (Ne cliquez pas sur le service lui-même.)

  3. Dans le volet d'informations situé dans le coin en haut à droite, cliquez sur l'onglet Autorisations. Si le volet d'informations n'est pas visible, vous devrez peut-être cliquer sur Afficher le panneau d'informations, puis sur Autorisations.

  4. Cliquez sur Ajouter un compte principal.

Dans le champ Nouveaux comptes principaux, saisissez la valeur allUsers.

  1. Dans le menu déroulant Rôle, sélectionnez le rôle Demandeur Cloud Run.

  2. Cliquez sur Enregistrer.

  3. Vous serez invité à confirmer que vous souhaitez rendre cette ressource publique. Cliquez sur Autoriser l'accès public pour appliquer la modification aux paramètres IAM du service.

Pour un service que vous créez, créez le service en veillant à sélectionner Autoriser les appels non authentifiés dans l'onglet Authentification pour rendre le service disponible publiquement. Sélectionnez Exiger l'authentification pour rendre le service privé.

gcloud

Pour rendre un service accessible au public, utilisez la commande gcloud run services pour ajouter le type de membre spécial allUsers à un service et accordez-lui le rôle roles/run.invoker :

  gcloud run services add-iam-policy-binding [SERVICE_NAME] \
    --member="allUsers" \
    --role="roles/run.invoker"

Exécutez la commande gcloud run deploy pour rendre votre service accessible au public lorsque vous le déployez :

gcloud run deploy [SERVICE_NAME] ... --allow-unauthenticated

YAML

Créez un fichier nommé policy.yaml avec le contenu suivant :

bindings:
- members:
  - allUsers
  role: roles/run.invoker

Autorisez les appels non authentifiés pour le SERVICE existant à l'aide de la commande suivante :

gcloud run services set-iam-policy SERVICE policy.yaml

Terraform

Pour créer un service Cloud Run, ajoutez les éléments suivants à votre fichier main.tf existant :

resource "google_cloud_run_v2_service" "default" {
  name     = "public-service"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
    }
  }
}

Pour mettre à jour la liaison IAM du service pour roles/run.invoker, ajoutez la ressource suivante qui référence votre service Cloud Run :

resource "google_cloud_run_service_iam_binding" "default" {
  location = google_cloud_run_v2_service.default.location
  service  = google_cloud_run_v2_service.default.name
  role     = "roles/run.invoker"
  members = [
    "allUsers"
  ]
}

Cette liaison ne fait autorité que pour le rôle donné. Les autres liaisons IAM dans la stratégie IAM du service sont conservées.

Partage restreint au domaine

Si le projet est soumis à la contrainte de partage restreint au domaine dans une règle d'administration, vous ne pouvez pas créer de services publics par défaut. Vous pouvez utiliser des tags et une règle conditionnelle pour exclure des services spécifiques de cette contrainte. Pour plus de détails, consultez l'article de blog sur la création de services Cloud Run publics lorsque le partage restreint au domaine est appliqué.

Ajouter des comptes principaux

Vous pouvez ajouter des comptes principaux à une tâche ou à un service.

Ajouter des comptes principaux à un service

Pour ajouter des comptes principaux à un service :

Console (UI)

  1. Accédez à Google Cloud Console :

    Accéder à Google Cloud Console

  2. Cochez la case située à côté du service auquel vous souhaitez ajouter des comptes principaux. (Ne cliquez pas sur le service lui-même.)

  3. Dans le volet d'informations situé dans le coin en haut à droite, cliquez sur l'onglet Autorisations. Si le volet d'informations n'est pas visible, vous devrez peut-être cliquer sur Afficher le panneau d'informations, puis sur Autorisations.

  4. Cliquez sur Ajouter un compte principal.

  5. Dans le champ Nouveaux comptes principaux, saisissez une ou plusieurs identités nécessitant un accès au service.

  6. Dans le menu déroulant Rôle, sélectionnez un ou plusieurs rôles. Les rôles sélectionnés apparaissent dans le volet et sont accompagnés d'une brève description des autorisations attribuées.

  7. Cliquez sur Enregistrer.

gcloud

Exécutez la commande gcloud run services add-iam-policy-binding :

gcloud run services add-iam-policy-binding SERVICE_NAME \
  --member=MEMBER_TYPE \
  --role=ROLE

SERVICE_NAME est le nom du service, MEMBER_TYPE est le type de compte principal (par exemple, user:email@domain.com) et ROLE est le 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 sur les rôles IAM Cloud Run.

Ajouter des comptes principaux à une tâche

Pour ajouter des comptes principaux à une tâche :

Console (UI)

  1. Accédez à Google Cloud Console :

    Accéder à Google Cloud Console

  2. Cochez la case située à gauche de la tâche à laquelle vous souhaitez ajouter des comptes principaux. (Ne cliquez pas sur la tâche elle-même.)

  3. Dans le volet d'informations situé dans le coin en haut à droite, cliquez sur l'onglet Autorisations. Si le volet d'informations n'est pas visible, vous devrez peut-être cliquer sur Afficher le panneau d'informations, puis sur Autorisations.

  4. Cliquez sur Ajouter un compte principal.

  5. Dans la zone de texte Nouveaux comptes principaux, saisissez une ou plusieurs identités nécessitant un accès à la tâche.

  6. Dans le menu déroulant Rôle, sélectionnez un ou plusieurs rôles. Les rôles sélectionnés apparaissent dans le volet et sont accompagnés d'une brève description des autorisations attribuées.

  7. Cliquez sur Enregistrer.

gcloud

Exécutez la commande gcloud run jobs add-iam-policy-binding :

gcloud run jobs add-iam-policy-binding JOB_NAME \
  --member=MEMBER_TYPE \
  --role=ROLE

JOB_NAME est le nom de la tâche, MEMBER_TYPE est le type de compte principal (par exemple, user:email@domain.com) et ROLE est le 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 sur les rôles IAM Cloud Run.

Supprimer des comptes principaux d'un rôle

Vous pouvez supprimer des comptes principaux d'un service ou d'une tâche.

Supprimer des comptes principaux d'un rôle pour un service

Pour supprimer des comptes principaux d'un rôle pour un service :

Console (UI)

  1. Accédez à Google Cloud Console :

    Accéder à Google Cloud Console

  2. Cochez la case située à gauche du service pour lequel vous souhaitez supprimer les comptes principaux. (Ne cliquez pas sur le service lui-même.)

  3. Dans le volet d'informations situé dans le coin en haut à droite, cliquez sur l'onglet Autorisations. Si le volet d'informations n'est pas visible, vous devrez peut-être cliquer sur Afficher le panneau d'informations, puis sur Autorisations.

  4. Saisissez le compte principal que vous souhaitez supprimer dans le filtre de la liste des rôles, ce qui affiche tous les rôles attribués à ce compte principal.

  5. Au niveau du rôle, cliquez sur la corbeille en regard du compte principal pour supprimer le rôle du compte principal.

  6. Dans la boîte de dialogue de confirmation, vous avez la possibilité de supprimer ce compte principal de tous les rôles du service. Cliquez sur Supprimer pour supprimer le compte principal du rôle.

gcloud

Exécutez la commande gcloud run services remove-iam-policy-binding :

  gcloud run services remove-iam-policy-binding SERVICE_NAME \
    --member=MEMBER_TYPE \
    --role=ROLE

SERVICE_NAME est le nom du service, MEMBER_TYPE est le type de compte principal (par exemple, user:email@domain.com) et ROLE est le 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 sur les rôles IAM Cloud Run.

Supprimer des comptes principaux d'un rôle pour une tâche

Pour supprimer des comptes principaux d'un rôle pour une tâche :

Console (UI)

  1. Accédez à Google Cloud Console :

    Accéder à Google Cloud Console

  2. Cochez la case située à gauche de la tâche à laquelle vous souhaitez ajouter des comptes principaux. (Ne cliquez pas sur la tâche elle-même.)

  3. Dans le volet d'informations situé dans le coin en haut à droite, cliquez sur l'onglet Autorisations. Si le volet d'informations n'est pas visible, vous devrez peut-être cliquer sur Afficher le panneau d'informations, puis sur Autorisations.

  4. Saisissez le compte principal que vous souhaitez supprimer dans le filtre de la liste des rôles, ce qui affiche tous les rôles attribués à ce compte principal.

  5. Au niveau du rôle, cliquez sur la corbeille en regard du compte principal pour supprimer le rôle du compte principal.

  6. Dans la boîte de dialogue de confirmation, vous avez la possibilité de supprimer ce compte principal de tous les rôles de la tâche. Cliquez sur Supprimer pour supprimer le compte principal du rôle.

gcloud

Exécutez la commande gcloud run jobs remove-iam-policy-binding :

  gcloud run jobs remove-iam-policy-binding JOB_NAME \
    --member=MEMBER_TYPE \
    --role=ROLE

JOB_NAME est le nom de la tâche, MEMBER_TYPE est le type de compte principal (par exemple, user:email@domain.com) et ROLE est le 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 sur les rôles IAM Cloud Run.

Ajouter ou supprimer des comptes principaux de manière groupée

Vous pouvez ajouter ou supprimer des services de manière groupée pour des services et des tâches.

Ajouter et supprimer des comptes principaux de manière groupée

Pour ajouter ou supprimer des données de façon groupée pour un service :

Console (UI)

  1. Accédez à Google Cloud Console :

    Accéder à Google Cloud Console

  2. Cochez la case située à gauche du service pour lequel vous souhaitez ajouter des comptes principaux ou en supprimer. (Ne cliquez pas sur le service lui-même.)

  3. Sélectionnez le service pour lequel vous souhaitez ajouter des comptes principaux ou en supprimer.

  4. Dans le volet d'informations situé dans le coin en haut à droite, cliquez sur l'onglet Autorisations. Si le volet d'informations n'est pas visible, vous devrez peut-être cliquer sur Afficher le panneau d'informations, puis sur Autorisations.

Pour ajouter des comptes principaux :

  1. Cliquez sur Ajouter un compte principal.

  2. Dans la zone de texte Nouveaux comptes principaux, saisissez une ou plusieurs identités nécessitant un accès au service.

  3. Dans le menu déroulant Rôle, sélectionnez un ou plusieurs rôles. Les rôles sélectionnés apparaissent dans le volet et sont accompagnés d'une brève description des autorisations attribuées.

  4. Cliquez sur Enregistrer.

Pour supprimer des comptes principaux :

  1. Saisissez le compte principal que vous souhaitez supprimer dans le filtre de la liste des rôles, ce qui affiche tous les rôles attribués à ce compte principal.

  2. Au niveau du rôle, cliquez sur la corbeille en regard du compte principal pour supprimer le rôle du compte principal.

  3. Dans la boîte de dialogue de confirmation, vous avez la possibilité de supprimer ce compte principal de tous les rôles du service. Cliquez sur Supprimer pour supprimer le compte principal du rôle.

gcloud

Créez une stratégie IAM :

cat <<EOF > policy.json
{
  "bindings": [
    {
      "role": ROLE,
      "members": [
        MEMBER_TYPE
      ]
    }
  ]
}
EOF

Utilisez la commande gcloud run services set-iam-policy :

gcloud run services set-iam-policy SERVICE_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 sur les rôles IAM Cloud Run.

Ajouter et supprimer des comptes principaux de manière groupée

Pour ajouter ou supprimer des éléments de manière groupée :

Console (UI)

  1. Accédez à Google Cloud Console :

    Accéder à Google Cloud Console

  2. Cochez la case située à gauche de la tâche à laquelle vous souhaitez ajouter des comptes principaux. (Ne cliquez pas sur la tâche elle-même.)

  3. Sélectionnez la tâche pour laquelle vous souhaitez ajouter des comptes principaux ou en supprimer.

  4. Dans le volet d'informations situé dans le coin en haut à droite, cliquez sur l'onglet Autorisations. Si le volet d'informations n'est pas visible, vous devrez peut-être cliquer sur Afficher le panneau d'informations, puis sur Autorisations.

Pour ajouter des comptes principaux :

  1. Cliquez sur Ajouter un compte principal.

  2. Dans la zone de texte Nouveaux comptes principaux, saisissez une ou plusieurs identités nécessitant un accès au service.

  3. Dans le menu déroulant Rôle, sélectionnez un ou plusieurs rôles. Les rôles sélectionnés apparaissent dans le volet et sont accompagnés d'une brève description des autorisations attribuées.

  4. Cliquez sur Enregistrer.

Pour supprimer des comptes principaux :

  1. Saisissez le compte principal que vous souhaitez supprimer dans le filtre de la liste des rôles, ce qui affiche tous les rôles attribués à ce compte principal.

  2. Au niveau du rôle, cliquez sur la corbeille en regard du compte principal pour supprimer le rôle du compte principal.

  3. Dans la boîte de dialogue de confirmation, vous avez la possibilité de supprimer ce compte principal de tous les rôles de la tâche. Cliquez sur Supprimer pour supprimer le compte principal du rôle.

gcloud

Créez une stratégie IAM :

cat <<EOF > policy.json
{
  "bindings": [
    {
      "role": ROLE,
      "members": [
        MEMBER_TYPE
      ]
    }
  ]
}
EOF

Utilisez la commande gcloud run jobs set-iam-policy :

gcloud run jobs set-iam-policy JOB_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 sur les rôles IAM Cloud Run.

Afficher les comptes principaux

Vous pouvez afficher les comptes principaux des services et des tâches.

Afficher les comptes principaux d'un service

Pour afficher les comptes principaux d'un service :

Console (UI)

  1. Accédez à Google Cloud Console :

    Accéder à Google Cloud Console

  2. Cochez la case située à gauche du service pour lequel vous souhaitez afficher les comptes principaux et les rôles. (Ne cliquez pas sur le service lui-même.)

  3. Sélectionnez le service pour lequel vous souhaitez afficher les comptes principaux et les rôles.

  4. Dans le volet d'informations situé dans le coin en haut à droite, cliquez sur l'onglet Autorisations. Si le volet d'informations n'est pas visible, vous devrez peut-être cliquer sur Afficher le panneau d'informations, puis sur Autorisations.

  5. La liste des rôles et des comptes principaux s'affiche, regroupée par rôle attribué.

gcloud

Exécutez la commande gcloud run services get-iam-policy :

gcloud run services get-iam-policy SERVICE_NAME

Afficher les comptes principaux d'une tâche

Pour afficher les comptes principaux d'une tâche :

Console (UI)

  1. Accédez à Google Cloud Console :

    Accéder à Google Cloud Console

  2. Cochez la case située à gauche de la tâche à laquelle vous souhaitez ajouter des comptes principaux. (Ne cliquez pas sur la tâche elle-même.)

  3. Sélectionnez la tâche pour laquelle vous souhaitez afficher les comptes principaux et les rôles.

  4. Dans le volet d'informations situé dans le coin en haut à droite, cliquez sur l'onglet Autorisations. Si le volet d'informations n'est pas visible, vous devrez peut-être cliquer sur Afficher le panneau d'informations, puis sur Autorisations.

  5. La liste des rôles et des comptes principaux s'affiche, regroupée par rôle attribué.

gcloud

Exécutez la commande gcloud run jobs get-iam-policy :

gcloud run jobs get-iam-policy JOB_NAME

Contrôler l'accès à tous les services et tâches d'un projet

Si vous souhaitez attribuer des rôles à des comptes principaux sur tous les services et tâches d'un projet, vous pouvez attribuer des rôles IAM au niveau du projet.

Console (UI)

  1. Accédez à Google Cloud Console :

    Accéder à Google Cloud Console

  2. Recherchez le compte principal auquel vous souhaitez attribuer un rôle à l'échelle du projet.

  3. Cliquez sur l'icône en forme de crayon située à droite de la ligne du compte principal.

  4. Cliquez sur Ajouter un autre rôle et sélectionnez le rôle souhaité.

  5. Cliquez sur Enregistrer.

gcloud

Exécutez la commande gcloud projects add-iam-policy-binding :

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member=MEMBER_TYPE \
  --role=ROLE

MEMBER_TYPE correspond au type de compte principal (par exemple, user:email@domain.com) et ROLE au rôle (par exemple, roles/run.admin).

Les types de comptes principaux allUsers et allAuthenticatedUsers ne peuvent pas être appliqués au niveau du projet. Ils doivent être ajoutés à chaque service individuellement.

Désactiver le demandeur Cloud Run pour les services

Vous pouvez désactiver ou réactiver la vérification IAM du demandeur Cloud Run pour tous les services Cloud Run. La vérification est appliquée par défaut.

Pour désactiver ou réactiver la vérification IAM du demandeur sur un service, vous devez disposer des autorisations suivantes :

  • run.services.create
  • run.services.update
  • run.services.setIamPolicy

Ces autorisations sont incluses dans les rôles de propriétaire et d'administrateur Cloud Run. Consultez la page Rôles IAM Cloud Run pour obtenir la liste complète des rôles et des autorisations associées.

Désactiver la vérification IAM du demandeur Cloud Run

  1. Ignorez la contrainte de règle de l'organisation constraints/run.requireInvokerIam au niveau de l'organisation ou du projet, si nécessaire. Vous pouvez utiliser des tags pour définir des règles plus précises pour des services Cloud Run spécifiques.

    Pour supprimer la contrainte de règle de la console Google Cloud :

    1. Accéder à IAM

    2. Cliquez sur l'onglet Règles de l'organisation.

    3. Recherchez la règle Autoriser l'appelant IAM désactivé (Cloud Run), puis sélectionnez Modifier la règle dans le menu "Actions".

    4. Assurez-vous que la règle est configurée sur Non appliquée.

    5. Cliquez sur Définir la règle.

  2. Désactivez la vérification :

    Console

    1. Accédez à Cloud Run

    2. Cliquez sur Créer un service si vous configurez un nouveau service, puis remplissez la page des paramètres initiaux du service selon vos besoins. Si vous configurez un service existant, cliquez sur celui-ci, puis sur Sécurité.

    3. Décochez l'option Utiliser Cloud IAM pour authentifier les requêtes entrantes

    4. Cliquez sur Créer ou sur Enregistrer.

    gcloud

    • Utilisez l'option --no-invoker-iam-check :

      gcloud run deploy SERVICE_NAME --no-invoker-iam-check

      SERVICE_NAME est le nom du service.

    YAML

    1. Pour afficher et télécharger la configuration :

      gcloud run services describe SERVICE --format export > service.yaml
    2. Mettez à jour l'annotation run.googleapis.com/invoker-iam-disabled: :

      apiVersion: serving.knative.dev/v1
      kind: Service
      metadata:
         annotations:
            run.googleapis.com/invoker-iam-disabled: true
         name: SERVICE_NAME

      SERVICE_NAME correspond au nom de votre service Cloud Run.

    3. Remplacez la configuration du service en utilisant la commande suivante :

      gcloud run services replace service.yaml

Vérifiez que la vérification est désactivée après le déploiement en accédant au point de terminaison HTTPS du service.

Réactiver la vérification IAM du demandeur Cloud Run

Pour réactiver la vérification :

Console

  1. Accédez à Cloud Run

  2. Cliquez sur le service, puis sur Sécurité.

  3. Sélectionnez l'option Utiliser Cloud IAM pour authentifier les requêtes entrantes

  4. Cliquez sur Enregistrer.

gcloud

  • Mettez à jour le service en transmettant l'indicateur --invoker-iam-check :

    gcloud beta run services SERVICE_NAME --invoker-iam-check

    SERVICE_NAME est le nom du service.

YAML

  1. Pour afficher et télécharger la configuration :

    gcloud run services describe SERVICE --format export > service.yaml
  2. Mettez à jour l'annotation run.googleapis.com/invokerIamCheckDisabled: :

    apiVersion: serving.knative.dev/v1
     kind: Service
     metadata:
        annotations:
           run.googleapis.com/invokerIamCheckDisabled: false
        name: SERVICE_NAME

    SERVICE_NAME correspond au nom de votre service Cloud Run.

Vérifiez que la vérification est réactivée après le déploiement en accédant au point de terminaison HTTPS du service.

Étapes suivantes

Découvrez comment authentifier les développeurs, les services et les utilisateurs en toute sécurité pour accéder aux services que vous venez de sécuriser.