Dokumen ini menjelaskan kapan dan cara menyesuaikan konfigurasi OAuth untuk Identity-Aware Proxy (IAP).
IAP menggunakan klien OAuth yang dikelola Google untuk mengautentikasi pengguna.
Klien OAuth yang dikelola Google membatasi akses untuk pengguna dalam organisasi yang sama saat mengakses aplikasi yang mengaktifkan IAP melalui browser.
Kapan harus menggunakan konfigurasi OAuth kustom
Anda harus menggunakan konfigurasi OAuth kustom untuk melakukan hal berikut:
- Untuk mengizinkan akses ke aplikasi yang mengaktifkan IAP bagi pengguna di luar organisasi.
- Untuk menampilkan informasi merek Anda sendiri selama autentikasi.
- Untuk mengaktifkan akses terprogram ke aplikasi Anda.
Saat menyesuaikan konfigurasi OAuth, Anda harus mengonfigurasi layar izin OAuth. Hal ini mengharuskan informasi branding untuk aplikasi Anda melalui proses verifikasi Google. Untuk informasi selengkapnya tentang proses verifikasi, lihat Menyiapkan layar izin OAuth.
Anda bertanggung jawab untuk membuat dan mengelola kredensial untuk klien OAuth kustom. Hal ini mencakup menyimpan secret klien dengan aman dan membagikannya kepada pengguna yang diberi otorisasi jika diperlukan.
Perbandingan klien OAuth yang dikelola Google dan klien OAuth kustom
Klien OAuth yang dikelola Google tidak dapat mengakses aplikasi yang dilindungi IAP secara terprogram. Namun, aplikasi yang dilindungi IAP
yang menggunakan klien OAuth yang dikelola Google masih dapat diakses
secara terprogram menggunakan klien OAuth terpisah yang dikonfigurasi melalui
setelan
programmatic_clients
atau JWT akun layanan.
Tabel berikut memberikan perbandingan antara klien OAuth yang dikelola Google dan klien OAuth kustom.
Klien OAuth yang dikelola Google | Klien OAuth kustom | |
---|---|---|
Pengguna | Khusus internal | Internal dan Eksternal |
Merek | Google Cloud merek | Merek milik pelanggan |
Konfigurasi OAuth | Dikonfigurasi Google | Dikonfigurasi pelanggan |
Kredensial OAuth | Dikelola Google | Dikelola pelanggan |
Akses aplikasi | Khusus alur browser | Alur browser dan Akses terprogram |
Mengaktifkan IAP menggunakan konfigurasi klien OAuth kustom
Bagian berikut menjelaskan cara mengaktifkan IAP menggunakan konfigurasi klien OAuth kustom untuk berbagai resource.
App Engine
Konsol
Jika 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.
Buka halaman Identity-Aware Proxy - Pilih project yang ingin Anda amankan dengan IAP.
- Pilih kotak centang di samping resource yang ingin Anda beri akses.
- Di panel samping kanan, klik Tambahkan akun utama.
-
Di dialog Add principals yang muncul, masukkan alamat email grup atau individu yang harus memiliki peran IAP-secured Web App User untuk project tersebut.
Jenis akun utama berikut dapat memiliki peran ini:
- Akun Google: user@gmail.com
- Google Grup: admin@googlegroups.com
- Akun layanan: server@example.gserviceaccount.com
- Domain Google Workspace: example.com
Pastikan untuk menambahkan Akun Google yang aksesnya Anda miliki.
- Pilih Cloud IAP > IAP-Secured Web App User dari daftar drop-down Roles.
- Klik Save.
Mengaktifkan IAP
-
Di halaman Identity-Aware Proxy, pada bagian APPLICATIONS,
cari aplikasi yang aksesnya ingin Anda batasi. Untuk mengaktifkan IAP untuk resource,
- Di jendela Aktifkan IAP yang muncul, klik Aktifkan 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 diberikan akses.
gcloud
Sebelum menyiapkan project dan IAP, Anda memerlukan versi gcloud CLI terbaru. Untuk mengetahui petunjuk cara menginstal gcloud CLI, lihat Menginstal gcloud CLI.
-
Untuk mengautentikasi, gunakan Google Cloud CLI dan jalankan perintah berikut.
gcloud auth login
- Untuk login, ikuti URL yang muncul.
- Setelah Anda login, salin kode verifikasi yang muncul dan tempelkan di command line.
-
Jalankan perintah berikut untuk menentukan project yang berisi resource yang ingin Anda lindungi dengan IAP.
gcloud config set project PROJECT_ID
- Ikuti petunjuk di Membuat klien OAuth untuk IAP untuk mengonfigurasi layar izin OAuth dan membuat klien OAuth.
- Simpan client ID dan secret OAuth.
-
Untuk mengaktifkan IAP, jalankan perintah berikut.
gcloud iap web enable \ --oauth2-client-id=CLIENT_ID \ --oauth2-client-secret=CLIENT_SECRET \ --resource-type=app-engine
Setelah mengaktifkan IAP, Anda dapat menggunakan gcloud CLI untuk mengubah
kebijakan akses IAP menggunakan peran IAM
roles/iap.httpsResourceAccessor
. Pelajari lebih lanjut cara mengelola peran dan izin.
API
Ikuti petunjuk di Membuat klien OAuth untuk IAP guna mengonfigurasi layar izin OAuth dan membuat klien OAuth.
Simpan client ID dan secret OAuth.
Jalankan perintah berikut untuk menyiapkan file
settings.json
.cat << EOF > settings.json { "iap": { "enabled": true, "oauth2ClientId": "CLIENT_ID", "oauth2ClientSecret":" CLIENT_SECRET" } } EOF
Jalankan perintah berikut untuk mengaktifkan IAP.
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d @settings.json \ "https://appengine.googleapis.com/v1/apps/PROJECT_ID?updateMask=iap"
Setelah mengaktifkan IAP, Anda dapat menggunakan Google Cloud CLI untuk mengubah kebijakan akses IAP menggunakan peran IAM roles/iap.httpsResourceAccessor
. Pelajari lebih lanjut cara mengelola peran dan izin.
Compute Engine
Konsol
Jika belum mengonfigurasi layar izin OAuth project, Anda akan diminta untuk melakukannya. Untuk mengonfigurasi layar izin OAuth, lihat Menyiapkan layar izin OAuth.
Jika menjalankan cluster GKE versi 1.24 atau yang lebih baru, Anda dapat mengonfigurasi IAP dan GKE menggunakan Kubernetes Gateway API. Untuk melakukannya, selesaikan
langkah-langkah berikut, lalu ikuti petunjuk di
Mengonfigurasi IAP.
Jangan konfigurasikan BackendConfig
.
Menyiapkan akses IAP
-
Buka
halaman Identity-Aware Proxy.
Buka halaman Identity-Aware Proxy - Pilih project yang ingin Anda amankan dengan IAP.
-
Pilih kotak centang di samping resource yang ingin Anda beri akses.
Jika Anda tidak melihat resource, pastikan resource tersebut dibuat dan pengontrol ingress Compute Engine BackendConfig disinkronkan.
Untuk memverifikasi bahwa layanan backend tersedia, jalankan perintah gcloud berikut:
gcloud compute backend-services list
- Di panel samping kanan, klik Tambahkan akun utama.
-
Di dialog Add principals yang muncul, masukkan alamat email grup atau individu yang harus memiliki peran IAP-secured Web App User untuk project tersebut.
Jenis akun utama berikut dapat memiliki peran ini:
- Akun Google: user@gmail.com
- Google Grup: admin@googlegroups.com
- Akun layanan: server@example.gserviceaccount.com
- Domain Google Workspace: example.com
Pastikan untuk menambahkan Akun Google yang aksesnya Anda miliki.
- Pilih Cloud IAP > IAP-Secured Web App User dari daftar drop-down Roles.
- Klik Simpan.
Mengaktifkan IAP
-
Di halaman Identity-Aware Proxy, pada bagian APPLICATIONS,
cari load balancer yang menayangkan instance group yang aksesnya ingin Anda batasi. Untuk mengaktifkan IAP untuk resource,
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 Aktifkan IAP yang muncul, klik Aktifkan 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 diberikan akses.
gcloud
Sebelum menyiapkan project dan IAP, Anda memerlukan versi terbaru gcloud CLI. Untuk mengetahui petunjuk cara menginstal gcloud CLI, lihat Menginstal gcloud CLI.
-
Untuk mengautentikasi, gunakan Google Cloud CLI dan jalankan perintah berikut.
gcloud auth login
- Untuk login, ikuti URL yang muncul.
- Setelah Anda login, salin kode verifikasi yang muncul dan tempelkan di command line.
-
Jalankan perintah berikut untuk menentukan project yang berisi resource yang ingin Anda lindungi dengan IAP.
gcloud config set project PROJECT_ID
- Ikuti petunjuk di Membuat klien OAuth untuk IAP. untuk mengonfigurasi layar izin OAuth dan membuat klien OAuth.
- Simpan client ID dan secret OAuth.
-
Untuk mengaktifkan IAP, jalankan perintah cakupan global atau regional.
Cakupan global Cakupan regionalgcloud compute backend-services update BACKEND_SERVICE_NAME \ --global \ --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
gcloud compute backend-services update BACKEND_SERVICE_NAME \ --region REGION_NAME \ --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
Setelah mengaktifkan IAP, Anda dapat menggunakan gcloud CLI untuk mengubah
kebijakan akses IAP menggunakan peran IAM
roles/iap.httpsResourceAccessor
. Pelajari lebih lanjut cara mengelola peran dan izin.
API
Ikuti petunjuk di Membuat klien OAuth untuk IAP guna mengonfigurasi layar izin OAuth dan membuat klien OAuth.
Simpan client ID dan secret OAuth.
Jalankan perintah berikut untuk menyiapkan file
settings.json
.cat << EOF > settings.json { "iap": { "enabled": true, "oauth2ClientId": "CLIENT_ID", "oauth2ClientSecret": "CLIENT_SECRET" } } EOF
Jalankan perintah berikut untuk mengaktifkan IAP.
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d @settings.json \ "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/REGION/backendServices/BACKEND_SERVICE_NAME"
Setelah mengaktifkan IAP, Anda dapat menggunakan gcloud CLI untuk mengubah
kebijakan akses IAP menggunakan peran IAM
roles/iap.httpsResourceAccessor
. Pelajari lebih lanjut cara mengelola peran dan izin.
Cloud Run
Konsol
Jika 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.
Buka 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 anggota.
- Di panel samping kanan, klik Tambahkan anggota.
Pada dialog Tambahkan anggota, 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 - Ini juga dapat berupa akun Google Workspace, seperti user@google.com atau beberapa domain Google Workspace lainnya.
- Google Grup: admin@googlegroups.com
- Akun layanan: server@example.gserviceaccount.com
- Domain Google Workspace: example.com
Pilih Cloud IAP > IAP-secured Web App User dari daftar Roles.
Klik Save.
Mengaktifkan IAP
- Di halaman IAP, pada bagian Aplikasi, temukan layanan backend load balancer yang aksesnya ingin Anda batasi. Klik tombol IAP untuk mengaktifkan IAP di resource.
- Di jendela Aktifkan IAP yang muncul, klik Aktifkan 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.
Untuk memberikan otorisasi kepada IAP agar dapat mengirim traffic ke layanan Cloud Run backend, ikuti petunjuk di bagian Menambahkan akun utama ke layanan untuk menambahkan akun utama dan peran berikut.
- Prinsipal:
service-[PROJECT-NUMBER]@gcp-sa-iap.iam.gserviceaccount.com
- Peran: Cloud Run Invoker
- Prinsipal:
gcloud
- Ikuti petunjuk di Membuat klien OAuth untuk IAP guna mengonfigurasi layar izin OAuth dan membuat klien OAuth.
- Simpan client ID dan secret OAuth.
- Jika Anda belum melakukannya sebelumnya, buat akun layanan dengan menjalankan perintah berikut. Jika sebelumnya Anda telah membuat akun layanan, menjalankan perintah ini tidak akan membuat akun layanan duplikat.
gcloud beta 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,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
Cakupan regional
Ganti kode berikut:gcloud compute backend-services update BACKEND_SERVICE_NAME \ --region REGION_NAME \ --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
- BACKEND_SERVICE_NAME: nama layanan backend.
- CLIENT_ID: client ID OAuth, dari langkah sebelumnya.
- CLIENT_SECRET: rahasia klien OAuth, dari langkah sebelumnya.
- REGION_NAME: region tempat Anda ingin mengaktifkan IAP.
Setelah mengaktifkan IAP, Anda dapat menggunakan Google Cloud CLI untuk mengubah kebijakan akses IAP menggunakan peran Identity and Access Management roles/iap.httpsResourceAccessor
. Lihat Mengelola peran dan izin untuk mengetahui informasi selengkapnya.
Google Kubernetes Engine
Konsol
Jika belum mengonfigurasi layar izin OAuth project, Anda akan diminta untuk melakukannya. Untuk mengonfigurasi layar izin OAuth, lihat Menyiapkan layar izin OAuth.
Jika menjalankan cluster GKE versi 1.24 atau yang lebih baru, Anda dapat mengonfigurasi IAP dan GKE menggunakan Kubernetes Gateway API. Untuk melakukannya, selesaikan
langkah-langkah berikut, lalu ikuti petunjuk di
Mengonfigurasi IAP.
Jangan konfigurasikan BackendConfig
.
Menyiapkan akses IAP
-
Buka
halaman Identity-Aware Proxy.
Buka halaman Identity-Aware Proxy - Pilih project yang ingin Anda amankan dengan IAP.
-
Pilih kotak centang di samping resource yang ingin Anda beri akses.
Jika Anda tidak melihat resource, pastikan resource tersebut dibuat dan pengontrol ingress Compute Engine BackendConfig disinkronkan.
Untuk memverifikasi bahwa layanan backend tersedia, jalankan perintah gcloud berikut:
gcloud compute backend-services list
- Di panel samping kanan, klik Tambahkan akun utama.
-
Di dialog Add principals yang muncul, masukkan alamat email grup atau individu yang harus memiliki peran IAP-secured Web App User untuk project tersebut.
Jenis akun utama berikut dapat memiliki peran ini:
- Akun Google: user@gmail.com
- Google Grup: admin@googlegroups.com
- Akun layanan: server@example.gserviceaccount.com
- Domain Google Workspace: example.com
Pastikan untuk menambahkan Akun Google yang aksesnya Anda miliki.
- Pilih Cloud IAP > IAP-Secured Web App User dari daftar drop-down Roles.
- Klik Simpan.
Mengaktifkan IAP
-
Di halaman Identity-Aware Proxy, pada bagian APPLICATIONS,
cari load balancer yang menayangkan instance group yang aksesnya ingin Anda batasi. Untuk mengaktifkan IAP untuk resource,
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 Aktifkan IAP yang muncul, klik Aktifkan 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 diberikan akses.
GKE
Mengonfigurasi BackendConfig
Jika menjalankan cluster GKE versi 1.24 atau yang lebih baru, Anda dapat mengonfigurasi IAP dan GKE menggunakan Kubernetes Gateway API. Lihat Mengonfigurasi IAP untuk mengetahui petunjuknya.
Ikuti petunjuk di Membuat klien OAuth untuk IAP untuk mengonfigurasi layar izin OAuth dan membuat klien OAuth.
Buat Secret Kubernetes untuk menggabungkan klien OAuth.
Ganti kode berikut:kubectl create secret generic MY_SECRET --from-literal=client_id=CLIENT_ID \ --from-literal=client_secret=CLIENT_SECRET
MY_SECRET
: Nama secret yang akan dibuatCLIENT_ID
: Client ID OAuthCLIENT_SECRET
: Rahasia klien OAuth
Anda akan menerima konfirmasi, seperti output berikut, bahwa Secret berhasil dibuat:
secret "MY_SECRET" created
Tambahkan kredensial OAuth ke BackendConfig.
apiVersion: cloud.google.com/v1 kind: BackendConfig metadata: name: CONFIG_DEFAULT namespace: my-namespace spec: iap: enabled: true oauthclientCredentials: secretName: MY_SECRET
Aktifkan IAP dengan mengaitkan port Layanan dengan BackendConfig Anda. Lihat Mengaitkan BackendConfig dengan Ingress Anda. Salah satu cara untuk membuat pengaitan ini adalah dengan menetapkan semua port untuk layanan secara default ke BackendConfig, yang dapat Anda lakukan dengan menambahkan anotasi berikut ke resource Layanan:
metadata: annotations: beta.cloud.google.com/backend-config: '{"default": "CONFIG_DEFAULT"}}'
Setelah mengaktifkan IAP, Anda dapat menggunakan gcloud CLI untuk mengubah
kebijakan akses IAP menggunakan peran IAM
roles/iap.httpsResourceAccessor
. Pelajari lebih lanjut cara mengelola peran dan izin.
Pemecahan masalah
Jika secretName
yang Anda referensikan tidak ada atau tidak disusun
dengan benar, salah satu pesan error berikut akan ditampilkan:
BackendConfig default/config-default is not valid: error retrieving secret "foo": secrets "foo" not found.
Untuk mengatasi error ini, pastikan Anda telah membuat Secret Kubernetes dengan benar seperti yang dijelaskan pada langkah 2.BackendConfig default/config-default is not valid: secret "foo" missing client_secret data.
Untuk mengatasi error ini, pastikan Anda telah membuat kredensial OAuth dengan benar. Selain itu, pastikan Anda mereferensikan kunciclient_id
danclient_secret
yang benar.