Halaman ini menjelaskan cara berbagi klien OAuth dengan aplikasi lain dalam organisasi Anda.
Ringkasan
Berbagi klien OAuth antar-project akan menghilangkan kebutuhan untuk membuat klien OAuth baru secara manual untuk setiap aplikasi di bagian organisasi Anda. Setelah membuat satu klien OAuth secara manual, Anda dapat menetapkannya secara terprogram ke beberapa aplikasi.
Fitur berbagi klien OAuth juga digunakan untuk berbagi klien OAuth dengan agen jika Anda ingin dapat mengaktifkan Identity-Aware Proxy (IAP) tetapi tidak memiliki akses ke halaman Credentials.
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 sudah ada.
Akses terprogram
Bagian ini menjelaskan langkah-langkah guna mengaktifkan klien OAuth untuk akses terprogram ke aplikasi Anda.
Izinkan klien OAuth untuk akses terprogram.
Anda dapat mengizinkan daftar client ID OAuth yang dimiliki oleh organisasi dan ingin memberikan akses terprogram ke aplikasi.
Anda dapat mengizinkan klien OAuth pada resource dan layanan di tingkat organisasi, project, dan folder.
gcloud
Jalankan perintah berikut untuk menyiapkan file
SETTING_FILE
. Perbarui nilainya 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 mengizinkan client ID OAuth pada resource dalam organisasi, jalankan perintah berikut.
gcloud iap settings set
SETTING_FILE
--organization=ORGANIZATIONUntuk mengizinkan client ID OAuth pada 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. Hal ini opsional jika
resource-type
adalahcompute
atauapp-engine
. - VERSION: Nama versi. Hal ini tidak berlaku untuk
compute
, dan bersifat opsional jikaresource-type
adalahapp-engine
.
API
Jalankan perintah berikut untuk menyiapkan file
iap_settings.json
. Perbarui nilainya 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.
Nama akan diperlukan pada langkah berikutnya.gcloud iap settings get [--organization=ORGANIZATION --folder=FOLDER --project=PROJECT --resource-type=RESOURCE_TYPE --service=SERVICE --version=VERSION]
Ganti
RESOURCE_NAME
di 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
Agar IAP dapat menggunakan client ID dan secret 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 adalah hal yang mudah, tetap ada risikonya. Bagian ini menjelaskan potensi risiko saat berbagi klien dan cara memitigasinya.
Titik tunggal kegagalan
Menggunakan satu klien OAuth untuk banyak aplikasi akan menimbulkan satu titik kegagalan. Jika klien dihapus atau diubah dengan tidak benar, setiap aplikasi yang menggunakan klien tersebut akan terkena dampak.
Untuk memitigasinya, hanya bagikan klien saat memenuhi kasus penggunaan penting untuk klien bersama.
Kebocoran rahasia klien
Berbagi klien memerlukan pembagian rahasia klien Anda dengan orang dan skrip. Hal ini meningkatkan risiko kebocoran rahasia klien Anda. IAP tidak dapat membedakan antara token yang dibuat dari aplikasi Anda dan token yang dibuat dari rahasia klien yang bocor.
Akses ke resource IAP Anda dapat dipantau dengan Cloud Audit Logging. Jika Anda yakin ada kemungkinan rahasia klien Anda bocor, reset rahasia tersebut dari halaman Kredensial.
Untuk mengurangi risiko ini, lindungi rahasia klien seperti {i>password<i}. Batasi pembagiannya dan jangan pernah menyimpannya sebagai teks biasa.
Peniruan identitas pengguna yang diberi otorisasi
Jika rahasia klien Anda bocor, aplikasi berbahaya dapat menetapkan cookie browser autentikasi IAP pada domainnya untuk meniru identitas pengguna yang sah. Dengan cookie ini, IAP akan mengautentikasi pengguna yang ditiru identitasnya untuk semua aplikasi yang membagikan rahasia klien yang bocor.
Untuk mengurangi risiko ini, hindari berbagi klien antar-resource yang juga berbagi pengguna resmi. Tetapkan izin per resource untuk memastikan bahwa sekalipun pengguna yang ditiru identitasnya diautentikasi, IAP tidak akan mengizinkan akses.
Pengumpulan identitas pengguna
Jika rahasia klien Anda dibocorkan, aplikasi berbahaya dapat menggunakan client ID Anda untuk mengumpulkan identitas pengguna aplikasi Anda. Hal ini dipicu saat pengguna membuka aplikasi berbahaya.
Saat mengakses aplikasi yang dilindungi IAP untuk pertama kalinya, pengguna akan diminta untuk membagikan identitasnya ke aplikasi. Tindakan ini memberi pengguna kontrol atas informasi pribadi mereka. Jika pengguna setuju untuk membagikan identitasnya, sistem login Google akan mencatat izin tersebut. IAP tidak akan meminta ulang pengguna untuk permintaan berikutnya dari client ID mana pun dalam project yang sama.
Setiap pengguna yang telah setuju untuk membagikan identitasnya ke aplikasi Anda, dan yang mengunjungi aplikasi berbahaya tersebut, akan langsung dibagikan identitasnya tanpa persetujuan.