Jak korzystać z serwera proxy identyfikującego tożsamość (IAP) w Cloud Run w jednym kliknięciu

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.