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
Aktifkan IAP API.
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan untuk mengaktifkan IAP, minta administrator Anda untuk memberi Anda peran IAM berikut:
-
Cloud Run Admin (
roles/run.admin
) di project -
Memberikan akses ke layanan yang mendukung IAP:
IAP Policy Admin (
roles/iap.admin
) pada project -
Buat layanan yang mendukung IAP atau perbarui layanan yang ada untuk mengaktifkan IAP:
-
Pembaca Artifact Registry (
roles/artifactregistry.reader
) pada image container yang di-deploy -
Service Account User (
roles/iam.serviceAccountUser
) pada identitas layanan
-
Pembaca Artifact Registry (
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:
Di konsol Google Cloud , buka halaman Cloud Run:
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.
Jika Anda mengonfigurasi layanan baru, isi halaman setelan layanan awal sesuai kebutuhan, lalu pilih Advanced authentication with Identity Aware Proxy (IAP).
Jika Anda mengonfigurasi dan men-deploy layanan yang sudah ada, klik layanan, lalu pilih Autentikasi lanjutan dengan Identity Aware Proxy (IAP).
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.
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:
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 formatLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - PROJECT_NUMBER: Nomor project Google Cloud Anda.
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.
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.
Tambahkan
iap_enabled = true
ke resourcegoogle_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" } } }
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.
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:
Di konsol Google Cloud , buka halaman Cloud Run:
Klik layanan yang ada yang ingin Anda ubah.
Klik Security, lalu hapus Advanced authentication with Identity Aware Proxy (IAP).
Klik Simpan.
gcloud
Untuk menonaktifkan IAP langsung dari Cloud Run, tambahkan
flag --no-iap
saat men-deploy aplikasi Anda:
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 formatLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
.
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:
Di konsol Google Cloud , buka halaman Cloud Run:
Klik layanan yang ada yang ingin Anda ubah, lalu klik Keamanan.
Di bagian IAP, klik Edit kebijakan.
Untuk menambahkan akses, masukkan prinsipal dan, secara opsional, tingkat akses yang ingin Anda tambahkan.
Untuk menghapus akses dari akun utama yang ada, klik ikon Hapus kebijakan di samping Tingkat akses.
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
- Untuk mengetahui petunjuk cara mengaktifkan IAP dengan IAP dari layanan backend atau load balancer, lihat Mengaktifkan IAP untuk Cloud Run.
- Untuk masalah terkait pengaktifan IAP untuk Cloud Run, lihat Memecahkan masalah error.
- Mengaktifkan identitas eksternal.
- Mengaktifkan konfigurasi OAuth.
- Mengelola akses ke resource yang diamankan oleh IAP.
- Menggunakan kebijakan organisasi untuk mengontrol pengaktifan IAP.