Artikel ini menjelaskan cara menyesuaikan setelan Identity-Aware Proxy (IAP). Dengan setelan ini, Anda dapat mengontrol perilaku, termasuk:
- Kompatibilitas dengan GKE Enterprise dan Istio di Google Kubernetes Engine.
- Penanganan permintaan preflight CORS.
- Cara pengguna diautentikasi.
- Halaman error yang ditampilkan kepada pengguna saat akses ditolak.
Mengelola setelan
Anda dapat melihat dan memperbarui setelan IAP di load balancer dan aplikasi App Engine menggunakan konsol Google Cloud, IAP API, atau Google Cloud CLI.
Untuk memperbarui setelan IAP di semua resource, termasuk folder, project, dan organisasi, gunakan Google Cloud CLI atau API.
Untuk mengelola setelan di IAP:
Konsol
Untuk melihat dan mengubah setelan menggunakan konsol Google Cloud:
- Buka halaman Identity-Aware Proxy.
Buka halaman Identity-Aware Proxy - Temukan referensi Anda di tab APPLICATIONS.
- Buka menu tindakan lainnya , lalu klik Setelan.
- Klik Simpan.
gcloud
Untuk mendapatkan dan mengubah setelan menggunakan Google Cloud CLI, gunakan perintah gcloud iap settings get
dan gcloud iap settings set
seperti yang ditunjukkan di bawah ini:
- Untuk mendapatkan setelan project, folder, atau organisasi, gunakan perintah berikut. Untuk mengonfigurasi setelan IAP menggunakan konsol Google Cloud atau gcloud CLI, lihat Menyesuaikan IAP.
gcloud iap settings get --project=PROJECT-ID
gcloud iap settings get --folder=FOLDER-ID
gcloud iap settings get --organization=ORGANIZATION-ID
- Untuk mendapatkan setelan jenis resource IAP tertentu dalam project:
gcloud iap settings get --project=PROJECT-ID \ --resource-type=RESOURCE-TYPE-NAME
- Untuk menetapkan setelan untuk project, folder, atau organisasi, atau
jenis resource IAP dalam project, buat file JSON atau
YAML yang berisi setelan baru yang diinginkan dan tentukan jalur ke
file tersebut. Lihat
topik
gcloud iap settings set
untuk mengetahui informasi selengkapnya:
gcloud iap settings set SETTING_FILE --project=PROJECT-ID \ --resource-type=RESOURCE-TYPE-NAME
API
Untuk mendapatkan dan mengubah setelan menggunakan IAP API, buat
permintaan menggunakan kata kerja HTTP GET
atau PATCH
ke endpoint resource
yang diinginkan di Google Cloud. Gabungkan akhiran jalur :iapSettings
, jalur resource (seperti yang dijelaskan dalam Resource dan izin), dan metode HTTP yang sesuai untuk mendapatkan atau mengubah setelan. Lihat
getIapSettings()
dan
updateIapSettings()
untuk mengetahui informasi selengkapnya:
- Untuk mendapatkan atau menetapkan setelan untuk jenis resource IAP tertentu dalam project:
https://iap.googleapis.com/v1/projects/PROJECT-ID/iap_web/appengine-APP-ID/services/SERVICE-ID/versions/VERSION-ID:iapSettings
- Untuk mendapatkan atau menetapkan setelan project:
https://iap.googleapis.com/v1/projects/PROJECT-ID:iapSettings
- Untuk mendapatkan atau menetapkan setelan untuk folder:
https://iap.googleapis.com/v1/folders/FOLDER-ID:iapSettings
- Untuk mendapatkan atau menetapkan setelan untuk organisasi:
https://iap.googleapis.com/v1/organizations/ORGANIZATION-ID:iapSettings
Memahami kontrol akses untuk setelan
Izin tertentu diperlukan untuk melihat dan mengubah setelan IAP. Tabel di bawah ini mencantumkan izin yang diperlukan untuk membaca dan mengubah setelan untuk setiap jenis resource. Lihat Resource dan izin untuk mengetahui deskripsi berbagai jenis resource.
Resource | Izin untuk melihat setelan | Izin untuk mengubah setelan |
---|---|---|
Organisasi | iap.organizations.getSettings |
iap.organizations.updateSettings |
Folder | iap.folders.getSettings |
iap.folders.updateSettings |
Project | iap.projects.getSettings |
iap.projects.updateSettings |
Semua layanan web | iap.web.getSettings |
iap.web.updateSettings |
Jenis layanan web | iap.webTypes.getSettings |
iap.webTypes.updateSettings |
Layanan web | iap.webServices.getSettings |
iap.webServices.updateSettings |
Versi Layanan Web | iap.webServiceVersions.getSettings |
iap.webServiceVersions.updateSettings |
Peran IAP Settings Admin (roles/iap.settingsAdmin
) memberikan semua izin
ini, begitu juga dengan Project Editor (roles/editor
). Project Viewer
(roles/viewer
) memberikan semua izin getSettings
.
Untuk mempelajari lebih lanjut cara memberikan peran IAM, lihat Memberikan, mengubah, dan mencabut akses.
Menyesuaikan setelan IAP
IAP menyediakan setelan penyesuaian berikut:
Kolom | Deskripsi |
---|---|
access_settings.cors_settings.allow_http_options |
Mengontrol HTTP OPTIONS (preflight CORS) |
access_settings.oauth_settings.login_hint |
Menyederhanakan login untuk pengguna domain G Suite |
application_settings.access_denied_page_settings.access_denied_page_uri |
Menampilkan halaman error kustom saat akses ditolak |
application_settings.csm_settings.rctoken_aud |
Mengeluarkan RCToken GKE Enterprise dan Istio |
access_settings.gcip_settings |
Mengautentikasi dengan Identity Platform |
access_settings.ReauthSettings |
Tetapkan kebijakan autentikasi ulang. Untuk mengetahui detailnya, lihat Mengonfigurasi autentikasi ulang |
Anda dapat menerapkan setelan di level project, atau di level resource IAP yang lebih rendah.
Anda dapat mengonfigurasi setelan untuk resource IAP berbasis web, tetapi bukan resource yang diakses dengan IAP untuk penerusan TCP.
Dengan menggunakan access_settings.cors_settings.allow_http_options
sebagai contoh, Anda dapat
mengonfigurasi setelan penyesuaian sebagai berikut:
YAML
access_settings: cors_settings: allow_http_options: "false"
JSON
{ "access_settings": { "cors_settings": { "allow_http_options": "false" } } }
Bagian berikut memberikan informasi selengkapnya tentang setiap setelan.
Mengizinkan permintaan OPTIONS HTTP (preflight CORS)
Kolom | Nilai default |
---|---|
access_settings.cors_settings.allow_http_options |
false |
Kebijakan origin yang sama web memblokir browser agar tidak mengirim permintaan AJAX antarsitus. Secara default, JavaScript di halaman yang ditayangkan dari satu origin tidak dapat menggunakan AJAX untuk mengirim permintaan ke aplikasi yang diamankan dengan IAP yang dihosting di origin yang berbeda.
Dalam beberapa kasus, browser akan otomatis mencoba permintaan, tetapi menghapus konten respons jika tidak menyertakan header Access-Control-Allow-Origin
. Untuk mengizinkan
jenis permintaan ini, sertakan header ini dalam respons aplikasi Anda.
Dalam kasus lain, browser akan mengirim
permintaan preflight CORS,
jenis permintaan OPTIONS
HTTP, sebelum mengirim permintaan lintas origin. Jika
aplikasi Anda tidak merespons dengan respons preflight yang sesuai (berisi
header respons Access-Control-*
yang diperlukan), browser akan memblokir
permintaan dengan error. Selain itu, karena permintaan pra-penerbangan tidak dikirim dengan
kredensial autentikasi apa pun (seperti cookie sesi
IAP), IAP juga akan merespons dengan error.
Untuk mengizinkan permintaan ini:
Tambahkan kode ke aplikasi Anda yang merespons permintaan
OPTIONS
.Ubah setelan
access_settings.cors_settings.allow_http_options
menjaditrue
agar IAP meneruskan permintaanOPTIONS
ke aplikasi Anda.
Mengautentikasi menggunakan domain Google Workspace
Kolom | Nilai default |
---|---|
access_settings.oauth_settings.login_hint |
"" |
Jika hanya anggota domain Google Workspace tertentu yang akan menggunakan aplikasi Anda, Anda dapat mengonfigurasi IAP untuk mengoptimalkan alur autentikasi. Hal ini memiliki beberapa manfaat:
Jika pengguna login dengan beberapa akun (seperti akun kerja dan akun pribadi), sistem akan otomatis memilih akun kerja mereka, bukan menampilkan UI pemilihan akun.
Jika pengguna tidak login ke Akun Google-nya, UI login akan otomatis mengisi bagian domain alamat email mereka (artinya, pengguna hanya perlu mengetik
alice
, bukanalice@example.com
, misalnya).Jika domain Google Workspace Anda dikonfigurasi untuk menggunakan penyedia single sign-on pihak ketiga, sistem akan menampilkan halaman login kustom tersebut, bukan halaman login Google.
Untuk mengaktifkan perilaku ini, tetapkan nilai
access_settings.oauth_settings.login_hint
ke nama domain
Google Workspace Anda (seperti example.com
). Kepemilikan domain harus telah diverifikasi:
Anda tidak dapat menggunakan domain DNS internet arbitrer yang Anda miliki. (Domain yang telah
ditambahkan sebagai domain primer atau sekunder Google Workspace
telah diverifikasi sehingga dapat digunakan di sini.)
Jika perlu mengautentikasi pengguna di luar domain, Anda dapat menggunakan autentikasi terprogram.
Untuk mengetahui informasi selengkapnya, lihat dokumentasi OpenID Connect.
Menetapkan halaman error akses ditolak kustom
Kolom | Nilai default |
---|---|
application_settings.access_denied_page_settings.access_denied_page_uri |
"" |
Anda dapat menetapkan URL di kolom ini yang mengalihkan pengguna ke halaman kustom, bukan halaman error IAP default setiap kali akses ditolak oleh kebijakan.
Anda juga dapat menyematkan URL pemecahan masalah dengan fitur ini. Untuk informasi selengkapnya, lihat Mengaktifkan URL pemecahan masalah untuk halaman error Akses Ditolak kustom.
Mengeluarkan ID mesh RCToken GKE Enterprise dan Istio
Kolom | Nilai default |
---|---|
application_settings.csm_settings.rctoken_aud |
"" |
Jika menggunakan Istio di
GKE, Anda dapat mengonfigurasi
IAP untuk menghasilkan RCToken yang kompatibel dengan Istio. Jika kolom ini
ditetapkan ke string yang tidak kosong, IAP akan menambahkan
header HTTP Ingress-Authorization
yang berisi RCToken. Klaim aud
akan ditetapkan ke nilai kolom.
Melakukan autentikasi dengan Identity Platform
Kolom | Nilai default |
---|---|
access_settings.gcip_settings |
null |
Secara default, IAP menggunakan sistem identitas native Google. Jika kolom ini ditetapkan, IAP akan menggunakan Identity Platform untuk mengautentikasi pengguna.
Memahami pewarisan setelan dalam hierarki resource
IAP selalu mengevaluasi permintaan untuk versi layanan web tertentu. Jenis resource ini berada di level terendah hierarki resource, yang terlihat seperti ini:
- Organization - Folder - Project - All web services - Web service type - Web service - Web service version
Untuk menentukan setelan yang akan diterapkan untuk versi layanan web,
IAP dimulai dengan kumpulan nilai default, lalu
melacak hierarki dari atas ke bawah. Setelan diterapkan saat ditemukan, sehingga nilai yang ditetapkan pada tingkat yang lebih rendah akan menggantikan nilai yang ditetapkan pada tingkat yang lebih tinggi.
Misalnya, jika access_settings.cors_settings.allow_http_options
ditetapkan ke true
di tingkat project, tetapi false
di tingkat layanan, nilai efektifnya adalah false
.
Lihat Resource dan izin untuk mempelajari hierarki resource IAP lebih lanjut.