Halaman ini menjelaskan cara membagikan klien OAuth dengan aplikasi lain dalam organisasi Anda.
Ringkasan
Dengan berbagi klien OAuth antar-project, Anda tidak perlu membuat klien OAuth baru secara manual untuk setiap aplikasi dalam organisasi Anda. Setelah membuat satu klien OAuth secara manual, Anda dapat menetapkannya secara terprogram ke beberapa aplikasi.
Berbagi klien OAuth juga digunakan untuk membagikan klien OAuth kepada agen yang Anda inginkan agar dapat mengaktifkan Identity-Aware Proxy (IAP), tetapi tidak memiliki akses ke halaman Kredensial.
Berbagi klien OAuth juga digunakan saat aplikasi menggunakan klien OAuth yang dikelola Google untuk alur browser dan Anda ingin mengaktifkan akses terprogram ke aplikasi.
Sebelum memulai
Buat klien OAuth baru dengan menyelesaikan langkah-langkah di Pembuatan klien OAuth atau Anda dapat menggunakan klien OAuth yang ada.
Akses terprogram
Bagian ini menjelaskan langkah-langkah untuk mengaktifkan klien OAuth guna mendapatkan akses terprogram ke aplikasi Anda.
Mencantumkan klien OAuth dalam daftar yang diizinkan untuk akses terprogram.
Anda dapat mengizinkan daftar client ID OAuth yang dimiliki oleh organisasi Anda dan Anda ingin memberikan akses terprogram ke aplikasi.
Anda dapat mengizinkan klien OAuth di resource dan layanan di tingkat organisasi, project, dan folder.
gcloud
Jalankan perintah berikut untuk menyiapkan file
SETTING_FILE
. Perbarui nilai sesuai kebutuhan.cat << EOF > SETTING_FILE access_settings: oauth_settings: programmatic_clients: ["clientId1", "clientId2", ..] EOF
Gunakan perintah
gcloud iap settings set
untuk mengizinkan klien OAuth di tingkat yang diinginkan.gcloud iap settings set
SETTING_FILE
[--organization=ORGANIZATION --folder=FOLDER --project=/PROJECT --resource-type=RESOURCE_TYPE --service=SERVICE --version=VERSIONContoh perintah:
Untuk memasukkan client ID OAuth ke dalam daftar yang diizinkan di resource dalam organisasi, jalankan perintah berikut.
gcloud iap settings set
SETTING_FILE
--organization=ORGANIZATIONUntuk mengizinkan client ID OAuth di resource dalam folder, jalankan perintah berikut.
gcloud iap settings set
SETTING_FILE
--folder=FOLDERUntuk mengizinkan client ID OAuth di semua resource jenis web dalam project, jalankan perintah berikut.
gcloud iap settings set
SETTING_FILE
--project=PROJECT --resource-type=iap_webUntuk mengizinkan client ID OAuth di layanan App Engine dalam project, jalankan perintah berikut.
gcloud iap settings set
SETTING_FILE
--project=PROJECT --resource-type=app-engine --service=SERVICEGanti kode berikut:
- FOLDER: ID folder.
- ORGANIZATION: ID organisasi.
- PROJECT: Project ID.
- RESOURCE_TYPE: Jenis resource IAP. Harus berupa
app-engine
,iap_web
,compute
,organization
, ataufolder
. - SERVICE: Nama layanan. Ini bersifat opsional jika
resource-type
adalahcompute
atauapp-engine
. - VERSION: Nama versi. Ini tidak berlaku untuk
compute
, dan bersifat opsional jikaresource-type
adalahapp-engine
.
API
Jalankan perintah berikut untuk menyiapkan file
iap_settings.json
. Perbarui nilai sesuai kebutuhan.cat << EOF > iap_settings.json { "access_settings": { "oauth_settings": { programmatic_clients: ["clientId1", "clientId2", ..] } } } EOF
Dapatkan nama resource dengan menjalankan perintah
gcloud iap settings get
. Salin kolom nama dari output.
Anda akan memerlukan nama tersebut di langkah berikut.gcloud iap settings get [--organization=ORGANIZATION --folder=FOLDER --project=PROJECT --resource-type=RESOURCE_TYPE --service=SERVICE --version=VERSION]
Ganti
RESOURCE_NAME
dalam perintah berikut dengan nama dari langkah sebelumnya.IapSettings
akan diperbarui.curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d @iap_settings.json \ "https://iap.googleapis.com/v1/RESOURCE_NAME:iapSettings?updateMask=iapSettings.accessSettings.oauthSettings.programmaticClients"
Login ke aplikasi menggunakan salah satu client ID OAuth yang diizinkan. Lihat Autentikasi terprogram.
Akses browser
Untuk mengaktifkan IAP agar dapat menggunakan client ID dan secret Anda menggunakan konsol Google Cloud, selesaikan petunjuk berikut.
- Mengonfigurasi Klien OAuth untuk Compute Engine (Compute Engine)
- Mengonfigurasi Klien OAuth untuk Google Kubernetes Engine (GKE)
- Mengonfigurasi Klien OAuth untuk App Engine
- Mengonfigurasi Klien OAuth untuk Cloud Run
Risiko
Meskipun berbagi klien antar-aplikasi Anda praktis, ada risikonya. Bagian ini menguraikan potensi risiko saat berbagi klien dan cara menguranginya.
Titik tunggal kegagalan
Menggunakan satu klien OAuth untuk banyak aplikasi akan menciptakan satu titik kegagalan. Jika klien dihapus atau diubah secara tidak benar, setiap aplikasi yang menggunakan klien tersebut akan terpengaruh.
Untuk mengurangi hal ini, hanya bagikan klien saat memenuhi kasus penggunaan penting untuk klien bersama.
Kebocoran rahasia klien
Untuk membagikan klien, Anda harus membagikan secret klien kepada orang dan skrip. Hal ini meningkatkan risiko kebocoran secret klien Anda. IAP tidak dapat membedakan antara token yang dibuat dari aplikasi Anda dan token yang dibuat dari secret klien yang bocor.
Akses ke resource IAP Anda dapat dipantau dengan Cloud Audit Logging. Jika Anda yakin ada kemungkinan rahasia klien Anda bocor, reset dari halaman Kredensial.
Untuk mengurangi risiko ini, lindungi secret klien seperti sandi. Batasi berbagi dan jangan pernah menyimpannya sebagai teks biasa.
Peniruan identitas pengguna yang diberi otorisasi
Jika secret klien Anda bocor, aplikasi berbahaya dapat menetapkan cookie browser autentikasi IAP di domainnya untuk meniru identitas pengguna yang diotorisasi. Dengan cookie ini, IAP akan mengautentikasi pengguna yang disamarkan untuk semua aplikasi yang membagikan secret klien yang bocor.
Untuk mengurangi risiko ini, hindari berbagi klien di antara resource yang juga berbagi pengguna resmi. Tetapkan izin per resource untuk memastikan bahwa meskipun pengguna yang disamarkan diautentikasi, IAP tidak akan memberikan otorisasi akses.
Pengumpulan identitas pengguna
Jika secret klien Anda bocor, aplikasi berbahaya dapat menggunakan client ID Anda untuk mengumpulkan identitas pengguna aplikasi Anda. Peristiwa ini dipicu saat pengguna mengunjungi aplikasi berbahaya.
Saat pengguna mengakses aplikasi yang dilindungi IAP untuk pertama kalinya, mereka akan diminta untuk membagikan identitas mereka ke aplikasi. Hal ini memberi pengguna kontrol atas informasi pribadi mereka. Saat pengguna mengizinkan untuk membagikan identitasnya, sistem login Google akan mencatat izin tersebut. IAP tidak akan meminta ulang pengguna pada permintaan berikutnya dari client ID apa pun dalam project yang sama.
Setiap pengguna yang telah mengizinkan untuk membagikan identitasnya dengan aplikasi Anda, dan yang mengunjungi aplikasi berbahaya, akan segera membagikan identitasnya tanpa izinnya.