Autoriser l'accès public (non authentifié)

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

  • Désactiver la vérification IAM du demandeur Cloud Run (recommandé)
  • Attribuer 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 limité par domaine dans une règle d'administration.

Pour désactiver la vérification :

Console

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

    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 le service, 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'indicateur --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, utilisez la commande gcloud run services update avec l'indicateur --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 la page Commandes Terraform de base.

Ajoutez les éléments suivants à une google_cloud_run_v2_service ressource 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, par exemple europe-west1. Google Cloud
  • 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 suit le format LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG

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. Dans la Google Cloud console, accédez à la page Services de Cloud Run :

    Accédez à Cloud Run

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

  3. Sélectionnez Exiger l'authentification et 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 la page Commandes Terraform de base.

Ajoutez les éléments suivants à une google_cloud_run_v2_service ressource 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, par exemple europe-west1. Google Cloud
  • 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 suit le 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 limiter la possibilité de désactiver la vérification IAM du demandeur à l'aide de la contrainte gérée constraints/run.managed.requireInvokerIam. Cette contrainte n'est pas appliquée par défaut.

Attribuer le rôle IAM Demandeur Cloud Run au type de membre allUsers

Vous pouvez autoriser l'accès public à un service en attribuant le rôle IAM 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 Google Cloud console, accédez à la page Services de Cloud Run :

    Accéder à la Google Cloud console

  2. À gauche du service que vous souhaitez rendre public, cochez la case. Ne cliquez pas sur le service lui-même.

  3. Dans le volet d'informations 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é à vérifier 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 nouveau service que vous créez, créez-le et sélectionnez Autoriser l'accès public dans la section Authentification pour le rendre accessible au public. 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 au SERVICE existant à l'aide de :

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

Terraform

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

Ajoutez les éléments suivants à une google_cloud_run_v2_service ressource 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.