Mengonfigurasi Durasi Sesi yang Diperpanjang untuk Workforce Identity Federation

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 Looker (Google Cloud core) dan aplikasi seluler Gemini Enterprise:

  • Looker (Google Cloud core): Dikonfigurasi menggunakan cakupan project (restricted_project). Sesi yang diperpanjang memungkinkan pengguna tenaga kerja mempertahankan koneksi tanpa gangguan ke Looker (Google Cloud core) tanpa memerlukan autentikasi ulang harian terhadap penyedia identitas eksternal (IdP) Anda. Interaksi pengguna dalam Looker (Google Cloud core) tetap diatur oleh konfigurasi durasi sesi Looker (Google Cloud core) Anda.

  • Aplikasi seluler Gemini Enterprise: Dikonfigurasi menggunakan cakupan aplikasi (restricted_client_application). Sesi yang diperpanjang memungkinkan pengguna tenaga kerja mempertahankan koneksi tanpa gangguan ke aplikasi seluler Gemini Enterprise tanpa memerlukan autentikasi ulang harian terhadap penyedia identitas eksternal (IdP) 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 diperpanjang menggunakan Access Context Manager API dengan kontrol cakupan project (untuk Looker (Google Cloud core)) dan kontrol cakupan aplikasi (untuk aplikasi seluler Gemini Enterprise), mengonfigurasi penyedia workforce pool, 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 di semua workforce pool di organisasi Anda. Kebijakan memberikan sesi yang diperpanjang hingga 90 hari menggunakan salah satu dari berikut ini:

    • Cakupan project (restricted_project): Menerapkan sesi yang diperpanjang ke instance Looker (Google Cloud core) di project yang ditentukan.

    • Cakupan aplikasi (restricted_client_application): Menerapkan sesi yang diperpanjang ke aplikasi seluler Gemini Enterprise.

  • 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 diperbarui menggunakan penyediaan SCIM.

  • Perlindungan penghentian: Jika atribut pengguna tidak dapat diperbarui dari IdP eksternal dalam waktu 24 jam (misalnya, jika pengguna tidak lagi disediakan atau kredensial dicabut di IdP), Google Cloud sesi akan dihentikan.


Sebelum memulai

Sebelum mengonfigurasi durasi sesi yang diperpanjang, pastikan Anda memiliki izin Identity and Access Management yang diperlukan dan API diaktifkan:

Peran dan izin yang diperlukan

Untuk mendapatkan izin yang diperlukan untuk mengonfigurasi durasi sesi yang diperpanjang, minta administrator Anda untuk memberikan peran IAM berikut:

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 hanya berlaku untuk hal berikut:
    • Looker (Google Cloud core) (dikonfigurasi menggunakan cakupan project)
    • Aplikasi seluler Gemini Enterprise (dikonfigurasi menggunakan cakupan aplikasi)
  • Persyaratan daftar yang diizinkan untuk aplikasi seluler Gemini Enterprise: Durasi sesi yang diperpanjang untuk aplikasi seluler Gemini Enterprise hanya tersedia melalui daftar yang diizinkan. Untuk meminta akses ke daftar yang diizinkan selama Pratinjau, hubungi Google Cloud Poin kontak (POC) dukungan Anda.
  • Jenis cakupan: Setelan sesi harus dikonfigurasi dalam scopedAccessSettings menggunakan salah satu cakupan klien berikut:
    • Cakupan project (restricted_project): Menentukan Google Cloud project yang memiliki instance Looker (Google Cloud core) (projects/{PROJECT_NUMBER}). Hanya instance Looker (Google Cloud core) yang dimiliki oleh project yang ditentukan yang terpengaruh.
    • Cakupan aplikasi (restricted_client_application): Menentukan aplikasi berdasarkan tampilan kanonis name.
    • Untuk mengonfigurasi cakupan aplikasi untuk aplikasi seluler Gemini Enterprise, Anda harus menggunakan satu atau kedua nama aplikasi kanonis berikut secara eksplisit:
      • "Gemini Enterprise mobile Android"
      • "Gemini Enterprise mobile IOS"
    • Pencakupan berdasarkan ID klien OAuth (clientId) tidak didukung untuk binding Workforce Identity Federation dan akan ditolak. Anda harus mengidentifikasi aplikasi menggunakan kolom name.
  • 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 ke true.
    • session_length: Durasi yang diperlukan antara 1 jam (3600s) dan 90 hari (7776000s).
    • session_reauth_method: Harus tidak ditetapkan atau ditetapkan ke LOGIN.
    • use_oidc_max_age: Harus tidak ditetapkan atau ditetapkan ke false.
    • max_inactivity: Harus tidak ditetapkan (atau default 0s). Waktu tunggu sesi tidak aktif tidak didukung untuk binding restricted_project dan binding restricted_client_application.
  • Penyedia identitas yang didukung:
    • OIDC: Memerlukan penyedia OIDC yang dikonfigurasi dengan Alur Kode Otorisasi dan cakupan offline_access untuk mengeluarkan token refresh, atau dikonfigurasi dengan penyediaan SCIM.
    • SAML 2.0: Memerlukan penyediaan SCIM yang diaktifkan pada penyedia workforce pool.
  • Threshold penghentian atribut: Threshold penghentian 24 jam yang tetap diterapkan. 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 workforce pool harus menargetkan akun utama "semua workforce pool" organisasi (principalSet://cloudresourcemanager.googleapis.com/organizations/{ORG_ID}/type/WorkforcePool). Karena ID akun utama gabungan ini berlaku di seluruh organisasi di semua workforce pool di organisasi Anda, hanya satu binding semacam itu yang dapat ada per organisasi. Untuk mengonfigurasi sesi yang diperpanjang untuk beberapa project Looker (Google Cloud core), aplikasi seluler Gemini Enterprise, atau kombinasi keduanya, sertakan beberapa blok cakupan restricted_project dan restricted_client_application dalam daftar scopedAccessSettings binding tunggal.
    • Tingkat akses (access_levels, dry_run_access_levels) tidak didukung pada binding workforce pool.
    • sessionSettings tingkat atas langsung di GcpUserAccessBinding tidak didukung untuk binding workforce pool; setelan harus ditentukan dalam scopedAccessSettings.activeSettings.sessionSettings.

Mengonfigurasi penyedia workforce pool

Untuk mengizinkan durasi sesi yang diperpanjang, penyedia workforce pool Anda harus dikonfigurasi untuk mendukung pembaruan atribut 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 pembaruan atribut berbasis token:

  1. Di IdP eksternal Anda, konfigurasikan aplikasi OIDC dengan Alur Kode Otorisasi dan aktifkan Akses Offline sehingga token refresh ditampilkan.
  2. Di Google Cloud, tambahkan offline_access ke cakupan tambahan pada penyedia workforce pool OIDC Anda.

Akses offline harus dikonfigurasi di semua workforce identity pool di organisasi Google Cloud Anda agar kebijakan durasi sesi yang diperpanjang memiliki efek yang diinginkan.

gcloud

Jika penyedia Anda sudah memiliki cakupan tambahan, 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 dan sebelumnya dikonfigurasi pada penyedia. Jika Anda tidak memiliki cakupan tambahan, hapus parameter ini.

REST API

Kirim permintaan PATCH untuk memperbarui penyedia. Sertakan cakupan tambahan yang ada bersama 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:

  1. Siapkan tenant SCIM untuk penyedia workforce pool Anda.
  2. Konfigurasikan penyediaan pengguna dan grup dari penyedia identitas SAML Anda ke endpoint SCIM.

Untuk 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 workforce pool 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 Anda Google Cloud (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 oleh s. Misalnya, 7776000s menentukan sesi 90 hari.
  • sessionLengthEnabled: Tetapkan ke true.
  • sessionReauthMethod: Tetapkan ke LOGIN (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 Anda Google Cloud (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 oleh s. Misalnya, 7776000s menentukan sesi 90 hari.
  • sessionLengthEnabled: Tetapkan ke true.
  • sessionReauthMethod: Tetapkan ke LOGIN (atau biarkan tidak ditetapkan).

Contoh konfigurasi kebijakan untuk aplikasi seluler Gemini Enterprise

Buat resource GcpUserAccessBinding yang menetapkan kebijakan durasi sesi yang diperpanjang ke workforce pool organisasi Anda, yang mencakup kebijakan ke aplikasi seluler Gemini Enterprise menggunakan cakupan restricted_client_application. Anda harus mengidentifikasi aplikasi menggunakan nama tampilan kanonis yang tepat: "Gemini Enterprise mobile Android" dan "Gemini Enterprise mobile IOS".

gcloud

Tentukan kebijakan dalam file YAML bernama esl-app-binding.yaml:

scopedAccessSettings:
- scope:
    clientScope:
      restrictedClientApplication:
        name: "Gemini Enterprise mobile Android"
  activeSettings:
    sessionSettings:
      sessionLength: 7776000s
      sessionLengthEnabled: true
      sessionReauthMethod: LOGIN
- scope:
    clientScope:
      restrictedClientApplication:
        name: "Gemini Enterprise mobile IOS"
  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-app-binding.yaml"

Ganti kode berikut:

  • ORG_ID: ID organisasi Anda Google Cloud (misalnya, 123456789012).
  • name: Harus "Gemini Enterprise mobile Android" atau "Gemini Enterprise mobile IOS". Mengidentifikasi aplikasi berdasarkan ID klien OAuth (clientId) tidak didukung untuk workforce pool.
  • sessionLength: Durasi sesi dalam detik diikuti oleh s (antara 3600s dan 7776000s).
  • sessionLengthEnabled: Tetapkan ke true.
  • sessionReauthMethod: Tetapkan ke LOGIN (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": {
          "restrictedClientApplication": {
            "name": "Gemini Enterprise mobile Android"
          }
        }
      },
      "activeSettings": {
        "sessionSettings": {
          "sessionLength": "7776000s",
          "sessionLengthEnabled": true,
          "sessionReauthMethod": "LOGIN"
        }
      }
    },
    {
      "scope": {
        "clientScope": {
          "restrictedClientApplication": {
            "name": "Gemini Enterprise mobile IOS"
          }
        }
      },
      "activeSettings": {
        "sessionSettings": {
          "sessionLength": "7776000s",
          "sessionLengthEnabled": true,
          "sessionReauthMethod": "LOGIN"
        }
      }
    }
  ]
}

Ganti kode berikut:

  • ORG_ID: ID organisasi Anda Google Cloud (misalnya, 123456789012).
  • name: Harus "Gemini Enterprise mobile Android" atau "Gemini Enterprise mobile IOS". Mengidentifikasi aplikasi berdasarkan ID klien OAuth (clientId) tidak didukung untuk workforce pool.
  • sessionLength: Durasi sesi dalam detik diikuti oleh s. Misalnya, 7776000s menentukan sesi 90 hari.
  • sessionLengthEnabled: Tetapkan ke true.
  • sessionReauthMethod: Tetapkan ke LOGIN (atau biarkan tidak ditetapkan).

Melihat dan mencantumkan binding

Karena binding berlaku di semua workforce pool dalam organisasi, maksimal hanya 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 Anda Google Cloud (misalnya, 123456789012).
  • BINDING_ID: ID binding akses Anda (misalnya, b1234567890).

Memperbarui binding akses

Anda dapat memperbarui binding akses workforce pool yang ada untuk mengubah durasi sesi, menambahkan cakupan project atau aplikasi baru, atau menghapus cakupan yang ada.

gcloud

  1. 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: LOGIN
    
  2. Terapkan kebijakan yang diperbarui:

    • Mengganti setelan akses cakupan: Untuk menimpa cakupan 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"
    
    • Menambahkan ke setelan yang ada: Untuk menambahkan cakupan yang ditentukan dalam updated-esl-binding.yaml ke cakupan yang ada di binding tanpa menimpanya, teruskan flag --append:
    gcloud access-context-manager cloud-bindings update \
        --binding=BINDING_NAME \
        --binding-file="updated-esl-binding.yaml" \
        --append
    

Ganti kode berikut: * BINDING_NAME: Nama resource lengkap 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.

  • Mengganti setelan akses cakupan: Untuk menimpa cakupan yang ada:
PATCH https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID?updateMask=scopedAccessSettings
  • Menambahkan ke setelan yang ada: Untuk menambahkan cakupan 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 workforce pool, durasi sesi yang diperpanjang akan dinonaktifkan untuk semua workforce pool 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 binding:

DELETE https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID

Ganti kode berikut:

  • ORG_ID: ID organisasi Anda. Google Cloud
  • BINDING_ID: ID binding akses yang akan dihapus.