Utiliser Identity-Aware Proxy (IAP) en un clic avec Cloud Run

1. Introduction

Présentation

Cet atelier de programmation vous 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.

Dans cet atelier de programmation, vous allez déployer le service de conteneur hello. Seuls les utilisateurs ajoutés à la liste d'autorisation à l'aide d'IAP ont accès au service.

Pour connaître les autres limites connues, veuillez consulter la documentation sur IAP sur Cloud Run.

Points abordés

  • Activer IAP en un clic pour Cloud Run
  • Accorder à un utilisateur l'accès à un service Cloud Run via IAP

2. Avant de commencer

Activer les API

Avant de commencer à utiliser cet atelier de programmation, activez les API suivantes en exécutant la commande :

gcloud services enable \
    artifactregistry.googleapis.com \
    cloudbuild.googleapis.com \
    iap.googleapis.com \
    run.googleapis.com \
    cloudresourcemanager.googleapis.com

3. Créer des variables d'environnement

Définissez les variables d'environnement qui seront utilisées tout au long de cet atelier de programmation.

export PROJECT_ID=<YOUR_PROJECT_ID>
export REGION=<YOUR_REGION>

export SERVICE_NAME=iap-example
export SERVICE_ACCOUNT_NAME=iap-example-sa
export PROJECT_NUMBER=$(gcloud projects describe "${PROJECT_ID}" --format="value(projectNumber)")

4. Déployer un service avec IAP activé

Créez le compte de service (utilisé comme identité du service Cloud Run) en exécutant cette commande :

gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME \
  --display-name="IAP codelab CR identity"

Déployez l'image de conteneur "hello" avec IAP activé.

gcloud beta run deploy ${SERVICE_NAME} \
    --image=us-docker.pkg.dev/cloudrun/container/hello \
    --region=${REGION} \
    --service-account $SERVICE_ACCOUNT_NAME@${PROJECT_ID}.iam.gserviceaccount.com \
    --no-allow-unauthenticated \
    --iap

Remarque : Si vous essayez d'accéder à l'application maintenant, la page d'erreur You don't have access s'affiche. À l'étape suivante, vous accorderez l'accès à un utilisateur via IAP.

5. Configurer le contrôle des accès IAP

Créez l'agent de service IAP.

gcloud beta services identity create --service=iap.googleapis.com --project=${PROJECT_ID}

Attribuer le rôle "Demandeur Cloud Run" au compte de service IAP

gcloud projects add-iam-policy-binding ${PROJECT_ID} \
  --member="serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-iap.iam.gserviceaccount.com" \
  --role="roles/run.invoker"

Accorder l'accès à un utilisateur en autorisant des utilisateurs ou des groupes spécifiques via IAP

EMAIL_ADDRESS=<YOUR_EMAIL>

gcloud beta iap web add-iam-policy-binding \
    --resource-type=cloud-run \
    --service=${SERVICE_NAME} \
    --region=${REGION} \
    --member=user:${EMAIL_ADDRESS} \
    --role=roles/iap.httpsResourceAccessor \
    --condition=None

Remarque : Si vous le souhaitez, vous pouvez également utiliser group:your-group@example.com dans le paramètre "member".

6. Tester l'application

Vérifier l'accès à l'application

Obtenez l'URL de l'exemple de service Cloud Run.

gcloud run services describe ${SERVICE_NAME} --region ${REGION} --format 'value(status.url)'

Ouvrez l'URL dans votre navigateur. Le message "It's Running! Félicitations, vous avez déployé une image de conteneur sur Cloud Run"

Vérifier la suppression de l'accès à l'application

Vous pouvez supprimer votre accès à l'application en exécutant la commande suivante.

gcloud beta iap web remove-iam-policy-binding \
    --resource-type=cloud-run \
    --service=${SERVICE_NAME} \
    --region=${REGION} \
    --member=user:${EMAIL_ADDRESS} \
    --role=roles/iap.httpsResourceAccessor

Patientez quelques minutes pour que la règle IAM se propage. Essayez maintenant d'ouvrir l'URL dans votre navigateur. La page d'erreur You don't have access s'affiche.

7. Félicitations !

Bravo ! Vous avez terminé cet atelier de programmation.

Nous vous recommandons de consulter la documentation Cloud Run IAP.

Points abordés

  • Activer IAP en un clic pour Cloud Run
  • Accorder à un utilisateur l'accès à un service Cloud Run via IAP

8. Effectuer un nettoyage

Pour éviter des frais involontaires, par exemple si les services Cloud Run sont invoqués par inadvertance plus de fois que votre quota mensuel d'invocations Cloud Run dans le niveau sans frais, vous pouvez supprimer le service Cloud Run iap-example que vous avez créé à l'étape 6.

Pour supprimer le service Cloud Run, accédez à la console Cloud Run à l'adresse https://console.cloud.google.com/run, puis supprimez le service iap-example.

Pour supprimer l'intégralité du projet, accédez à Gérer les ressources, sélectionnez votre projet, puis choisissez "Supprimer". Si vous supprimez le projet, vous devrez changer de projet dans votre SDK Cloud. Vous pouvez afficher la liste de tous les projets disponibles en exécutant gcloud projects list.