Ada dua cara untuk mengaktifkan Identity-Aware Proxy untuk layanan Cloud Run.
- Direkomendasikan: langsung di layanan Cloud Run:
- Melindungi endpoint
run.appsecara langsung sehingga Anda tidak perlu menyediakan resource load balancer. - Menyediakan penyiapan yang lebih sederhana dan menghindari biaya load balancer tambahan.
- Jika Anda memilih untuk menempatkan load balancer di depan Cloud Run, endpoint load balancer juga akan dilindungi.
- Melindungi endpoint
- Di layanan backend yang menghadap layanan Cloud Run: jika Anda menjalankan Cloud Run di beberapa region terlampir ke layanan backend global load balancer yang sama dan Anda memerlukan pengelolaan akses terpusat, ikuti petunjuk di halaman ini. Jika tidak, sebaiknya Anda mengaktifkan IAP langsung di layanan Cloud Run.
Batasan umum
IAP tidak dapat digunakan di layanan Cloud Run dan load balancer. Jika Anda mengaktifkan IAP di load balancer, IAP hanya mengamankan traffic melalui load balancer dan tidak dengan traffic yang mungkin mencapai layanan Cloud Run melalui URL
run.app. Untuk hanya mengizinkan traffic yang diotorisasi IAP, lihat Mengonfigurasi Cloud Run untuk membatasi akses.IAP melakukan autentikasi ke Cloud Run menggunakan header
X-Serverless-Authorization. Cloud Run meneruskan header ini ke layanan Anda setelah menghapus tanda tangannya. Jika layanan Anda dirancang untuk meneruskan permintaan ke layanan Cloud Run lain yang memerlukan autentikasi IAM, perbarui layanan Anda untuk menghapus header ini terlebih dahulu.IAP tidak kompatibel dengan Cloud CDN.
IAP meningkatkan latensi. Aktifkan IAP hanya untuk instance yang tidak sensitif terhadap latensi.
Sebelum memulai
Sebaiknya aktifkan IAP langsung di Cloud Run.
Jika Anda memilih untuk mengaktifkan IAP untuk resource Cloud Run di load balancer, bukan langsung di Cloud Run, Anda harus memiliki hal berikut:
- Project konsol dengan penagihan diaktifkan. Google Cloud
- Grup yang terdiri dari satu atau beberapa layanan Cloud Run, yang ditayangkan oleh load balancer.
- Pelajari cara Menyiapkan load balancer HTTPS eksternal.
- Pelajari cara Menyiapkan load balancer HTTPS internal.
- Nama domain yang terdaftar ke alamat load balancer Anda.
- Kode aplikasi untuk memverifikasi bahwa semua permintaan memiliki identitas.
- Pelajari cara Mendapatkan identitas pengguna.
Mengaktifkan IAP dari layanan backend atau load balancer
Jika Anda harus mengaktifkan IAP dari IAP di belakang layanan backend atau load balancer, gunakan petunjuk berikut.
Konsol
Jika Anda belum mengonfigurasi layar izin OAuth project, Anda akan diminta untuk melakukannya. Untuk mengonfigurasi layar izin OAuth, lihat Menyiapkan layar izin OAuth.
Menyiapkan akses IAP
- Buka halaman Identity-Aware Proxy.
- Pilih project yang ingin Anda amankan dengan IAP.
- Di bagian APLIKASI, centang kotak di samping layanan backend load balancer yang ingin Anda tambahkan anggotanya.
- Di panel sisi kanan, klik Tambahkan Akun Utama.
Di dialog Tambahkan Akun Utama, masukkan akun grup atau individu yang harus memiliki peran Pengguna Aplikasi Web yang Diamankan IAP untuk project tersebut. Jenis akun berikut dapat menjadi anggota:
- Akun Google: user@gmail.com - Akun ini juga dapat berupa akun Google Workspace, seperti user@google.com atau domain Workspace lainnya.
- Google Grup: admin@googlegroups.com
- Akun layanan: server@example.iam.gserviceaccount.com
- Domain Google Workspace: example.com
Pilih Cloud IAP > Pengguna Aplikasi Web yang Diamankan IAP dari daftar drop-down Peran.
Klik Simpan.
Mengaktifkan akses ke pengguna di luar organisasi Anda
Secara default, saat Anda mengaktifkan IAP, IAP akan menggunakan klien OAuth yang dikelola Google untuk mengautentikasi pengguna. Akibatnya, hanya pengguna dalam organisasi yang dapat mengakses aplikasi yang mengaktifkan IAP.
Untuk mengaktifkan akses ke pengguna di luar organisasi Anda, atau tanpa an organisasi, perbarui konfigurasi klien OAuth untuk menggunakan klien OAuth kustom seperti yang dijelaskan dalam Mengaktifkan IAP untuk aplikasi eksternal.
Mengaktifkan IAP
- Di halaman IAP, di bagian APLIKASI, temukan layanan backend load balancer yang aksesnya ingin Anda batasi. Untuk mengaktifkan IAP untuk resource, klik tombol IAP.
Untuk mengaktifkan IAP:
- Setidaknya satu protokol dalam konfigurasi frontend load balancer harus berupa HTTPS. Pelajari cara menyiapkan load balancer.
- Anda memerlukan izin
compute.backendServices.update,clientauthconfig.clients.create, danclientauthconfig.clients.getWithSecret. Izin ini diberikan oleh peran, seperti peran Editor Project. Untuk mempelajari lebih lanjut, lihat Mengelola akses ke resource yang diamankan IAP.
- Di jendela Aktifkan IAP yang muncul, klik Aktifkan untuk mengonfirmasi bahwa Anda ingin IAP mengamankan resource Anda. Setelah Anda mengaktifkan IAP, IAP akan memerlukan kredensial login untuk semua koneksi ke load balancer Anda. Hanya akun dengan peran Pengguna Aplikasi Web yang Diamankan IAP di project yang akan diberi akses.
Ikuti petunjuk di Kontrol akses dengan IAM untuk mengotorisasi IAP mengirim traffic ke layanan Cloud Run backend.
- Akun Utama:
service-[PROJECT-NUMBER]@gcp-sa-iap.iam.gserviceaccount.com - Peran: Cloud Run Invoker
Akun layanan IAP dibuat saat IAP diaktifkan. Jika akun layanan IAP tidak ada dalam daftar akun utama, Anda dapat membuatnya dengan menjalankan perintah gcloud berikut:
gcloud beta services identity create --service=iap.googleapis.com --project=PROJECT_ID- Akun Utama:
gcloud
- Jika Anda belum melakukannya sebelumnya di project, buat agen layanan IAP dengan menjalankan perintah berikut. Jika Anda sebelumnya membuat agen layanan, menjalankan perintah tidak akan menduplikasinya.
gcloud beta services identity create --service=iap.googleapis.com --project=[PROJECT_ID]
- Berikan izin pemanggil ke akun layanan, yang dibuat pada langkah sebelumnya, dengan menjalankan perintah berikut.
gcloud run services add-iam-policy-binding [SERVICE-NAME] \ --member='serviceAccount:service-[PROJECT-NUMBER]@gcp-sa-iap.iam.gserviceaccount.com' \ --role='roles/run.invoker' Aktifkan IAP dengan menjalankan perintah yang cakupannya global atau regional, bergantung pada apakah layanan backend load balancer Anda bersifat global atau regional. Gunakan ID klien dan rahasia OAuth dari langkah sebelumnya.
Cakupan global
gcloud compute backend-services update BACKEND_SERVICE_NAME --global --iap=enabled
Cakupan regional
Ganti kode berikut:gcloud compute backend-services update BACKEND_SERVICE_NAME --region REGION_NAME --iap=enabled
- BACKEND_SERVICE_NAME: nama layanan backend.
- REGION_NAME: region tempat Anda ingin mengaktifkan IAP.
Setelah mengaktifkan IAP, Anda dapat menggunakan Google Cloud CLI untuk memanipulasi kebijakan akses IAP menggunakan peran Identity and Access Management roles/iap.httpsResourceAccessor. Lihat Mengelola akses ke resource yang diamankan IAP untuk mengetahui informasi selengkapnya.
Terraform
- Jika Anda belum melakukannya sebelumnya, di project, buat agen layanan IAP dengan menjalankan perintah berikut. Jika Anda sebelumnya membuat agen layanan, menjalankan perintah tidak akan menduplikasinya.
resource "google_project_service" "project" { project = "your-project-id" service = "iap.googleapis.com" } Tambahkan kode berikut untuk memberikan peran
roles/run.invokerke agen layanan IAP.resource "google_cloud_run_v2_service_iam_member" "iap_invoker" { 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.iam.gserviceaccount.com" }Ganti PROJECT_NUMBER dengan nomor project Anda.
Aktifkan IAP dengan menjalankan perintah global atau regional, bergantung pada load balancer Anda. Gunakan ID klien dan rahasia OAuth dari langkah sebelumnya.
Cakupan global
resource "google_compute_backend_service" "default" { name = "tf-test-backend-service-external" protocol = "HTTPS" load_balancing_scheme = "EXTERNAL_MANAGED" iap { enabled = true oauth2_client_id = "abc" oauth2_client_secret = "xyz" } }Cakupan regional
resource "google_compute_region_backend_service" "default" { name = "tf-test-backend-service-external" protocol = "HTTPS" load_balancing_scheme = "EXTERNAL_MANAGED" iap { enabled = true oauth2_client_id = "abc" oauth2_client_secret = "xyz" } }
Mengonfigurasi Cloud Run untuk membatasi akses
Untuk mencegah traffic dirutekan melalui URL
default run.applayanan Cloud Run, Nonaktifkan URL default.
Jika tidak, konfigurasi setelan ingress Anda untuk Membatasi ingress jaringan untuk Cloud Run.
Pemecahan masalah terkait error
Akses ditolak saat mengakses Cloud Run
Your client does not have permission to get URL from this server IAP menggunakan izin akun layanan IAP untuk memanggil layanan Cloud Run Anda. Pastikan Anda telah memberikan peran Cloud Run Invoker ke akun layanan berikut:
service-[PROJECT-NUMBER]@gcp-sa-iap.iam.gserviceaccount.com.Jika Anda telah memberikan peran Cloud Run Invoker ke akun layanan sebelumnya dan Anda masih mengalami masalah ini, deploy ulang layanan Cloud Run Anda.
Kegagalan Agen Layanan menyebabkan error IAM ditetapkan
Mengaktifkan IAP di project baru untuk pertama kalinya dapat menyebabkan error berikut:
Setting IAM permissions failedHal ini karena Agen Layanan Cloud Run gagal. Untuk mengatasi masalah ini, aktifkan IAP lagi atau tetapkan kebijakan IAM secara manual.
Tidak dapat menyiapkan IAP melalui gcloud CLI
The IAP service account is not provisioned Jika Anda melihat error ini, jalankan perintah berikut:
gcloud beta services identity create --service=iap.googleapis.com --project=[PROJECT_ID]
Akun layanan IAP tidak memerlukan izin run.routes.invoke
Selama Pratinjau IAP dengan Cloud Run, Cloud Run tidak melakukan pemeriksaan izin run.routes.invoke untuk panggilan dari IAP yang menggunakan peran Cloud Run Invoker. Dengan Ketersediaan Umum (GA), Cloud Run melakukan pemeriksaan izin ini.
Untuk menghindari perubahan yang dapat menyebabkan gangguan, beberapa project pelanggan yang bergantung pada perilaku ini selama Pratinjau ditempatkan ke dalam daftar yang diizinkan sehingga izin tidak diperiksa. Hubungi dukungan Cloud Run untuk menghapus project tersebut dari daftar yang diizinkan khusus Pratinjau.
Langkah berikutnya
Mengonfigurasi IAP untuk Cloud Run