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 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.
  • 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:

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 dalam scopedAccessSettings menggunakan cakupan klien restricted_project yang 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 ke true.
    • session_length: Durasi wajib antara 1 jam (3600s) dan 90 hari (7776000s).
    • session_reauth_method: Harus tidak disetel atau disetel ke LOGIN.
    • use_oidc_max_age: Harus tidak ditetapkan atau ditetapkan ke false.
    • max_inactivity: Harus dibatalkan (atau default 0s). Waktu tunggu sesi tidak aktif tidak didukung untuk binding restricted_project.
  • Penyedia identitas yang didukung:
    • OIDC: Memerlukan penyedia OIDC yang dikonfigurasi dengan Alur Kode Otorisasi dan cakupan offline_access untuk menerbitkan token refresh, atau dikonfigurasi dengan penyediaan SCIM.
    • SAML 2.0: Memerlukan penyediaan SCIM yang diaktifkan di penyedia workforce pool.
  • 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 cakupan restricted_project dalam daftar scopedAccessSettings binding tunggal.
    • Tingkat akses (access_levels, dry_run_access_levels) tidak didukung pada binding workforce pool.
    • sessionSettings tingkat teratas langsung di GcpUserAccessBinding tidak didukung untuk pengikatan kumpulan tenaga kerja; setelan harus ditentukan dalam scopedAccessSettings.activeSettings.sessionSettings.

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:

  1. Di IdP eksternal Anda, konfigurasi aplikasi OIDC dengan alur kode otorisasi dan aktifkan Akses offline agar token refresh ditampilkan.
  2. Di Google Cloud, tambahkan offline_access ke 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:

  1. Siapkan tenant SCIM untuk penyedia workforce pool Anda.
  2. 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 dengan s. Misalnya, 7776000s menentukan sesi 90 hari.
  • Tetapkan sessionLengthEnabled 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 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 dengan s. Misalnya, 7776000s menentukan sesi 90 hari.
  • Tetapkan sessionLengthEnabled ke true.
  • sessionReauthMethod: Tetapkan ke LOGIN (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

  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 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.yaml ke 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 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.