Mengonfigurasi IAP untuk Cloud Run

Halaman ini menjelaskan cara mengaktifkan IAP 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.

Batasan umum

  • Project harus berada dalam organisasi.
  • Identitas harus berasal dari dalam organisasi yang sama.
  • Anda tidak dapat mengonfigurasi IAP di load balancer dan layanan Cloud Run.
  • Beberapa integrasi, seperti Pub/Sub, mungkin berhenti berfungsi jika IAP diaktifkan.

Sebelum memulai

Peran yang diperlukan

Untuk mendapatkan izin yang diperlukan untuk mengaktifkan IAP, minta administrator Anda untuk memberi Anda peran IAM berikut:

Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.

Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran kustom atau peran yang telah ditentukan lainnya.

Mengaktifkan IAP dari Cloud Run

Anda dapat mengaktifkan IAP dari Cloud Run.

Jika Anda menggunakan IAP dan Identity and Access Management (IAM) pada layanan Cloud Run yang sama, perhatikan kondisi berikut:

  • Pemeriksaan IAP dan IAM dilakukan.

  • Pemeriksaan IAP terjadi terlebih dahulu dan menerima atau memblokir permintaan berdasarkan konfigurasi IAP.

  • Jika permintaan lulus pemeriksaan IAP, IAP menggunakan akun layanannya sendiri untuk mengautentikasi ke pemeriksaan IAM Cloud Run.

  • Karena pemeriksaan IAP terjadi terlebih dahulu, beberapa layanan, seperti Pub/Sub, mungkin tidak diautentikasi dengan benar.

Aktifkan IAP dari Cloud Run menggunakan konsol Google Cloud , Google Cloud CLI, atau Terraform.

Konsol

Saat Anda mengaktifkan IAP untuk Cloud Run, IAP memerlukan izin untuk memanggil layanan Cloud Run Anda. Jika Anda mengaktifkan IAP menggunakan Google Cloud konsol, izin ini diberikan secara otomatis dengan menetapkan peran Cloud Run Invoker (roles/run.invoker) kepada agen layanan IAP.

Untuk mengaktifkan IAP dari Cloud Run:

  1. Di konsol Google Cloud , buka halaman Cloud Run:

    Buka Cloud Run

  2. Jika Anda mengonfigurasi layanan baru yang akan di-deploy, pilih Deploy container > Service. Jika Anda mengonfigurasi dan men-deploy layanan yang sudah ada, klik layanan, lalu klik Edit dan deploy revisi baru.

  3. Jika Anda mengonfigurasi layanan baru, isi halaman setelan layanan awal sesuai kebutuhan, lalu pilih Advanced authentication with Identity Aware Proxy (IAP).

  4. Jika Anda mengonfigurasi dan men-deploy layanan yang sudah ada, klik layanan, lalu pilih Autentikasi lanjutan dengan Identity Aware Proxy (IAP).

  5. Klik Edit kebijakan untuk membuat kebijakan akses kontekstual:

    • Tambahkan satu atau beberapa akun utama dan, secara opsional, tingkat akses yang harus dipenuhi setiap akun utama untuk akses aplikasi.

    • Klik Simpan.

  6. Klik Simpan.

gcloud

Untuk mengaktifkan IAP langsung dari Cloud Run, tambahkan tanda --iap saat men-deploy aplikasi Anda dan berikan izin pemanggil ke agen layanan IAP:

  1. Deploy layanan Cloud Run Anda menggunakan salah satu perintah berikut:

    Untuk layanan baru:

    gcloud beta run deploy SERVICE_NAME \
    --region=REGION \
    --image=IMAGE_URL \
    --no-allow-unauthenticated \
    --iap

    Untuk layanan yang sudah ada:

    gcloud beta run services update SERVICE_NAME \
    --region=REGION \
    --iap

    Ganti kode berikut:

    • SERVICE_NAME: nama layanan Cloud Run Anda.
    • REGION: nama region Cloud Run Anda. Contoh, europe-west1.
    • IMAGE_URL: referensi ke image container, misalnya, us-docker.pkg.dev/cloudrun/container/hello:latest. Jika Anda menggunakan Artifact Registry, repositori REPO_NAME harus sudah dibuat. URL mengikuti format LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
    • PROJECT_NUMBER: Nomor project Google Cloud Anda.
  2. Memberikan izin pemanggil ke agen layanan IAP:

    gcloud run services add-iam-policy-binding SERVICE_NAME \
    --region=REGION \
    --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-iap. \
    --role=roles/run.invoker

    Ganti kode berikut:

    • SERVICE_NAME: nama layanan Cloud Run Anda.
    • REGION: nama region Cloud Run Anda. Contoh, europe-west1.
    • PROJECT_NUMBER: Nomor project Google Cloud Anda.
  3. Untuk memverifikasi bahwa layanan Anda dikonfigurasi dengan IAP diaktifkan, jalankan perintah berikut:

    gcloud beta run services describe SERVICE_NAME

    Output harus berisi string berikut:

    Iap Enabled: true

Sekarang Anda merutekan semua traffic yang ditujukan untuk layanan Cloud Run yang dikonfigurasi ke IAP untuk autentikasi sebelum diteruskan ke container.

Terraform

Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.

Untuk mengaktifkan IAP menggunakan Terraform, Anda harus memperbarui definisi layanan dan menambahkan binding kebijakan IAM untuk memberikan izin pemanggil ke IAP.

  1. Tambahkan iap_enabled = true ke resource google_cloud_run_v2_service di konfigurasi Terraform Anda untuk mengaktifkan IAP di layanan:

    resource "google_cloud_run_v2_service" "default" {
      provider = google-beta
      name     = "cloudrun-iap-service"
      location = "europe-west1"
      ingress      = "INGRESS_TRAFFIC_ALL"
      launch_stage = "BETA"
      iap_enabled  = true
    
      template {
        containers {
          image = "us-docker.pkg.dev/cloudrun/container/hello"
        }
      }
    }
    
  2. Tambahkan kode berikut untuk memberikan peran roles/run.invoker kepada agen layanan IAP.

    resource "google_cloud_run_v2_service_iam_member" "iap_invoker" {
      provider = google-beta
      project = google_cloud_run_v2_service.default.project
      location = google_cloud_run_v2_service.default.location
      name = google_cloud_run_v2_service.default.name
      role   = "roles/run.invoker"
      member = "serviceAccount:service-"PROJECT_NUMBER@gcp-sa-iap."
    }
    

    Ganti PROJECT_NUMBER dengan nomor project Anda.

  3. Opsional. Untuk mengambil data kebijakan IAM saat ini, tambahkan kode berikut ke resource google_cloud_run_v2_service_iam_policy di konfigurasi Terraform Anda.

    data "google_cloud_run_v2_service_iam_policy" "policy" {
      project = google_cloud_run_v2_service.default.project
      location = google_cloud_run_v2_service.default.location
      name = google_cloud_run_v2_service.default.name
    }
    

Menonaktifkan IAP dari Cloud Run

Anda dapat menonaktifkan IAP menggunakan konsol Google Cloud atau gcloud CLI.

Konsol

Untuk menonaktifkan IAP dari Cloud Run:

  1. Di konsol Google Cloud , buka halaman Cloud Run:

    Buka Cloud Run

  2. Klik layanan yang ada yang ingin Anda ubah.

  3. Klik Security, lalu hapus Advanced authentication with Identity Aware Proxy (IAP).

  4. Klik Simpan.

gcloud

Untuk menonaktifkan IAP langsung dari Cloud Run, tambahkan flag --no-iap saat men-deploy aplikasi Anda:

  1. Deploy layanan Cloud Run Anda menggunakan salah satu perintah berikut:

    Untuk layanan baru:

    gcloud beta run deploy SERVICE_NAME \
    --region=REGION \
    --image=IMAGE_URL \
    --no-iap

    Untuk layanan yang sudah ada:

    gcloud beta run services update SERVICE_NAME \
    --region=REGION \
    --no-iap

    Ganti kode berikut:

    • SERVICE_NAME: nama layanan Cloud Run Anda.
    • REGION: nama region Cloud Run Anda.
    • IMAGE_URL: referensi ke image container, misalnya, us-docker.pkg.dev/cloudrun/container/hello:latest. Jika Anda menggunakan Artifact Registry, repositori REPO_NAME harus sudah dibuat. URL mengikuti format LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
  2. Untuk memverifikasi bahwa layanan Anda tidak lagi dikonfigurasi dengan IAP yang diaktifkan, jalankan perintah berikut:

    gcloud beta run services describe SERVICE_NAME

    Output tidak boleh lagi berisi string berikut:

    Iap Enabled: true

Anda tidak lagi merutekan semua traffic yang ditujukan untuk layanan Cloud Run yang dikonfigurasi ke IAP untuk autentikasi sebelum diteruskan ke penampung.

Mengelola akses pengguna atau grup

Secara default, IAP untuk Cloud Run menggunakan identitas dalam organisasi dengan Akun Google. Anda dapat menambahkan atau menghapus akses ke layanan Cloud Run menggunakan konsol Google Cloud atau gcloud CLI.

Konsol

Untuk menambahkan atau menghapus akses:

  1. Di konsol Google Cloud , buka halaman Cloud Run:

    Buka Cloud Run

  2. Klik layanan yang ada yang ingin Anda ubah, lalu klik Keamanan.

  3. Di bagian IAP, klik Edit kebijakan.

  4. Untuk menambahkan akses, masukkan prinsipal dan, secara opsional, tingkat akses yang ingin Anda tambahkan.

  5. Untuk menghapus akses dari akun utama yang ada, klik ikon Hapus kebijakan di samping Tingkat akses.

  6. Klik Simpan.

gcloud

Untuk menambahkan atau menghapus akses ke layanan Cloud Run bagi pengguna perorangan atau grup dalam organisasi Anda, jalankan salah satu perintah berikut:

  • Untuk menambahkan akses:

    gcloud beta iap web add-iam-policy-binding \
    --member=user:USER_EMAIL \
    --role=roles/iap.httpsResourceAccessor \
    --region=REGION \
    --resource-type=cloud-run \
    --service=SERVICE_NAME
  • Untuk menghapus akses:

    gcloud beta iap web remove-iam-policy-binding \
    --member=user:USER_EMAIL \
    --role=roles/iap.httpsResourceAccessor \
    --region=REGION \
    --resource-type=cloud-run \
    --service=SERVICE_NAME
  • Untuk melihat akses:

    gcloud beta iap web get-iam-policy \
    --region=REGION \
    --resource-type=cloud-run \
    --service=SERVICE_NAME

Ganti kode berikut:

  • USER_EMAIL: alamat email pengguna.
  • REGION: nama region Cloud Run Anda.
  • SERVICE_NAME: nama layanan Cloud Run Anda.

Pemecahan masalah

Kegagalan Agen Layanan menyebabkan error IAM yang ditetapkan

Mengaktifkan IAP di project baru untuk pertama kalinya dapat menyebabkan error berikut:

Setting IAM permissions failed

Hal ini karena Agen Layanan Cloud Run gagal. Untuk mengatasi masalah ini, aktifkan IAP lagi atau tetapkan kebijakan IAM secara manual.

Langkah berikutnya