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

1. Pengantar

Ringkasan

Codelab ini akan memandu Anda cara mengaktifkan Identity-Aware Proxy dari Cloud Run dan mengamankan traffic yang terikat 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 dan load balancer default.

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

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. Membuat variabel lingkungan

Menetapkan 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 kepada pengguna melalui IAP.

5. Mengonfigurasi Kontrol Akses IAP

Buat agen layanan IAP.

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

Menetapkan 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 kepada 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:your-group@example.com di parameter anggota jika diinginkan.

6. Uji 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 "Sedang Berjalan! Selamat, Anda berhasil men-deploy image container ke Cloud Run"

Memverifikasi penghapusan akses ke aplikasi

Anda dapat menghapus akses 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 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 tidak sengaja dipanggil lebih dari alokasi pemanggilan Cloud Run bulanan Anda di paket gratis, Anda dapat menghapus layanan Cloud Run iap-example yang Anda buat di Langkah 6.

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

Untuk menghapus seluruh project, buka Mengelola 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.