Cara menggunakan Identity Aware Proxy (IAP) sekali klik dengan Cloud Run

1. Pengantar

Ringkasan

Codelab ini memandu Anda cara mengaktifkan Identity-Aware Proxy dari Cloud Run dan mengamankan traffic yang ditujukan untuk layanan Cloud Run dengan merutekan ke IAP untuk autentikasi. Dengan mengaktifkan IAP dari Cloud Run, Anda dapat merutekan traffic dengan sekali klik dari semua jalur traffic masuk, termasuk URL run.app default dan load balancer.

Dalam codelab ini, Anda akan men-deploy layanan hello container. Hanya pengguna yang telah dimasukkan dalam daftar yang diizinkan menggunakan IAP yang memiliki akses ke layanan.

Untuk batasan umum lainnya, lihat dokumentasi IAP di Cloud Run.

Yang akan Anda pelajari

  • Cara mengaktifkan IAP sekali klik untuk Cloud Run
  • Cara memberikan akses identitas pengguna ke layanan Cloud Run melalui IAP

2. Sebelum memulai

Mengaktifkan API

Sebelum Anda dapat mulai menggunakan codelab ini, aktifkan API berikut dengan menjalankan:

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

3. Buat variabel lingkungan

Tetapkan variabel lingkungan yang akan digunakan di seluruh codelab ini

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. Men-deploy layanan dengan IAP diaktifkan

Buat akun layanan (digunakan sebagai identitas layanan Cloud Run) dengan menjalankan perintah ini:

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

Deploy image container hello dengan IAP diaktifkan.

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

Catatan: Jika Anda mencoba mengakses aplikasi sekarang, Anda akan melihat halaman error You don't have access. Pada langkah berikutnya, Anda akan memberikan akses pengguna melalui IAP.

5. Mengonfigurasi Kontrol Akses IAP

Buat agen layanan IAP.

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

Tetapkan peran Cloud Run Invoker ke akun layanan IAP

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

Memberikan akses pengguna dengan mengizinkan pengguna atau grup tertentu melalui 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

Catatan: Anda juga dapat menggunakan group:grup-anda@example.com di parameter anggota jika mau.

6. Menguji aplikasi

Memverifikasi akses ke aplikasi

Dapatkan URL untuk contoh layanan Cloud Run.

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

Buka URL di browser Anda dan Anda akan melihat "It's Running! Selamat, Anda berhasil men-deploy image container ke Cloud Run"

Memverifikasi penghapusan akses ke aplikasi

Anda dapat menghapus akses Anda ke aplikasi dengan menjalankan perintah berikut.

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

Tunggu beberapa menit hingga kebijakan IAM diterapkan. Sekarang coba buka URL di browser Anda dan Anda akan melihat halaman error You don't have access.

7. Selamat!

Selamat, Anda telah menyelesaikan codelab.

Sebaiknya tinjau dokumentasi Cloud Run IAP.

Yang telah kita bahas

  • Cara mengaktifkan IAP sekali klik untuk Cloud Run
  • Cara memberikan akses identitas pengguna ke layanan Cloud Run melalui IAP

8. Pembersihan

Untuk menghindari tagihan yang tidak disengaja, misalnya, jika layanan Cloud Run dipanggil secara tidak sengaja lebih banyak daripada alokasi pemanggilan Cloud Run bulanan Anda di tingkat gratis, Anda dapat menghapus layanan Cloud Run iap-example yang Anda buat di Langkah 6.

Untuk menghapus layanan Cloud Run, buka Konsol Cloud Run di https://console.cloud.google.com/run, lalu hapus layanan iap-example.

Untuk menghapus seluruh project, buka Kelola Resource, pilih project Anda, lalu pilih Hapus. Jika menghapus project, Anda harus mengubah project di Cloud SDK. Anda dapat melihat daftar semua project yang tersedia dengan menjalankan gcloud projects list.