Halaman ini menunjukkan cara mengonfigurasi Identity-Aware Proxy (IAP) untuk menggunakan Workforce Identity Federation.
Saat mengonfigurasi Workforce Identity Federation dengan IAP, Anda dapat menggunakan penyedia identitas (IdP) eksternal untuk mengautentikasi dan memberi otorisasi kepada tenaga kerja—grup pengguna seperti karyawan, partner, dan kontraktor—menggunakan Identity and Access Management (IAM), sehingga pengguna dapat mengakses layanan yang di-deploy di Google Cloud Google Cloud atau lokal dengan aman.
Mengonfigurasi IAP dengan Workforce Identity Federation memungkinkan Anda melakukan hal berikut terkait aplikasi yang diamankan oleh IAP:
- Mengarahkan pengguna akhir ke IdP eksternal, seperti Okta, untuk login.
- Mengonfigurasi sesi login antara 15 menit dan 12 jam.
- Mengizinkan hanya pengguna akhir atau kumpulan pengguna akhir tertentu di IdP untuk mengakses aplikasi Anda.
- Menentukan konteks tempat pengguna akhir dapat mengakses aplikasi. Misalnya, hanya mengizinkan akses selama waktu tertentu dalam sehari.
Anda dapat menggunakan IAP dengan Workforce Identity Federation di semua resource dan load balancer yang ada yang didukung IAP.
Mengonfigurasi IAP dengan Workforce Identity Federation untuk aplikasi
Mengonfigurasi IAP dengan Workforce Identity Federation terdiri dari tugas utama berikut:
- Menyiapkan workforce pool dan penyedia.
- Membuat client ID dan rahasia OAuth.
- Mengaktifkan IAP dan mengonfigurasinya untuk menggunakan Workforce Identity Federation.
Menyiapkan workforce pool dan penyedia
Untuk menyiapkan workforce pool dan penyedia, ikuti petunjuk untuk salah satu penyedia berikut:
Saat menetapkan waktu durasi sesi, lihat Mengelola sesi IAP dengan Workforce Identity Federation.
Jika ingin memetakan alamat email dari IdP pihak ketiga ke Google Cloud,
Anda harus menambahkan pemetaan atribut di penyedia workforce pool untuk google.email.
Contoh: google.email=assertion.email.
Membuat client ID dan rahasia OAuth
Ikuti petunjuk untuk membuat client ID dan rahasia OAuth di project dalam organisasi yang sama dengan workforce pool yang akan Anda gunakan untuk konfigurasi ini. Project tidak harus merupakan project yang sama dengan resource yang diamankan oleh IAP. Saat membuat client ID dan rahasia OAuth, lakukan hal berikut:
Gunakan placeholder untuk URI pengalihan saat membuat client ID. Setelah membuat client ID, jalankan
describeklien OAuth untuk mendapatkanclientIDyang dibuat.Setelah memiliki
clientID, jalankanupdateklien OAuth untuk mengupdateallowed-redirect-uriske:https://iap.googleapis.com/v1/oauth/clientIds/$CLIENT_ID:handleRedirect.Dengan
CLIENT_IDadalahclientIDyang diambil pada langkah sebelumnya.Setelah membuat rahasia klien, jalankan
describekredensial klien OAuth untuk mendapatkanclientSecretyang dibuat.
Simpan
clientIddanclientSecretkarena Anda akan memerlukannya pada langkah-langkah berikutnya.
Mengaktifkan IAP untuk menggunakan Workforce Identity Federation
Untuk mengaktifkan IAP dengan Workforce Identity Federation, selesaikan langkah-langkah berikut.
Mengaktifkan IAP
Aktifkan IAP di resource.
console
- Di Google Cloud console, buka halaman IAP.
Buka halaman IAP - Pilih project. Project harus berada di organisasi yang sama dengan workforce pool yang Anda buat sebelumnya. Project tidak harus merupakan project tempat Anda membuat client ID dan rahasia OAuth.
- Klik tab Applications, lalu temukan aplikasi yang ingin Anda batasi aksesnya menggunakan IAP.
- Di kolom IAP, alihkan tombol ke posisi On.
gcloud
Untuk menggunakan gcloud CLI guna mengaktifkan IAP, ikuti prosedur untuk layanan yang berlaku:
API
Buat file
settings.json.cat << EOF > settings.json { "iap": { "enabled":true, } } EOFAktifkan IAP di App Engine.
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth 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.enabled"Untuk mengaktifkan IAP di Compute Engine, gunakan URL berikut:
https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/REGION/backendServices/BACKEND_SERVICE_NAME?updateMask=iap.enabled.
Memperbarui setelan IAP
Untuk mengonfigurasi IAP agar menggunakan Workforce Identity Federation, Anda harus mengonfigurasi setelan berikut:
WorkforceIdentitySettings: Client ID dan rahasia OAuth yang dibuat sebelumnya.IdentitySources: Sumber identitas.
Untuk mengetahui informasi selengkapnya, lihat IAP API.
gcloud
Dengan menggunakan contoh berikut sebagai referensi, buat file
iap_settings.yaml.CLIENT_ID=clientId CLIENT_SECRET=clientSecret WORKFORCE_POOL_NAME=locations/global/workforcePools/test-pool cat <<EOF > iap_settings.yaml access_settings: identity_sources: ["WORKFORCE_IDENTITY_FEDERATION"] workforce_identity_settings: workforce_pools: ["$WORKFORCE_POOL_NAME"] oauth2: client_id: "$CLIENT_ID" client_secret: "$CLIENT_SECRET" EOFJalankan perintah berikut untuk memperbarui setelan IAP untuk resource Anda.
gcloud iap settings set iap_settings.yaml --project=PROJECT --resource-type=RESOURCE_TYPE --service=SERVICEGanti kode berikut:
- PROJECT: Project ID.
RESOURCE_TYPE: Jenis resource IAP. Jenis resource harus berupa
cloud-run(Pratinjau),app-engine,iap_web,compute,organization, ataufolder.Untuk jenis resource
cloud-run, gunakan flag--regionuntuk menunjukkan region tempat layanan Cloud Run Anda di-deploy.SERVICE: Nama layanan. Parameter ini bersifat opsional untuk
app-enginedancompute.
Untuk mengetahui detail perintah, lihat gcloud iap settings set.
API
Dengan menggunakan contoh berikut sebagai referensi, buat file setelan
iap_settings.json.CLIENT_ID=clientId CLIENT_SECRET=clientSecret WORKFORCE_POOL_NAME=locations/global/workforcePools/test-pool cat <<EOF > iap_settings.json { "access_settings": { "identity_sources": ["WORKFORCE_IDENTITY_FEDERATION"], "workforce_identity_settings": { "workforce_pools": ["$WORKFORCE_POOL_NAME"], "oauth2": { "client_id": "$CLIENT_ID", "client_secret": "$CLIENT_SECRET", } } } } EOFGunakan gcloud CLI untuk mendapatkan nama resource, lalu salin
RESOURCE_NAMEdari output karena Anda akan memerlukannya pada langkah berikutnya.gcloud iap settings get \ --project=PROJECT \ --resource-type=RESOURCE_TYPE \ --service=SERVICEGanti kode berikut:
- PROJECT: Project ID.
- RESOURCE_TYPE: Jenis resource IAP. Jenis
resource harus berupa
appengine,iap_web,compute,organization,folder, ataucloud_run-$REGION(Pratinjau), dengan $REGION adalah region tempat layanan Cloud Run Anda di-deploy. - SERVICE: Nama layanan. Parameter ini bersifat opsional untuk
app-enginedancompute.
Ganti
RESOURCE_NAMEdalam perintah berikut denganRESOURCE_NAMEdari langkah sebelumnya.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.identitySources,iapSettings.accessSettings.workforceIdentitySettings.workforcePools,iapSettings.accessSettings.workforceIdentitySettings.oauth2.clientId,iapSettings.accessSettings.workforceIdentitySettings.oauth2.clientSecret"
Memberikan akses ke resource yang diamankan oleh IAP
Untuk mengakses resource yang diamankan oleh IAP, pengguna akhir harus memiliki peran IAP-Secured Web App User di resource tersebut. Anda dapat memberikan peran IAP-Secured Web App User kepada satu pengguna (akun utama) atau kumpulan pengguna (kumpulan akun utama, yang dipetakan ke grup, atribut tertentu, atau seluruh kumpulan pengguna).
Akses tanpa batasan ke resource yang diamankan oleh IAP tidak didukung.
console
- Di Google Cloud console, buka halaman IAP.
Buka halaman IAP - Pilih resource yang ingin Anda amankan dengan IAP.
- Klik Add Principal, lalu tambahkan ID akun utama grup atau individu yang ingin Anda beri peran IAM untuk resource tersebut.
- Di Assign roles , pilih IAP-Secured Web App User.
- Klik Add.
gcloud
Jalankan perintah berikut.
gcloud iap web add-iam-policy-binding \
--member=PRINCIPAL_IDENTIFIER \
--role='roles/iap.httpsResourceAccessor' \
--project=PROJECT_ID \
--resource-type=RESOURCE_TYPE \
--service=SERVICE \
--condition=CONDITION
Ganti kode berikut :
- PRINCIPAL_IDENTIFIER: ID akun utama.
- PROJECT_ID: Project ID.
- RESOURCE_TYPE: Jenis resource IAP, yang dapat
berupa
app-engineataubackend-services. - SERVICE: (Opsional) Nama layanan.
- CONDITION: (Opsional) Kondisi IAM. Berikut adalah contoh kondisi yang dikonfigurasi dengan tingkat akses:
expression="accessPolicies/12345678/accessLevels/iap_test_access_level" in request.auth.access_levels,title=iap-test-access-level,description=only access in weekdays
API
Metode ini tidak direkomendasikan karena memengaruhi seluruh kebijakan IAM resource. Error dapat menghapus kebijakan dari resource.
Dapatkan binding kebijakan IAM yang ada.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d {} \ "https://iap.googleapis.com/v1/RESOURCE_NAME:getIamPolicy" -o iam_policy_bindings.jsonGanti RESOURCE_NAME dengan RESOURCE_NAME yang Anda dapatkan pada langkah sebelumnya.
Ke file
iam_policy_bindings.jsonyang Anda dapatkan dari langkah sebelumnya, hapus baris versi dan etag, lalu tambahkan binding yang ingin Anda tambahkan untuk ID akun utama. Untuk mengetahui informasi selengkapnya, lihat Memahami kebijakan izin.{ "bindings": [ { // existing bindings }, { "role": "roles/iap.httpsResourceAccessor", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/iap-test-pool/subject/iap-test-subject" ], "condition": { "expression": "\"accessPolicies/12345678/accessLevels/iap_test_access_level\" in request.auth.access_levels", "title": "iap-test-access-level", "description": "only access in week days" } } ] }Perbarui binding kebijakan IAM.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d "{"policy":$(cat iam_policy_bindings.json)}" \ "https://iap.googleapis.com/v1/RESOURCE_NAME:setIamPolicy"Ganti RESOURCE_NAME dengan RESOURCE_NAME yang Anda dapatkan pada langkah sebelumnya.
Lihat GetIamPolicy dan SetIamPolicy untuk mengetahui informasi selengkapnya.
(Opsional) Menyiapkan akses kontekstual
Secara opsional, Anda dapat menyiapkan aturan akses kontekstual untuk otorisasi lanjutan.
Untuk menyiapkan tingkat akses, lihat Membuat dan menerapkan tingkat akses. Tingkat akses berdasarkan informasi perangkat tidak tersedia saat menggunakan Workforce Identity Federation. Anda tetap dapat menggunakan tingkat akses berbasis konteks permintaan dengan kondisi pada alamat IP, serta waktu dan tanggal.
Autentikasi terprogram
IAP mendukung autentikasi JWT akun layanan untuk aplikasi yang dikonfigurasi dengan Workforce Identity Federation. Untuk mengetahui petunjuknya, lihat Mengautentikasi dengan JWT akun layanan.
Batasan saat menggunakan workforce pool
- Untuk setiap aplikasi yang mengaktifkan IAP, hanya satu workforce pool yang dapat dikonfigurasi, dan workforce pool hanya dapat berisi satu penyedia.
- Workforce pool, client ID dan rahasia OAuth, serta aplikasi yang mengaktifkan IAP harus berada di organisasi yang sama.
- Tingkat akses untuk informasi terkait perangkat tidak didukung.
- Hanya konfigurasi setelan IAP berikut yang didukung:
- Akses terprogram dengan Workforce Identity Federation hanya didukung untuk akun layanan Google.
Pemecahan masalah
Untuk informasi pemecahan masalah, lihat Pemecahan masalah dan pertanyaan umum.