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

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