Penyediaan SCIM untuk Workforce Identity Federation

Jika penyedia identitas (IdP) Anda mendukung System for Cross-domain Identity Management (SCIM), Anda dapat mengonfigurasinya untuk menyediakan dan mengelola pengguna dan grup di Google Cloud.

Kemampuan

Dukungan SCIM Workforce Identity Federation menyediakan kemampuan berikut:

  • Sinkronisasi identitas: Menyinkronkan pengguna dan grup dari IdP eksternal Anda ke Google Cloud untuk mempertahankan tampilan holistik identitas tenaga kerja.
  • Sumber utama untuk klaim: Jika SCIM diaktifkan untuk penyedia tenaga kerja, Google Cloud menggunakan pengguna dan grup SCIM yang disinkronkan sebagai sumber tepercaya untuk atribut pengguna dan keanggotaan grup untuk evaluasi kebijakan IAM.
  • Pelengkapan otomatis identitas: Mengaktifkan pelengkapan otomatis pengguna dan grup saat memberikan akses dan membagikan resource (seperti Notebook dan Agen) di Gemini Enterprise.

Pertimbangan

Saat Anda menggunakan dukungan SCIM Workforce Identity Federation, pertimbangan berikut berlaku:

  • Anda harus menyiapkan penyedia dan workforce identity pool sebelum mengonfigurasi tenant SCIM.
  • Setiap kumpulan identitas tenaga kerja hanya mendukung satu tenant SCIM, yang ditautkan ke satu penyedia. Anda tidak dapat mengaktifkan penggunaan SCIM (--scim-usage) di penyedia lain dalam pool yang sama. Untuk mengonfigurasi tenant SCIM baru di workforce identity pool yang sama, Anda harus menghapus tenant yang ada terlebih dahulu. Untuk menghapus tenant SCIM, gunakan salah satu metode berikut:
    • Penghapusan sementara (default): Menghapus tenant SCIM akan memulai periode penghapusan sementara selama 30 hari. Selama waktu ini, tenant disembunyikan dan tidak dapat digunakan, dan Anda tidak dapat membuat tenant SCIM baru di workforce identity pool yang sama.
    • Penghapusan permanen: Untuk menghapus tenant SCIM secara permanen dan langsung, gunakan flag --hard-delete dengan perintah penghapusan. Tindakan ini tidak dapat diurungkan dan memungkinkan Anda membuat tenant SCIM baru di kumpulan identitas tenaga kerja yang sama secara langsung tanpa menunggu periode retensi 30 hari. Atau, Anda dapat membuat workforce identity pool baru dan tenant SCIM baru atau menggunakan workforce identity pool yang belum pernah dikonfigurasi dengan tenant SCIM.
  • Mode penggunaan SCIM (--scim-usage):
    • enabled-for-groups (Gemini Enterprise): Menggunakan grup yang disinkronkan SCIM untuk otorisasi IAM dan evaluasi kebijakan. Atribut pengguna terus diperoleh dari token login. Hanya pemetaan google.subject dan google.group yang dievaluasi.
    • enabled-for-users-groups (Looker) (Pratinjau): Menggunakan data pengguna dan grup yang disinkronkan SCIM sebagai sumber klaim untuk alur kerja otorisasi IAM dan login OAuth. Mengevaluasi google.subject, google.group, dan semua klaim pengguna yang dikonfigurasi (seperti google.display_name, google.profile_photo, google.email, google.posix_username, dan attribute.KEY kustom).
  • Tidak dapat muncul bersamaan: Setelan --scim-usage=enabled-for-users-groups (Pratinjau) tidak dapat muncul bersamaan dengan Atribut Tambahan (extra_attributes_oauth2_client) dan Atribut yang Diperluas (extended_attributes_oauth2_client).
  • Saat menggunakan SCIM, Anda memetakan atribut di penyedia workforce identity pool dan tenant SCIM. Atribut google.subject harus merujuk secara unik ke identitas yang sama. Anda menentukan google.subject di penyedia kumpulan identitas tenaga kerja menggunakan flag --attribute-mapping dan di tenant SCIM menggunakan flag --claim-mapping. Memetakan nilai identitas yang tidak unik dapat menyebabkan Google Cloud memperlakukan identitas IdP yang berbeda sebagai identitas yang sama. Akibatnya, akses yang diberikan ke satu identitas pengguna atau grup dapat diperluas ke identitas lainnya, tetapi mencabut akses dari satu identitas mungkin tidak menghapusnya dari semua identitas.
  • Jika Anda mengaktifkan penggunaan SCIM di penyedia tanpa tenant SCIM terlampir, upaya login akan gagal karena Google Cloud tidak dapat menemukan tenant SCIM untuk penyedia tersebut.
  • Penerapan keunikan: Google Cloud memvalidasi dan menerapkan keunikan pada atribut yang dipetakan ke google.subject (pengguna) dan google.group (grup) di tenant SCIM. Jika atribut yang dipetakan yang disediakan oleh IdP Anda menghasilkan nilai duplikat untuk google.subject atau google.group selama sinkronisasi, penyediaan akan gagal dengan error HTTP 409 Conflict. Jika atribut yang dipetakan dievaluasi ke null atau kosong, penyediaan akan gagal dengan error HTTP 400 Bad Request.
  • Batas ukuran atribut: Ukuran maksimum untuk atribut pengguna yang dipetakan dan diserialisasi (tidak termasuk google.group) adalah 16 kB. Jika atribut yang dipetakan melebihi batas ini, upaya login akan gagal.
  • Batas token SCIM: Setiap tenant SCIM mendukung maksimum dua token SCIM (misalnya, untuk mendukung rotasi token tanpa waktu henti). Jika Anda memiliki dua token, hapus token yang ada sebelum membuat token baru.
  • SCIM API (iamscim.googleapis.com) tunduk pada kuota kapasitas yang berbeda dengan kuota API resource IAM standar. Secara default, permintaan tulis dan baca dibatasi hingga 3.000 permintaan per tenant SCIM per organisasi per menit. Untuk mengetahui informasi selengkapnya, lihat Kuota dan batas.

Pemetaan klaim

Saat mengonfigurasi SCIM, Anda menentukan pemetaan klaim (--claim-mapping) di tenant SCIM untuk memetakan atribut pengguna dan grup SCIM ke atribut Google.

Atribut Google Cloud yang didukung untuk pemetaan klaim

Tabel berikut mencantumkan atribut Google Cloud yang dapat Anda petakan di tenant SCIM (--claim-mapping) menggunakan Common Expression Language (CEL):

AtributGoogle Cloud Persyaratan Deskripsi Ekspresi dan batas yang didukung
google.subject Wajib

ID unik untuk pengguna yang melakukan autentikasi.

Atribut IdP pokok yang digunakan untuk mengisi google.subject harus identik di seluruh pemetaan penyedia (--attribute-mapping) dan tenant SCIM (--claim-mapping). Jika pemetaan ini tidak konsisten, pengguna mungkin dapat login, tetapi tidak akan dikenali sebagai anggota grup yang disediakan SCIM.

Dibatasi untuk ekspresi dasar berikut (atau dengan .lowerAscii()):
  • user.externalId
  • user.userName
  • user.emails[0].value

Panjang maksimum: 127 byte.

Catatan: Pemetaan ini tidak dapat diubah setelah tenant SCIM dibuat; untuk memperbaruinya, Anda harus menghapus secara permanen dan membuat ulang tenant SCIM.

google.group Wajib untuk grup SCIM ID unik untuk keanggotaan grup yang disinkronkan menggunakan SCIM. Dibatasi untuk ekspresi dasar berikut (atau dengan .lowerAscii()):
  • group.externalId
  • group.displayName

Catatan: Pemetaan ini tidak dapat diubah setelah tenant SCIM dibuat; untuk memperbaruinya, Anda harus menghapus secara permanen dan membuat ulang tenant SCIM.

google.display_name Opsional Atribut yang menetapkan nama pengguna yang login di konsol Google Cloud . Atribut ini tidak dapat digunakan dalam kebijakan izin IAM. Dipetakan ke atribut string (seperti user.displayName atau user.name.formatted). Panjang maksimum: 100 byte.
google.profile_photo Opsional URL foto thumbnail pengguna yang terlihat sebagai foto profilnya di konsol Google Cloud . Atribut ini tidak dapat digunakan dalam kebijakan izin IAM. Harus dievaluasi ke string URL yang valid (seperti user.photos.filter(p, p.type == 'thumbnail')[0].value atau user.photos[0].value).
google.email Opsional Atribut yang digunakan untuk memetakan alamat email dari IdP ke produk yang terintegrasi menggunakan integrasi klien OAuth Workforce Identity Federation. Atribut ini tidak dapat digunakan dalam kebijakan izin IAM. Dipetakan ke atribut email (seperti user.emails.filter(e, e.type == 'work')[0].value atau user.emails[0].value).
google.posix_username Opsional String nama pengguna unik yang mematuhi POSIX yang digunakan untuk SSH-in-browser dan Login OS dengan Workforce Identity Federation. Atribut ini tidak dapat digunakan dalam kebijakan izin IAM. Panjang maksimum adalah 32 karakter.
attribute.KEY Opsional

Atribut khusus dari IdP yang dapat Anda gunakan untuk menentukan strategi otorisasi dalam kebijakan izin IAM. Ganti KEY dengan nama atribut yang ingin Anda gunakan.

Misalnya, Anda dapat menentukan atribut kustom seperti costcenter = "1234" dan merujuknya menggunakan principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workforcePools/WORKFORCE_POOL_ID/attribute.costcenter/1234. Memberikan akses ke ID utama ini akan memberikan akses ke semua identitas yang dikonfigurasi di IdP dengan pusat biaya tersebut.

Hingga 50 aturan pemetaan atribut khusus. Ukuran maksimum per aturan: 256 karakter.

Perilaku berdasarkan penggunaan SCIM penyedia (--scim-usage)

Evaluasi pemetaan klaim SCIM bergantung pada mode --scim-usage yang dikonfigurasi di penyedia workforce identity pool:

  • enabled-for-groups (Gemini Enterprise): Hanya pemetaan google.subject dan google.group yang dievaluasi. Pemetaan klaim pengguna tambahan di --claim-mapping akan diabaikan.
  • enabled-for-users-groups (Looker) (Pratinjau): Mengevaluasi google.subject, google.group, dan semua klaim pengguna yang dikonfigurasi (seperti google.display_name, google.profile_photo, google.email, google.posix_username, dan attribute.<var>KEY</var> kustom).

Contoh pemetaan untuk konsistensi subjek

Seperti yang dijelaskan dalam Atribut yang didukung untuk pemetaan klaim, atribut IdP pokok yang digunakan untuk mengisi google.subject harus identik di seluruh pemetaan penyedia (--attribute-mapping) dan tenant SCIM (--claim-mapping). Tabel berikut menunjukkan contoh referensi:

Atribut Google Pemetaan penyedia workforce identity pool Pemetaan tenant SCIM (SCIM)
google.subject assertion.oid (Entra ID) user.externalId
google.subject assertion.sub (Okta) user.externalId
google.subject assertion.preferred_username user.userName
google.subject assertion.preferred_username.lowerAscii() user.userName.lowerAscii()
google.subject assertion.email user.emails[0].value
google.subject assertion.email.lowerAscii() user.emails[0].value.lowerAscii()

Endpoint yang didukung dan tidak didukung

Endpoint protokol SCIM standar berikut didukung:

  • /Users: mengelola resource pengguna. Operasi yang didukung: Create, Get, Update, Delete, Patch, dan Put.

  • /Groups: mengelola resource grup. Operasi yang didukung: Create, Get, Update, Delete, dan Patch. Metode PUT tidak didukung untuk grup.

  • /Schemas: mengambil informasi skema.

  • /ServiceProviderConfig: mengambil konfigurasi penyedia layanan.

Endpoint protokol SCIM berikut tidak didukung:

  • /Me

  • /Bulk

  • /Search

  • /ResourceTypes

Batasan

Bagian berikut menjelaskan batasan dan penyimpangan penerapan SCIM Federasi Identitas Tenaga Kerja dari spesifikasi SCIM (RFC 7643 dan 7644).

Batasan fitur protokol

  • Dukungan filter: Saat Anda mencantumkan pengguna atau grup menggunakan endpoint /Users atau /Groups, ekspresi filter hanya mendukung operator eq (sama dengan). Anda dapat menggabungkan beberapa filter eq dengan and. Operator filter SCIM lainnya, seperti co (berisi) atau sw (diawali dengan), tidak didukung.

  • Penomoran halaman: IAM SCIM API tidak mendukung penomoran halaman standar untuk mencantumkan pengguna atau grup.

    • startIndex: parameter ini selalu 1. API menampilkan hingga 100 hasil terlepas dari nilai yang Anda berikan untuk startIndex.

    • itemsPerPage: jumlah maksimum resource yang ditampilkan dalam satu respons adalah 100.

    • totalResults: API tidak menampilkan jumlah total sebenarnya dari resource yang cocok. Kolom totalResults dalam respons selalu sama dengan jumlah item yang ditampilkan dalam respons tersebut, dengan maksimum 100.

  • Get Group dan mencantumkan Grup tanpa filter: API GetGroup dan ListGroups menampilkan daftar anggota kosong. Untuk mengambil anggota grup tertentu, gunakan API ListGroups dengan filter anggota.

  • Respons JSON yang tidak mematuhi standar dengan token tidak valid: Permintaan yang berisi token API tidak valid akan menampilkan kode status HTTP 401 dari Google Cloud. Respons bukan JSON yang valid seperti yang diperlukan oleh spesifikasi SCIM.

Batasan perilaku SCIM

  • ID yang tidak dapat diubah: Nilai atribut SCIM yang dipetakan ke google.subject atau google.group diperlakukan sebagai ID yang tidak dapat diubah dalam Google Cloud. Jika perlu mengubah nilai ini, Anda harus menghapus pengguna atau grup secara permanen dari IdP, lalu membuatnya kembali dengan nilai baru.

  • ID unik dan tidak kosong: Google Cloud menerapkan keunikan pada nilai yang dipetakan ke google.subject dan google.group di tenant SCIM. Penyelarasan atribut yang dipetakan yang menghasilkan nilai duplikat untuk google.subject atau google.group gagal dengan error HTTP 409 Conflict. Atribut yang dipetakan yang dievaluasi ke null atau kosong akan gagal dengan error HTTP 400 Bad Request.

  • Persyaratan email tunggal: Agar sinkronisasi SCIM berhasil, setiap pengguna harus memiliki tepat satu alamat email berjenis work. Penyediaan atau pembaruan akan gagal jika IdP Anda mengirim beberapa email atau jika satu email yang diberikan bukan berjenis work.

  • Transformasi yang tidak peka huruf besar/kecil: Transformasi Common Expression Language (CEL) terbatas didukung untuk pemetaan klaim SCIM. Hanya .lowerAscii() yang didukung untuk perbandingan yang tidak peka huruf besar/kecil untuk user.userName dan user.emails[0].value.

Batasan atribut

Bagian berikut menjelaskan dukungan atribut untuk pengguna, grup, dan ekstensi skema pengguna perusahaan.

Atribut pengguna

Tabel berikut mencantumkan atribut pengguna dan ketersediaannya dalam klaim Workforce Identity Federation:

Atribut Sub-atribut Didukung di SCIM Provisioning Batasan Didukung di --claim-mapping
userName T/A Ya T/A Ya
name formatted, familyName, givenName, middleName, honorificPrefix, honorificSuffix Ya T/A Ya
displayName T/A Ya T/A Ya
nickName T/A Ya T/A Ya
profileUrl T/A Ya T/A Ya
title T/A Ya T/A Ya
userType T/A Ya T/A Ya
preferredLanguage T/A Ya T/A Ya
locale T/A Ya T/A Ya
timezone T/A Ya T/A Ya
active T/A Ya T/A Ya
password T/A Tidak T/A Tidak
emails display, type, value, primary Ya Hanya jenis email work yang didukung. Ya
phoneNumbers display, type, value, primary Ya T/A Ya
ims display, type, value Ya T/A Ya
photos display, type, value Ya T/A Ya
addresses formatted, streetAddress, locality, region, postalCode, country Ya T/A Ya
groups T/A Tidak T/A Tidak
entitlements display, type, value Ya T/A Ya
roles type, value Ya display tidak didukung. Ya
x509Certificates type, value Ya display tidak didukung. Tidak

Atribut grup

Tabel berikut mencantumkan atribut grup dan ketersediaannya dalam klaim Workforce Identity Federation:

Atribut Sub-atribut yang didukung Didukung di --claim-mapping
displayName T/A Ya
externalId T/A Ya
members value, type, $ref, display Tidak

Atribut ekstensi skema pengguna perusahaan

Tabel berikut menjelaskan dukungan untuk ekstensi skema pengguna perusahaan:

Atribut Sub-atribut yang didukung Didukung di --claim-mapping
employeeNumber T/A Ya
costCenter T/A Ya
organization T/A Ya
division T/A Ya
department T/A Ya
manager value, $ref, displayName Ya ($ref hanya didukung dalam penyediaan SCIM, bukan di --claim-mapping)

Langkah berikutnya