Informacje o tym ćwiczeniu (w Codelabs)
1. Wprowadzenie
Omówienie
Ten projekt kodu pokazuje, jak włączyć serwer proxy identyfikujący tożsamość z Cloud Run i zabezpieczyć ruch kierowany do usługi Cloud Run, kierując go do IAP w celu uwierzytelnienia. Po włączeniu IAP w Cloud Run możesz kierować ruch jednym kliknięciem ze wszystkich ścieżek przychodzących, w tym domyślnych adresów URL run.app i równoważników obciążenia.
W tym ćwiczeniu z programowania wdrożysz usługę kontenera hello. Dostęp do usługi mają tylko użytkownicy, którzy zostali dodani do listy dozwolonych za pomocą IAP.
Inne znane ograniczenia znajdziesz w dokumentacji IAP w Cloud Run.
Czego się nauczysz
- Jak włączyć IAP w Cloud Run za pomocą jednego kliknięcia
- Jak przyznać tożsamości użytkownika dostęp do usługi Cloud Run za pomocą IAP
2. Zanim zaczniesz
Włączanie interfejsów API
Zanim zaczniesz korzystać z tego ćwiczenia, włącz te interfejsy API:
gcloud services enable \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
iap.googleapis.com \
run.googleapis.com \
cloudresourcemanager.googleapis.com
3. Tworzenie zmiennych środowiskowych
Ustaw zmienne środowiskowe, których będziesz używać w trakcie tego ćwiczenia
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. Wdrażanie usługi z włączoną opcją IAP
Utwórz konto usługi (używane jako tożsamość usługi Cloud Run), uruchamiając to polecenie:
gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME \
--display-name="IAP codelab CR identity"
Wdróż obraz kontenera hello z włączoną obsługą IAP.
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
Uwaga: jeśli spróbujesz teraz otworzyć aplikację, zobaczysz stronę błędu You don't have access
. W następnym kroku przyznasz użytkownikowi dostęp przez IAP.
5. Konfigurowanie kontroli dostępu IAP
Utwórz agenta usługi IAP.
gcloud beta services identity create --service=iap.googleapis.com --project=${PROJECT_ID}
Przypisz do konta usługi IAP rolę wywołującego Cloud Run.
gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-iap.iam.gserviceaccount.com" \
--role="roles/run.invoker"
Przyznawanie dostępu użytkownikom przez zezwolenie na dostęp określonym użytkownikom lub grupom za pomocą 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
Uwaga: jeśli chcesz, możesz użyć w parametrze member adresu group:twoja-grupa@example.com.
6. Testowanie aplikacji
Weryfikowanie dostępu do aplikacji
Uzyskaj adres URL przykładowej usługi Cloud Run.
gcloud run services describe ${SERVICE_NAME} --region ${REGION} --format 'value(status.url)'
Otwórz adres URL w przeglądarce. Powinien wyświetlić się komunikat „It's Running! „Gratulacje! Udało Ci się wdrożyć obraz kontenera do Cloud Run”
Weryfikacja usunięcia dostępu do aplikacji
Możesz usunąć dostęp do aplikacji, uruchamiając to polecenie.
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
Zaczekaj kilka minut na propagowanie zasad IAM. Spróbuj otworzyć adres URL w przeglądarce. Zobaczysz stronę błędu You don't have access
.
7. Gratulacje!
Gratulujemy ukończenia ćwiczeń.
Zalecamy zapoznanie się z dokumentacją Cloud Run IAP.
Omówione zagadnienia
- Jak włączyć IAP jednym kliknięciem w Cloud Run
- Jak przyznać tożsamości użytkownika dostęp do usługi Cloud Run za pomocą IAP
8. Czyszczenie danych
Aby uniknąć przypadkowych opłat, na przykład jeśli usługi Cloud Run są nieumyślnie wywoływane więcej razy niż miesięczna alokacja wywołań Cloud Run w wersji bezpłatnej, możesz usunąć usługę Cloud Run iap-example
utworzoną w kroku 6.
Aby usunąć usługę Cloud Run, otwórz konsolę Cloud Run na stronie https://console.cloud.google.com/run i usuń usługę iap-example
.
Aby usunąć cały projekt, kliknij Zarządzanie zasobami, wybierz projekt i kliknij Usuń. Jeśli usuniesz projekt, musisz zmienić projekty w Cloud SDK. Aby wyświetlić listę wszystkich dostępnych projektów, uruchom gcloud projects list
.