Artikel ini menjelaskan cara menyesuaikan setelan Identity-Aware Proxy (IAP). Dengan setelan ini, Anda dapat mengontrol perilaku yang meliputi:
- 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 pada aplikasi load balancer dan App Engine menggunakan Google Cloud Console, 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 APLIKASI.
- 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 Google Cloud Console 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
- Guna mendapatkan setelan untuk jenis resource IAP tertentu dalam project:
gcloud iap settings get --project=PROJECT-ID \ --resource-type=RESOURCE-TYPE-NAME
- Untuk menetapkan setelan 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 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 informasi selengkapnya:
- Untuk mendapatkan atau menetapkan setelan 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
Perlu izin khusus 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 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 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 OPSI HTTP (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 |
Tampilkan halaman error khusus saat akses ditolak |
application_settings.csm_settings.rctoken_aud |
Menerbitkan GKE Enterprise dan Istio RCTokens |
access_settings.gcip_settings |
Melakukan Autentikasi dengan Identity Platform |
access_settings.ReauthSettings |
Tetapkan kebijakan autentikasi ulang. Untuk mengetahui detailnya, lihat Mengonfigurasi autentikasi ulang |
Anda dapat menerapkan setelan pada level project, atau pada 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 OPSI HTTP (preflight CORS)
Kolom | Nilai default |
---|---|
access_settings.cors_settings.allow_http_options |
false |
Kebijakan asal yang sama web memblokir browser agar tidak mengirim permintaan AJAX antar-situs. Secara default, JavaScript pada halaman yang disalurkan dari satu origin tidak dapat menggunakan AJAX untuk mengirim permintaan ke aplikasi yang diamankan dengan IAP yang dihosting di origin lain.
Dalam beberapa kasus,
browser akan otomatis mencoba permintaan, tetapi akan 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 mengirimkan permintaan preflight CORS, suatu 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 preflight 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
sehingga 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 kerjanya, bukan menampilkan UI pemilihan akun.
Jika pengguna tidak login ke Akun Google mereka, UI login akan otomatis mengisi bagian domain dari alamat email mereka (misalnya, pengguna hanya perlu mengetik
alice
, bukanalice@example.com
).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 sudah diverifikasi:
Anda tidak dapat menggunakan domain DNS internet arbitrer yang Anda miliki. (Domain yang telah
ditambahkan sebagai domain primer atau sekunder Google Workspace
diverifikasi sehingga dapat digunakan di sini.)
Jika perlu mengautentikasi pengguna di luar domain, Anda dapat menggunakan autentikasi terprogram.
Untuk informasi selengkapnya, lihat dokumentasi OpenID Connect.
Menyetel halaman error akses kustom ditolak
Kolom | Nilai default |
---|---|
application_settings.access_denied_page_settings.access_denied_page_uri |
"" |
Dalam kolom ini, Anda dapat menetapkan URL yang akan mengalihkan pengguna ke halaman kustom, bukan ke halaman error IAP default setiap kali akses ditolak oleh suatu kebijakan.
Anda juga dapat menyematkan URL pemecahan masalah dengan fitur ini. Untuk informasi selengkapnya, lihat Mengaktifkan URL pemecahan masalah untuk halaman error Akses khusus Ditolak.
Memberikan ID mesh GKE Enterprise dan Istio RCToken
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.
Mengautentikasi 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 pada 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 pada versi layanan web,
IAP dimulai dengan serangkaian nilai default, lalu
mengikuti hierarki dari atas ke bawah. Setelan akan diterapkan begitu ditemukan,
jadi 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
pada level project, tetapi false
pada tingkat layanan, nilai efektif akan menjadi false
.
Lihat Resource dan izin untuk mempelajari hierarki resource IAP lebih lanjut.