Direkomendasikan: Aktifkan IAP langsung di layanan Cloud Run, yang memiliki manfaat berikut:
Melindungi endpoint
run.appsecara langsung sehingga Anda tidak perlu menyediakan resource load balancer.Memberikan 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.
Aktifkan IAP di layanan backend yang menghadap ke layanan Cloud Run: Jika Anda menjalankan Cloud Run di beberapa region yang terpasang ke layanan backend global load balancer yang sama dan Anda memerlukan pengelolaan akses pusat, ikuti petunjuk di halaman ini. Atau, 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 bukan dengan traffic yang mungkin mencapai layanan Cloud Run melalui URL
run.app-nya. 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, update layanan Anda untuk menghapus header ini terlebih dahulu.IAP tidak kompatibel dengan Cloud CDN.
IAP meningkatkan latensi. Aktifkan IAP hanya untuk layanan yang tidak sensitif terhadap latensi.
Sebelum memulai
Sebaiknya Anda mengaktifkan 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 Google Cloud dengan penagihan diaktifkan.
- Grup yang terdiri dari satu atau beberapa layanan Cloud Run, yang disajikan 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
Catatan: Sebaiknya aktifkan IAP langsung di Cloud Run, seperti yang dijelaskan dalam dokumentasi Cloud Run.Untuk mengaktifkan IAP di layanan backend 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 APPLICATIONS, centang kotak di samping layanan backend load balancer yang ingin Anda tambahi anggota.
- Di panel samping kanan, klik Add Principal.
Dalam dialog Add Principal, masukkan akun grup atau individu yang harus memiliki peran IAP-secured Web App User 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 menu drop-down Peran.
Klik Simpan.
Mengaktifkan akses untuk 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 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 APPLICATIONS, temukan layanan backend load balancer yang ingin Anda batasi aksesnya. Untuk mengaktifkan IAP bagi 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 Project Editor. Untuk mempelajari lebih lanjut, lihat Mengelola akses ke resource yang diamankan IAP.
- Di jendela Turn on IAP yang muncul, klik Turn On untuk mengonfirmasi bahwa Anda ingin IAP mengamankan resource Anda. Setelah Anda mengaktifkan IAP, kredensial login diperlukan untuk semua koneksi ke load balancer Anda. Hanya akun dengan peran IAP-Secured Web App User di project yang akan diberi akses.
Ikuti petunjuk di Kontrol akses dengan IAM untuk mengizinkan IAP mengirim traffic ke layanan Cloud Run backend.
- Principal:
service-[PROJECT-NUMBER]@gcp-sa-iap.iam.gserviceaccount.com - Role: 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 services identity create \ --service=iap.googleapis.com \ --project=PROJECT_ID- Principal:
gcloud
- Jika Anda belum pernah melakukannya dalam project, buat agen layanan IAP dengan menjalankan perintah berikut. Jika Anda telah membuat agen layanan sebelumnya, menjalankan perintah ini tidak akan menduplikasinya.
gcloud services identity create --service=iap.googleapis.com --project=[PROJECT_ID]
- Berikan izin invoker ke akun layanan, yang dibuat di 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 cakupan global atau regional, bergantung pada apakah layanan backend load balancer Anda bersifat global atau regional. Gunakan client ID 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, buat agen layanan IAP dalam project dengan menjalankan perintah berikut. Jika Anda telah membuat agen layanan sebelumnya, menjalankan perintah ini tidak akan menduplikasinya.
resource "google_project_service" "project" { project = "your-project-id" service = "iap.googleapis.com" } Tambahkan kode berikut untuk memberikan peran
roles/run.invokerkepada 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 client ID 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
run.appdefault layanan Cloud Run, Nonaktifkan URL default. Jika tidak, konfigurasikan setelan ingress Anda ke Membatasi ingress jaringan untuk Cloud Run.Pemecahan masalah terkait error
Izin ditolak saat mengakses Cloud Run
Your client does not have permission to get URL from this serverIAP 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 masih menghadapi masalah ini, deploy ulang layanan Cloud Run Anda.
Kegagalan Agen Layanan menyebabkan error set IAM
Mengaktifkan IAP pada project baru untuk pertama kalinya dapat menyebabkan error berikut:
Setting IAM permissions failedHal ini karena Agen Layanan Cloud Run gagal. Untuk menyelesaikan masalah ini, aktifkan kembali IAP atau tetapkan kebijakan IAM secara manual.
Tidak dapat menyiapkan IAP melalui gcloud CLI
The IAP service account is not provisionedJika Anda melihat error ini, jalankan perintah berikut:
gcloud services identity create --service=iap.googleapis.com --project=[PROJECT_ID]Akun layanan IAP tidak memerlukan izin
run.routes.invokeSelama Pratinjau IAP dengan Cloud Run, Cloud Run tidak melakukan pemeriksaan izin
run.routes.invokeuntuk 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
Mengaktifkan IAP untuk Cloud Run
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Anda dapat mengaktifkan Identity-Aware Proxy untuk layanan Cloud Run menggunakan salah satu
metode berikut: