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 ressources Cloud Run, 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.

Si vous avez créé ou déployé des fonctions à l'aide des commandes gcloud functions ou des API Cloud Functions v2 et que vous devez utiliser ces options pour la rétrocompatibilité, consultez Contrôle des accès avec 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
Administrateur Cloud Run (roles/run.admin) Peut créer, mettre à jour et supprimer des services, des jobs et des pools de nœuds de calcul, 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, des jobs et des pools de nœuds de calcul, 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 les recommandations.
Lecteur Cloud Run (roles/run.viewer) Peut consulter les services, les jobs, les exécutions de jobs et les pools de nœuds de calcul.
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.
Développeur de source Cloud Run (roles/run.sourceDeveloper) Peut déployer et gérer les ressources déployées depuis la source Cloud Run.
Outil de création Cloud Run (roles/run.builder) Peut créer des fonctions Cloud Run et des services déployés depuis la source.
Demandeur de service Cloud Run (roles/run.servicesInvoker) Peut appeler des services Cloud Run.
Exécuteur de jobs Cloud Run (roles/run.jobsExecutor) Peut exécuter et annuler des jobs Cloud Run.
Exécuteur de jobs Cloud Run avec forçages (roles/run.jobsExecutorWithOverrides) Peut exécuter et annuler des jobs Cloud Run avec des forçages.

Contrôler l'accès à une ressource Cloud Run individuelle

IAM vous permet de contrôler les accès par service, par job ou par pool de nœuds de calcul.

Ajouter des comptes principaux

Pour ajouter des comptes principaux à un service :

Console

  1. Accédez à la console Google Cloud  :

    Accéder à la console Google Cloud

  2. Cochez la case à 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é 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 Attribuer des rôles, 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 auxquelles ils correspondent.
  7. Cliquez sur Enregistrer.

gcloud

Exécutez la commande suivante :

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

Remplacez les éléments suivants :

  • SERVICE_NAME : nom du service.
  • PRINCIPAL : type d'entité principale (par exemple, user:email@domain.com). Pour obtenir la liste des valeurs acceptables pour PRINCIPAL, consultez Identifiants des comptes principaux.
  • ROLE : rôle. Pour obtenir la liste des valeurs acceptées pour ROLE, consultez Rôles IAM Cloud Run.

Supprimer des comptes principaux d'un rôle

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

Console

  1. Accédez à la console Google Cloud  :

    Accéder à la console Google Cloud

  2. Cochez la case située à côté du service pour lequel vous souhaitez supprimer des comptes principaux. Ne cliquez pas sur le service lui-même.
  3. Dans le volet d'informations situé 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 suivante :

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

Remplacez les éléments suivants :

  • SERVICE_NAME : nom du service.
  • PRINCIPAL : type d'entité principale (par exemple, user:email@domain.com). Pour obtenir la liste des valeurs acceptables pour PRINCIPAL, consultez Identifiants des comptes principaux.
  • ROLE : rôle. Pour obtenir la liste des valeurs acceptées pour ROLE, consultez la page Rôles IAM Cloud Run.

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

  1. Accédez à la console Google Cloud  :

    Accéder à la console Google Cloud

  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é 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 le champ Nouveaux comptes principaux, saisissez une ou plusieurs identités nécessitant un accès au service.
  3. Dans le menu Attribuer des rôles, 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 auxquelles ils correspondent.
  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. Cliquez sur la corbeille Supprimer sur la ligne 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": [
        PRINCIPAL
      ]
    }
  ]
}
EOF

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

gcloud run services set-iam-policy SERVICE_NAME policy.json

Pour obtenir la liste des valeurs acceptables pour PRINCIPAL, consultez Identifiants principaux. Pour obtenir la liste des valeurs acceptées pour ROLE, consultez la page Rôles IAM Cloud Run.

Afficher les comptes principaux

Pour afficher les comptes principaux d'un service :

Console

  1. Accédez à la console Google Cloud  :

    Accéder à la console Google Cloud

  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é 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 suivante :

gcloud run services get-iam-policy SERVICE_NAME

Contrôler l'accès à toutes les ressources Cloud Run 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 utiliser IAM au niveau du projet.

Console

  1. Accédez à la console Google Cloud  :

    Accéder à la console Google Cloud

  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=PRINCIPAL \
  --role=ROLE

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet Google Cloud.
  • PRINCIPAL : entité principale (par exemple, user:email@domain.com).
  • ROLE : rôle (par exemple, roles/run.admin).

Remplacez les éléments suivants :

  • SERVICE_NAME : nom du service (par exemple, my-service).
  • PRINCIPAL : entité principale (par exemple, user:email@domain.com).
  • ROLE : rôle (par exemple, roles/run.invoker).
  • REGION : région (par exemple, europe-west1).
  • KEY=VALUE : condition à inclure dans la liaison. L'indicateur --condition doit inclure les paires clé/valeur expression et title.

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.

Rendre un service public

Il existe deux façons de créer un service Cloud Run public :

  • Désactivez la vérification IAM du demandeur Cloud Run (recommandé).
  • Attribuez le rôle IAM Demandeur Cloud Run au type de membre allUsers.

Rôles requis

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 le rôle Administrateur Cloud Run (roles/run.admin). 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

La méthode recommandée pour rendre un service public consiste à désactiver la vérification IAM du demandeur Cloud Run. Cloud Run applique cette vérification par défaut. Utilisez cette solution lorsque le projet est soumis à la contrainte de partage restreint de domaine dans une règle d'administration.

Pour désactiver la vérification :

Console

  1. Dans la console Google Cloud , accédez à la page Cloud Run :

    Accédez à Cloud Run

  2. Si vous configurez un nouveau service, cliquez sur Créer un service, puis remplissez la page initiale des paramètres du service selon vos besoins.

    Si vous configurez un service existant, cliquez sur celui-ci, puis sur l'onglet Sécurité.

  3. Sélectionnez Autoriser l'accès public.

  4. Cliquez sur Créer ou sur Enregistrer.

gcloud

  • Pour un nouveau service, utilisez la commande gcloud run deploy avec l'option --no-invoker-iam-check :

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

    Remplacez SERVICE_NAME par le nom du service.

  • Pour un service existant, exécutez la commande gcloud run services update avec le flag --no-invoker-iam-check :

    gcloud run services update SERVICE_NAME --no-invoker-iam-check

Remplacez SERVICE_NAME par 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

    Remplacez SERVICE_NAME par le nom de votre service Cloud Run.

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

    gcloud run services replace service.yaml

Terraform

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez Commandes Terraform de base.

Ajoutez les éléments suivants à une ressource google_cloud_run_v2_service dans votre configuration Terraform :
resource "google_cloud_run_v2_service" "default" {
   name     = "SERVICE"
   location = "REGION"
   invoker_iam_disabled = true

   template {
      containers {
      image = "IMAGE_URL"
      }
   }
}

Remplacez les éléments suivants :

  • SERVICE : nom de votre service Cloud Run.
  • REGION : région Google Cloud , par exemple europe-west1.
  • IMAGE_URL : référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL est au format LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.

Vérifiez que le contrôle est désactivé 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. Dans la console Google Cloud , accédez à la page Services de Cloud Run :

    Accédez à Cloud Run

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

  3. Sélectionnez Authentification requise, puis Identity and Access Management (IAM).

  4. Cliquez sur Enregistrer.

gcloud

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

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

    Remplacez SERVICE_NAME par 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: 'false'
        name: SERVICE_NAME

    Remplacez SERVICE_NAME par le nom de votre service Cloud Run.

Terraform

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez Commandes Terraform de base.

Ajoutez les éléments suivants à une ressource google_cloud_run_v2_service dans votre configuration Terraform :
resource "google_cloud_run_v2_service" "default" {
   name     = "SERVICE"
   location = "REGION"
   invoker_iam_disabled = false

   template {
      containers {
      image = "IMAGE_URL"
      }
   }
}

Remplacez les éléments suivants :

  • SERVICE : nom de votre service Cloud Run.
  • REGION : région Google Cloud , par exemple europe-west1.
  • IMAGE_URL : référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL est au format LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.

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.

Configurer une règle d'administration pour la vérification IAM du demandeur Cloud Run

Si vous êtes administrateur, vous pouvez restreindre la possibilité de désactiver la vérification IAM de l'invocateur à l'aide de la contrainte gérée constraints/run.managed.requireInvokerIam. Cette contrainte n'est pas appliquée par défaut.

Attribuez le rôle Cloud Run IAM "Demandeur" au type de membre allUsers.

Vous pouvez autoriser l'accès public à 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 le rôle 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

Pour un service Cloud Run existant :

  1. Dans la console Google Cloud , accédez à la page Services de Cloud Run :

    Accéder à la console Google Cloud

  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é 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 Sélectionner un 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 et sélectionnez Autoriser l'accès public dans la section Authentification pour rendre le service disponible publiquement. Pour rendre un service privé, sélectionnez Exiger l'authentification.

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 l'accès public pour le SERVICE existant à l'aide de la commande suivante :

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

Terraform

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez Commandes Terraform de base.

Ajoutez les éléments suivants à une ressource google_cloud_run_v2_service dans votre configuration Terraform :
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.

Utiliser des conditions IAM

Vous pouvez utiliser les conditions IAM pour définir et appliquer contrôle des accès conditionnel basé sur des attributs pour certaines ressources Cloud Run. Cloud Run est compatible avec les attributs de condition (request.host) et (request.path) pour accorder un accès conditionnel lors de l'appel de services et de pools de nœuds de calcul Cloud Run.

Par exemple, pour accorder un accès conditionnel avec les attributs request.host et request.path lors de l'appel des services Cloud Run, ajoutez le champ condition lorsque vous exécutez la commande suivante :

gcloud run services add-iam-policy-binding SERVICE_NAME \
    --member=PRINCIPAL \
    --role=ROLE \
    --region=REGION \
    --condition=[KEY=VALUE,...]

Remplacez les éléments suivants :

  • SERVICE_NAME : nom du service (par exemple, my-service).
  • PRINCIPAL : entité principale (par exemple, user:email@domain.com).
  • ROLE : rôle (par exemple, roles/run.invoker).
  • REGION : région (par exemple, europe-west1).
  • KEY=VALUE : condition à inclure dans la liaison. L'indicateur --condition doit inclure les paires clé/valeur expression et title.

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