1. Wprowadzenie
Przegląd
W tym samouczku dowiesz się, jak włączyć Identity-Aware Proxy z Cloud Run i zabezpieczyć ruch kierowany do usługi Cloud Run, przekierowując go do IAP w celu uwierzytelnienia. Włączając IAP w Cloud Run, możesz jednym kliknięciem kierować ruch ze wszystkich ścieżek ruchu przychodzącego, w tym domyślnych adresów URL run.app i modułów równoważenia obciążenia.
W tym ćwiczeniu 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 jednym kliknięciem w Cloud Run
- Jak przyznać tożsamości użytkownika dostęp do usługi Cloud Run za pomocą IAP
2. Zanim zaczniesz
Włącz interfejsy API
Zanim zaczniesz korzystać z tego laboratorium, włącz te interfejsy API, uruchamiając to polecenie:
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óre będą używane podczas naszych ćwiczeń z programowania
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ą ochroną 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ą ochroną 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 uzyskać dostęp do aplikacji, 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 rolę Wywołujący Cloud Run do konta usługi IAP.
gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-iap.iam.gserviceaccount.com" \
--role="roles/run.invoker"
Przyznawanie użytkownikom dostępu przez zezwalanie określonym użytkownikom lub grupom na korzystanie z 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 wolisz, w parametrze member możesz też użyć adresu group:twoja-grupa@example.com.
6. Testowanie aplikacji
Sprawdzanie dostępu do aplikacji
Pobierz 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 się wyświetlić komunikat „It's Running! Gratulacje, udało Ci się wdrożyć obraz kontenera w Cloud Run”.
Potwierdź usunięcie 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 rozpowszechnienie zasad IAM. Teraz spróbuj otworzyć adres URL w przeglądarce. Zobaczysz stronę błędu You don't have access.
7. Gratulacje!
Gratulujemy ukończenia ćwiczenia!
Zalecamy zapoznanie się z dokumentacją IAP w Cloud Run.
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, np. jeśli usługi Cloud Run zostaną przypadkowo wywołane więcej razy niż miesięczna pula wywołań Cloud Run w bezpłatnej wersji, możesz usunąć usługę Cloud Run iap-example utworzoną w kroku 6.
Aby usunąć usługę Cloud Run, otwórz konsolę Cloud Run w Cloud Console pod adresem https://console.cloud.google.com/run i usuń usługę iap-example.
Aby usunąć cały projekt, otwórz Zarządzanie zasobami, wybierz projekt i kliknij Usuń. Jeśli usuniesz projekt, musisz zmienić projekty w Cloud SDK. Listę wszystkich dostępnych projektów możesz wyświetlić, uruchamiając polecenie gcloud projects list.