Configurer Identity-Aware Proxy pour Cloud Run

Cette page explique comment activer Identity-Aware Proxy à partir de Cloud Run et sécuriser le trafic destiné à un service Cloud Run en l'acheminant vers IAP pour l'authentification. En activant IAP à partir de Cloud Run, vous pouvez acheminer le trafic en un seul clic depuis tous les chemins d'entrée, y compris les URL run.app par défaut et les équilibreurs de charge.

Limitations connues

  • Le projet doit appartenir à une organisation.
  • Les identités doivent appartenir à la même organisation.
  • Vous ne pouvez pas configurer IAP à la fois sur l'équilibreur de charge et sur le service Cloud Run.
  • Il est possible que certaines intégrations, comme Pub/Sub, cessent de fonctionner si IAP sont activés.

Avant de commencer

Activer IAP à partir de Cloud Run

Vous pouvez activer IAP à partir de Cloud Run.

Si vous utilisez à la fois IAP et IAM sur le même service Cloud Run, tenez compte des conditions suivantes :

  • Les vérifications IAP et IAM sont effectuées.

  • La vérification IAP a lieu en premier et accepte ou bloque les requêtes en fonction de la configuration IAP.

  • Si la requête réussit le contrôle IAP, IAP utilise son propre compte de service pour s'authentifier auprès du contrôle IAM de Cloud Run.

  • Étant donné que la vérification IAP a lieu en premier, il est possible que certains services, comme Pub/Sub, ne s'authentifient pas correctement.

Activez IAP depuis Cloud Run à l'aide de la console Google Cloud , de Google Cloud CLI ou de Terraform.

Console

Pour activer IAP à partir de Cloud Run :

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

    Accédez à Cloud Run

  2. Si vous configurez un nouveau service sur lequel effectuer un déploiement, sélectionnez Déployer un conteneur > Service. Si vous configurez et déployez un service existant, cliquez sur ce service, puis sur Modifier et déployer la nouvelle révision.

  3. Si vous configurez un nouveau service, remplissez la page initiale des paramètres du service selon vos besoins, puis sélectionnez Authentification avancée avec Identity-Aware Proxy (IAP).

  4. Si vous configurez et déployez un service existant, cliquez sur le service, puis sélectionnez Authentification avancée avec Identity-Aware Proxy (IAP).

  5. Cliquez sur Modifier la règle pour créer une règle d'accès contextuel :

    • Ajoutez un ou plusieurs comptes principaux et, éventuellement, le niveau d'accès que chaque compte principal doit respecter pour accéder à l'application.

    • Cliquez sur Enregistrer.

  6. Cliquez sur Save.

gcloud

Pour activer IAP directement depuis Cloud Run, ajoutez l'indicateur --iap lorsque vous déployez votre application :

  1. Déployez votre service Cloud Run à l'aide de l'une des commandes suivantes :

    Pour un nouveau service :

    gcloud beta run deploy SERVICE_NAME \
    --region=REGION \
    --image=IMAGE_URL \
    --no-allow-unauthenticated \
    --iap

    Pour un service existant :

    gcloud beta run services update SERVICE_NAME \
    --region=REGION \
    --iap

    Remplacez :

    • SERVICE_NAME par le nom de votre service Cloud Run.
    • REGION par le nom de votre région Cloud Run. Exemple :europe-west1
    • IMAGE_URL par une 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 se présente sous la forme suivante : LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
  2. Pour vérifier que votre service est configuré avec IAP activé, exécutez la commande suivante :

    gcloud beta run services describe SERVICE_NAME

    La sortie doit contenir la chaîne suivante :

    Iap Enabled: true

Vous routez désormais tout le trafic destiné au service Cloud Run configuré vers IAP pour l'authentification avant de le transmettre au conteneur.

Terraform

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

Ajoutez la stratégie IAM pour accorder le rôle Demandeur Cloud Run (roles/run.invoker) à l'agent de service IAP. Pour en savoir plus, consultez Gérer l'accès aux ressources sécurisées par IAP.

  1. Ajoutez les éléments suivants à une ressource google_cloud_run_v2_service_iam_policy dans votre configuration Terraform.

    data "google_cloud_run_v2_service_iam_policy" "policy" {
      project = google_cloud_run_v2_service.default.project
      location = google_cloud_run_v2_service.default.location
      name = google_cloud_run_v2_service.default.name
    }
    
  2. Ajoutez les éléments suivants à une ressource google_cloud_run_v2_service dans votre configuration Terraform.

    resource "google_cloud_run_v2_service" "default" {
      provider = google-beta
      name     = "cloudrun-iap-service"
      location = "europe-west1"
      ingress      = "INGRESS_TRAFFIC_ALL"
      launch_stage = "BETA"
      iap_enabled  = true
    
      template {
        containers {
          image = "us-docker.pkg.dev/cloudrun/container/hello"
        }
      }
    }
    

Désactiver IAP à partir de Cloud Run

Vous pouvez désactiver IAP à l'aide de la console Google Cloud ou de Google Cloud CLI.

Console

Pour désactiver IAP à partir de Cloud Run :

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

    Accédez à Cloud Run

  2. Cliquez sur le service existant que vous souhaitez modifier.

  3. Cliquez sur Sécurité, puis décochez Authentification avancée avec Identity-Aware Proxy (IAP).

  4. Cliquez sur Enregistrer.

gcloud

Pour désactiver IAP directement depuis Cloud Run, ajoutez l'indicateur --no-iap lorsque vous déployez votre application :

  1. Déployez votre service Cloud Run à l'aide de l'une des commandes suivantes :

    Pour un nouveau service :

    gcloud beta run deploy SERVICE_NAME \
    --region=REGION \
    --image=IMAGE_URL \
    --no-iap

    Pour un service existant :

    gcloud beta run services update SERVICE_NAME \
    --region=REGION \
    --no-iap

    Remplacez :

    • SERVICE_NAME par le nom de votre service Cloud Run.
    • REGION par le nom de votre région Cloud Run.
    • IMAGE_URL par une 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 se présente sous la forme suivante : LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
  2. Pour vérifier que votre service n'est plus configuré avec IAP activé, exécutez la commande suivante :

    gcloud beta run services describe SERVICE_NAME

    La sortie ne doit plus contenir la chaîne suivante :

    Iap Enabled: true

Vous n'acheminez plus tout le trafic destiné au service Cloud Run configuré vers IAP pour l'authentification avant de le transmettre au conteneur.

Gérer l'accès des utilisateurs ou des groupes

Par défaut, IAP pour Cloud Run utilise des identités dans l'organisation avec des comptes Google. Vous pouvez ajouter ou supprimer l'accès à un service Cloud Run à l'aide de la console Google Cloud ou de Google Cloud CLI.

Console

Pour ajouter ou supprimer un accès :

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

    Accédez à Cloud Run

  2. Cliquez sur le service existant que vous souhaitez modifier, puis sur Sécurité.

  3. Sous IAP, cliquez sur Modifier la règle.

  4. Pour ajouter un accès, saisissez le compte principal et, éventuellement, le ou les niveaux d'accès que vous souhaitez ajouter.

  5. Pour supprimer l'accès d'un compte principal existant, cliquez sur l'icône Supprimer la règle à côté de Niveaux d'accès.

  6. Cliquez sur Enregistrer.

gcloud

Pour ajouter ou supprimer l'accès à un service Cloud Run pour des utilisateurs ou des groupes individuels de votre organisation, exécutez l'une des commandes suivantes :

  • Pour ajouter un accès :

    gcloud beta iap web add-iam-policy-binding \
    --member=user:USER_EMAIL \
    --role=roles/iap.httpsResourceAccessor \
    --region=REGION \
    --resource-type=cloud-run \
    --service=SERVICE_NAME
  • Pour supprimer l'accès :

    gcloud beta iap web remove-iam-policy-binding \
    --member=user:USER_EMAIL \
    --role=roles/iap.httpsResourceAccessor \
    --region=REGION \
    --resource-type=cloud-run \
    --service=SERVICE_NAME
  • Pour afficher les accès :

    gcloud beta iap web get-iam-policy \
    --region=REGION \
    --resource-type=cloud-run \
    --service=SERVICE_NAME

Remplacez :

  • USER_EMAIL par l'adresse e-mail de l'utilisateur.
  • REGION par le nom de votre région Cloud Run.
  • SERVICE_NAME par le nom de votre service Cloud Run.

Dépannage

L'échec de l'agent de service entraîne une erreur IAM

L'activation d'IAP sur un nouveau projet pour la première fois peut entraîner l'erreur suivante :

Setting IAM permissions failed

Cela est dû à un échec de l'agent de service Cloud Run. Pour résoudre le problème, réactivez IAP ou définissez manuellement la stratégie IAM.

Étapes suivantes