Secara default, sesi Workforce Identity Federation memiliki durasi maksimum 12 jam. Durasi sesi yang diperpanjang memungkinkan organisasi mengonfigurasi sesi yang berlangsung lama hingga 90 hari untuk pelanggan Looker (Google Cloud core).
Dengan durasi sesi yang diperpanjang, pengguna tenaga kerja Anda dapat mempertahankan koneksi yang tidak terputus ke Looker (inti Google Cloud) tanpa memerlukan autentikasi ulang harian terhadap penyedia identitas (IdP) eksternal Anda. Interaksi pengguna dalam Looker (Google Cloud core) tetap diatur oleh konfigurasi durasi sesi Looker (Google Cloud core) Anda. Untuk menjaga keamanan selama sesi yang diperpanjang, Google Cloud secara berkala menyinkronkan atribut pengguna dan keanggotaan grup langsung dari penyedia identitas (IdP) eksternal Anda di latar belakang.
Dokumen ini menjelaskan cara menentukan kebijakan sesi yang diperluas menggunakan Access Context Manager API dengan kontrol cakupan project, mengonfigurasi penyedia kumpulan tenaga kerja, dan mengelola binding aktif.
Ringkasan
Workforce Identity Federation menggunakan binding akses Access Context Manager Google Cloud untuk mengonfigurasi durasi sesi yang diperpanjang:
- Google Cloud Binding akses: Administrator menentukan kebijakan durasi sesi menggunakan Access Context Manager yang berlaku di seluruh organisasi untuk semua kumpulan tenaga kerja di organisasi Anda. Dengan menggunakan cakupan
restricted_project, kebijakan ini memberikan sesi yang diperpanjang hingga 90 hari, yang hanya memengaruhi instance Looker (inti Google Cloud) yang dimiliki oleh project tersebut. - Sinkronisasi atribut latar belakang:
- OIDC: Didukung menggunakan alur Kode Otorisasi OIDC dengan cakupan
offline_access(menggunakan token refresh untuk memperbarui atribut pengguna dan keanggotaan grup secara berkala dari IdP eksternal Anda di latar belakang) atau melalui penyediaan SCIM. - SAML: Untuk penyedia SAML, atribut pengguna dan keanggotaan grup selalu diupdate menggunakan penyediaan SCIM.
- OIDC: Didukung menggunakan alur Kode Otorisasi OIDC dengan cakupan
- Perlindungan dari data yang tidak valid: Jika atribut pengguna tidak dapat diperbarui dari IdP eksternal dalam waktu 24 jam (misalnya, jika pengguna di-unprovisioning atau kredensial dicabut di IdP), Google Cloud mengakhiri sesi.
Sebelum memulai
Sebelum mengonfigurasi durasi sesi yang diperpanjang, pastikan Anda memiliki izin Identity and Access Management yang diperlukan dan API yang diaktifkan:
Peran dan izin yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk mengonfigurasi durasi sesi yang diperpanjang, minta administrator Anda untuk memberikan peran IAM berikut:
- Mengonfigurasi penyedia workforce identity pool: Workforce Pool Admin (
roles/iam.workforcePoolAdmin) di workforce pool atau organisasi. - Mengelola binding akses cloud Access Context Manager: Admin Binding Akses Cloud (
roles/accesscontextmanager.gcpAccessAdmin) di tingkat organisasi. Peran ini memberikan izin yang diperlukan untuk membuat, melihat, memperbarui, dan menghapus binding akses Access Context Manager.
Mengaktifkan API
Aktifkan Access Context Manager dan IAM API di project Anda:
gcloud services enable \
accesscontextmanager.googleapis.com \
iam.googleapis.com
Batasan dan Persyaratan
Sebelum mengonfigurasi durasi sesi yang diperpanjang, tinjau persyaratan dan batasan berikut:
- Aplikasi yang didukung: Durasi sesi yang diperpanjang berlaku secara eksklusif untuk Looker (Google Cloud core).
- Cakupan project wajib (
restricted_project): Setelan sesi harus dikonfigurasi dalamscopedAccessSettingsmenggunakan cakupan klienrestricted_projectyang menentukan project Google Cloud yang memiliki instance Looker (Google Cloud core) (projects/{PROJECT_NUMBER}).- Hanya aplikasi Looker (Google Cloud core) yang dimiliki oleh project yang ditetapkan yang terpengaruh oleh kebijakan ESL.
- Semua aplikasi lainnya (dan aplikasi Looker (Google Cloud core) yang dimiliki oleh project lain) tidak terpengaruh oleh kebijakan ini.
- Rentang durasi sesi: Durasi sesi harus antara minimum 1 jam (
3600s) dan maksimum 90 hari (7776000s). - Persyaratan parameter setelan sesi:
session_length_enabled: Harus ditetapkan ketrue.session_length: Durasi wajib antara 1 jam (3600s) dan 90 hari (7776000s).session_reauth_method: Harus tidak disetel atau disetel keLOGIN.use_oidc_max_age: Harus tidak ditetapkan atau ditetapkan kefalse.max_inactivity: Harus dibatalkan (atau default0s). Waktu tunggu sesi tidak aktif tidak didukung untuk bindingrestricted_project.
- Penyedia identitas yang didukung:
- OIDC: Memerlukan penyedia OIDC yang dikonfigurasi dengan Alur Kode Otorisasi dan cakupan
offline_accessuntuk menerbitkan token refresh, atau dikonfigurasi dengan penyediaan SCIM. - SAML 2.0: Memerlukan penyediaan SCIM yang diaktifkan di penyedia workforce pool.
- OIDC: Memerlukan penyedia OIDC yang dikonfigurasi dengan Alur Kode Otorisasi dan cakupan
- Nilai minimum keusangan atribut: Nilai minimum keusangan 24 jam tetap diberlakukan. Jika Google Cloud tidak dapat memperbarui atribut pengguna dari IdP Anda dalam waktu 24 jam, sesi akan dibatalkan dan pengguna harus melakukan autentikasi ulang.
- Batasan Access Context Manager:
- Binding organisasi tunggal: Binding durasi sesi yang diperpanjang untuk kumpulan tenaga kerja harus menargetkan akun utama "semua kumpulan tenaga kerja" organisasi (
principalSet://cloudresourcemanager.googleapis.com/organizations/{ORG_ID}/type/WorkforcePool). Karena ID akun utama gabungan ini berlaku di seluruh organisasi untuk semua kumpulan tenaga kerja di organisasi Anda, hanya satu binding tersebut yang dapat ada per organisasi. Untuk mengonfigurasi sesi yang diperpanjang untuk beberapa project Looker (inti Google Cloud) di seluruh kumpulan tenaga kerja, sertakan beberapa blok cakupanrestricted_projectdalam daftarscopedAccessSettingsbinding tunggal. - Tingkat akses (
access_levels,dry_run_access_levels) tidak didukung pada binding workforce pool. sessionSettingstingkat teratas langsung diGcpUserAccessBindingtidak didukung untuk pengikatan kumpulan tenaga kerja; setelan harus ditentukan dalamscopedAccessSettings.activeSettings.sessionSettings.
- Binding organisasi tunggal: Binding durasi sesi yang diperpanjang untuk kumpulan tenaga kerja harus menargetkan akun utama "semua kumpulan tenaga kerja" organisasi (
Mengonfigurasi penyedia workforce pool
Untuk mengizinkan durasi sesi yang diperpanjang, penyedia kumpulan tenaga kerja Anda harus dikonfigurasi untuk mendukung refresh atribut di latar belakang. Anda dapat mengonfigurasi penyedia untuk menggunakan protokol OIDC atau SAML.
Mengonfigurasi penyedia OIDC
Pembaruan atribut latar belakang untuk penyedia OIDC dapat ditangani menggunakan token refresh (cakupan offline_access) atau penyediaan SCIM. Jika menggunakan refresh atribut berbasis token:
- Di IdP eksternal Anda, konfigurasi aplikasi OIDC dengan alur kode otorisasi dan aktifkan Akses offline agar token refresh ditampilkan.
- Di Google Cloud, tambahkan
offline_accesske cakupan tambahan di penyedia pool tenaga kerja OIDC Anda.
Akses offline harus dikonfigurasi di semua kumpulan identitas tenaga kerja di Google Cloud organisasi Anda agar kebijakan durasi sesi yang diperpanjang memiliki efek yang diinginkan.
gcloud
Jika penyedia Anda sudah memiliki cakupan tambahan yang ada, sertakan cakupan tersebut bersama offline_access agar tidak ditimpa:
gcloud iam workforce-pools providers update-oidc PROVIDER_ID \
--workforce-pool=WORKFORCE_POOL_NAME \
--location=global \
--web-sso-additional-scopes="offline_access[,EXISTING_ADDITIONAL_SCOPES]"
Ganti kode berikut:
PROVIDER_ID: Nama penyedia workforce identity pool Anda.WORKFORCE_POOL_NAME: Nama workforce identity pool Anda.EXISTING_ADDITIONAL_SCOPES: Cakupan tambahan yang dipisahkan koma yang sebelumnya dikonfigurasi di penyedia. Jika Anda tidak memiliki cakupan tambahan yang ada, hilangkan parameter ini.
REST API
Kirim permintaan PATCH untuk memperbarui penyedia. Sertakan cakupan tambahan yang ada bersama dengan offline_access:
PATCH https://iam.googleapis.com/v1/locations/global/workforcePools/WORKFORCE_POOL_NAME/providers/PROVIDER_ID?updateMask=oidc.webSsoConfig.additionalScopes
Isi permintaan:
{
"oidc": {
"webSsoConfig": {
"additionalScopes": [
"offline_access"
]
}
}
}
Ganti kode berikut:
WORKFORCE_POOL_NAME: Nama workforce identity pool Anda.PROVIDER_ID: ID penyedia workforce identity pool Anda.
Mengonfigurasi penyedia SAML
Untuk penyedia SAML, pembaruan atribut latar belakang memerlukan penyediaan SCIM:
- Siapkan tenant SCIM untuk penyedia workforce pool Anda.
- Konfigurasi penyediaan pengguna dan grup dari penyedia identitas SAML Anda ke endpoint SCIM.
Untuk mengetahui petunjuk langkah demi langkah, lihat Penyediaan SCIM untuk Workforce Identity Federation.
Contoh konfigurasi kebijakan untuk Looker (Google Cloud core)
Buat resource GcpUserAccessBinding yang menetapkan kebijakan durasi sesi yang diperpanjang ke kumpulan tenaga kerja organisasi Anda, yang mencakup kebijakan ke project yang menghosting instance Looker (Google Cloud core) Anda.
gcloud
Tentukan kebijakan dalam file YAML bernama esl-binding.yaml:
scopedAccessSettings:
- scope:
clientScope:
restrictedProject:
name: projects/PROJECT_NUMBER
activeSettings:
sessionSettings:
sessionLength: 7776000s
sessionLengthEnabled: true
sessionReauthMethod: LOGIN
Buat binding akses:
gcloud access-context-manager cloud-bindings create \
--organization=ORG_ID \
--federated-principal="principalSet://cloudresourcemanager.googleapis.com/organizations/ORG_ID/type/WorkforcePool" \
--binding-file="esl-binding.yaml"
Ganti kode berikut:
ORG_ID: ID organisasi Google Cloud Anda (misalnya,123456789012).PROJECT_NUMBER: Nomor project yang memiliki instance Looker (Google Cloud core) target (misalnya,987654321098). Hanya aplikasi Looker (Google Cloud core) yang dimiliki oleh project ini yang menerima durasi sesi yang diperpanjang.sessionLength: Durasi sesi dalam detik, diikuti dengans. Misalnya,7776000smenentukan sesi 90 hari.- Tetapkan
sessionLengthEnabledketrue. sessionReauthMethod: Tetapkan keLOGIN(atau biarkan tidak ditetapkan).
REST API
Kirim permintaan POST ke Access Context Manager API:
POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings
Isi permintaan JSON:
{
"principal": {
"federatedPrincipal": "principalSet://cloudresourcemanager.googleapis.com/organizations/ORG_ID/type/WorkforcePool"
},
"scopedAccessSettings": [
{
"scope": {
"clientScope": {
"restrictedProject": {
"name": "projects/PROJECT_NUMBER"
}
}
},
"activeSettings": {
"sessionSettings": {
"sessionLength": "7776000s",
"sessionLengthEnabled": true,
"sessionReauthMethod": "LOGIN"
}
}
}
]
}
Ganti kode berikut:
ORG_ID: ID organisasi Google Cloud Anda (misalnya,123456789012).PROJECT_NUMBER: Nomor project yang memiliki instance Looker (Google Cloud core) target (misalnya,987654321098). Hanya aplikasi Looker (Google Cloud core) yang dimiliki oleh project ini yang menerima durasi sesi yang diperpanjang.sessionLength: Durasi sesi dalam detik, diikuti dengans. Misalnya,7776000smenentukan sesi 90 hari.- Tetapkan
sessionLengthEnabledketrue. sessionReauthMethod: Tetapkan keLOGIN(atau biarkan tidak ditetapkan).
Melihat dan mencantumkan binding
Karena binding berlaku di semua kumpulan tenaga kerja dalam organisasi, paling banyak ada satu binding akses per organisasi.
Mencantumkan binding aktif
Untuk mencantumkan binding akses workforce pool di organisasi Anda, gunakan filter principal:federatedPrincipal:
gcloud
gcloud access-context-manager cloud-bindings list \
--organization=ORG_ID \
--filter="principal:federatedPrincipal"
REST API
GET https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings?filter=principal:federated_principal
Mendapatkan detail binding
Untuk melihat detail binding akses workforce pool tertentu:
gcloud
gcloud access-context-manager cloud-bindings describe \
--binding=BINDING_NAME
Ganti BINDING_NAME dengan nama resource lengkap binding (misalnya, organizations/123456789012/gcpUserAccessBindings/b1234567890).
REST API
GET https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID
Ganti kode berikut:
ORG_ID: ID organisasi Google Cloud Anda (misalnya,123456789012).BINDING_ID: ID binding akses Anda (misalnya,b1234567890).
Memperbarui binding akses
Anda dapat memperbarui binding akses kumpulan tenaga kerja yang ada untuk mengubah durasi sesi, menambahkan cakupan project baru, atau menghapus cakupan project yang ada.
gcloud
Tentukan kebijakan yang diperbarui dalam file YAML bernama
updated-esl-binding.yaml:scopedAccessSettings: - scope: clientScope: restrictedProject: name: projects/PROJECT_NUMBER activeSettings: sessionSettings: sessionLength: 2592000s sessionLengthEnabled: true sessionReauthMethod: LOGINTerapkan kebijakan yang telah diperbarui:
- Ganti setelan akses yang tercakup: Untuk mengganti cakupan project yang ada dengan konfigurasi yang ditentukan dalam
updated-esl-binding.yaml:
gcloud access-context-manager cloud-bindings update \ --binding=BINDING_NAME \ --binding-file="updated-esl-binding.yaml"- Tambahkan ke setelan yang ada: Untuk menambahkan cakupan project yang ditentukan dalam
updated-esl-binding.yamlke cakupan project yang ada pada binding tanpa menimpanya, teruskan tanda--append:
gcloud access-context-manager cloud-bindings update \ --binding=BINDING_NAME \ --binding-file="updated-esl-binding.yaml" \ --append- Ganti setelan akses yang tercakup: Untuk mengganti cakupan project yang ada dengan konfigurasi yang ditentukan dalam
Ganti berikut ini:
* BINDING_NAME: Nama lengkap resource binding (misalnya, organizations/123456789012/gcpUserAccessBindings/b1234567890).
* PROJECT_NUMBER: Nomor project yang memiliki instance Looker (Google Cloud core) target.
* sessionLength: Durasi sesi yang diperbarui (misalnya, 2592000s untuk 30 hari).
REST API
Kirim permintaan PATCH untuk memperbarui binding.
- Ganti setelan akses yang tercakup: Untuk mengganti cakupan project yang ada:
PATCH https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID?updateMask=scopedAccessSettings
- Tambahkan ke setelan yang ada: Untuk menambahkan cakupan project baru tanpa menimpa cakupan yang ada, tetapkan parameter kueri
append=true:
PATCH https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID?updateMask=scopedAccessSettings&append=true
Isi permintaan JSON:
{
"scopedAccessSettings": [
{
"scope": {
"clientScope": {
"restrictedProject": {
"name": "projects/PROJECT_NUMBER"
}
}
},
"activeSettings": {
"sessionSettings": {
"sessionLength": "2592000s",
"sessionLengthEnabled": true,
"sessionReauthMethod": "LOGIN"
}
}
}
]
}
Ganti kode berikut:
* ORG_ID: ID organisasi Google Cloud Anda (misalnya, 123456789012).
* BINDING_ID: ID binding akses Anda (misalnya, b1234567890).
* PROJECT_NUMBER: Nomor project yang memiliki instance Looker (Google Cloud core) target.
* sessionLength: Durasi sesi yang diperbarui (misalnya, 2592000s untuk 30 hari).
Menghapus binding akses
Jika Anda menghapus binding akses kumpulan tenaga kerja, durasi sesi yang diperpanjang akan dinonaktifkan untuk semua kumpulan tenaga kerja di organisasi Anda.
gcloud
gcloud access-context-manager cloud-bindings delete \
--binding=BINDING_NAME
Ganti BINDING_NAME dengan nama resource lengkap binding.
REST API
Kirim permintaan DELETE untuk menghapus pengikatan:
DELETE https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID
Ganti kode berikut:
ORG_ID: ID Google Cloud organisasi Anda.BINDING_ID: ID binding akses yang akan dihapus.