1. Einführung
Übersicht
In diesem Codelab erfahren Sie, wie Sie Identity-Aware Proxy über Cloud Run aktivieren und den Traffic für einen Cloud Run-Dienst schützen, indem Sie ihn zur Authentifizierung an IAP weiterleiten. Wenn Sie IAP über Cloud Run aktivieren, können Sie Traffic mit einem einzigen Klick von allen Ingress-Pfaden weiterleiten, einschließlich der Standard-URLs run.app und Load-Balancern.
In diesem Codelab stellen Sie den „hello“-Containerdienst bereit. Nur Nutzer, die über IAP auf die Zulassungsliste gesetzt wurden, haben Zugriff auf den Dienst.
Weitere bekannte Einschränkungen finden Sie in der Dokumentation zu IAP in Cloud Run.
Lerninhalte
- IAP mit einem Klick für Cloud Run aktivieren
- Einer Nutzeridentität über IAP Zugriff auf einen Cloud Run-Dienst gewähren
2. Hinweis
APIs aktivieren
Bevor Sie mit diesem Codelab beginnen können, müssen Sie die folgenden APIs aktivieren. Führen Sie dazu folgenden Befehl aus:
gcloud services enable \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
iap.googleapis.com \
run.googleapis.com \
cloudresourcemanager.googleapis.com
3. Umgebungsvariablen erstellen
Umgebungsvariablen festlegen, die in diesem Codelab verwendet werden
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. Dienst mit aktivierter IAP bereitstellen
Erstellen Sie das Dienstkonto (das als Cloud Run-Dienstidentität verwendet wird) mit diesem Befehl:
gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME \
--display-name="IAP codelab CR identity"
Stellen Sie das Container-Image „hello“ mit aktivierter IAP bereit.
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
Hinweis: Wenn Sie jetzt versuchen, auf die Anwendung zuzugreifen, wird die Fehlerseite You don't have access angezeigt. Im nächsten Schritt gewähren Sie einem Nutzer Zugriff über IAP.
5. IAP-Zugriffssteuerung konfigurieren
Erstellen Sie den IAP-Dienst-Agent.
gcloud beta services identity create --service=iap.googleapis.com --project=${PROJECT_ID}
Dem IAP-Dienstkonto die Rolle „Cloud Run-Aufrufer“ zuweisen
gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-iap.iam.gserviceaccount.com" \
--role="roles/run.invoker"
Nutzern Zugriff gewähren, indem Sie bestimmte Nutzer oder Gruppen über IAP zulassen
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
Hinweis: Sie können im Parameter „member“ auch „group:your-group@example.com“ verwenden.
6. Anwendung testen
Zugriff auf die App bestätigen
Rufen Sie die URL für den Beispiel-Cloud Run-Dienst ab.
gcloud run services describe ${SERVICE_NAME} --region ${REGION} --format 'value(status.url)'
Öffnen Sie die URL in Ihrem Browser. Dort sollte „It's Running!“ (Sie läuft!) angezeigt werden. Herzlichen Glückwunsch, Sie haben ein Container-Image erfolgreich in Cloud Run bereitgestellt.“
Entfernen des Zugriffs auf die App bestätigen
Sie können Ihren Zugriff auf die App mit dem folgenden Befehl entfernen.
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
Warten Sie einige Minuten, bis die IAM-Richtlinie übernommen wird. Wenn Sie die URL jetzt in Ihrem Browser öffnen, wird die Fehlerseite You don't have access angezeigt.
7. Glückwunsch!
Herzlichen Glückwunsch zum Abschluss des Codelabs!
Wir empfehlen, die Dokumentation zu Cloud Run IAP zu lesen.
Behandelte Themen
- 1-Klick-IAP für Cloud Run aktivieren
- Einer Nutzeridentität über IAP Zugriff auf einen Cloud Run-Dienst gewähren
8. Bereinigen
Um unbeabsichtigte Gebühren zu vermeiden, z. B. wenn die Cloud Run-Dienste versehentlich öfter aufgerufen werden als Ihre monatliche Cloud Run-Aufrufkontingent im kostenlosen Kontingent, können Sie den Cloud Run-Dienst iap-example löschen, den Sie in Schritt 6 erstellt haben.
Wenn Sie den Cloud Run-Dienst löschen möchten, rufen Sie die Cloud Run Console unter https://console.cloud.google.com/run auf und löschen Sie den iap-example-Dienst.
Wenn Sie das gesamte Projekt löschen möchten, rufen Sie Ressourcen verwalten auf, wählen Sie Ihr Projekt aus und klicken Sie auf „Löschen“. Wenn Sie das Projekt löschen, müssen Sie das Projekt in Ihrem Cloud SDK ändern. Sie können die Liste aller verfügbaren Projekte mit gcloud projects list aufrufen.