Penyediaan SCIM untuk Workforce Identity Federation

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

Kemampuan

Dukungan SCIM Workforce Identity Federation menyediakan kemampuan berikut:

  • Sinkronisasi identitas: Sinkronkan salinan data pengguna hanya baca dari IdP Anda untuk mendapatkan tampilan menyeluruh tentang properti dan keanggotaan pengguna di Google Cloud.

  • Perataan grup: SCIM memproses grup dari IdP Anda sehingga semua keanggotaan langsung dan tidak langsung (bertingkat) untuk pengguna diratakan dan disinkronkan ke Google Cloud Layanan Keanggotaan Grup (GMS). IAM kemudian menggunakan grup yang diratakan ini untuk pemeriksaan kebijakan, sehingga mengatasi batasan ukuran yang sering ditemukan dalam token IdP.

  • Integrasi Gemini Enterprise: Tenant SCIM mendukung berbagi di Gemini Enterprise. Tenant SCIM mengaktifkan dua fitur terkait berbagi notebook dalam NotebookLM Enterprise:

    • Pelengkapan otomatis untuk alamat email dan grup

    • Penggunaan nama grup, bukan ID objek (UUID)

    Untuk mempelajari lebih lanjut, lihat Berbagi notebook dengan grup.

Pertimbangan

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

  • Anda harus menyiapkan workforce identity pool dan penyedia sebelum mengonfigurasi tenant SCIM.
  • Setiap workforce identity pool hanya mendukung satu tenant SCIM. Untuk mengonfigurasi tenant SCIM baru di workforce identity pool yang sama, Anda harus menghapus tenant yang ada terlebih dahulu. Saat menghapus tenant SCIM, Anda memiliki dua opsi:
    • Penghapusan sementara (Default): Menghapus tenant SCIM akan memulai periode penghapusan sementara selama 30 hari. Selama waktu ini, tenant akan 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 dibatalkan dan memungkinkan Anda membuat tenant SCIM baru di workforce identity pool yang sama segera setelah penghapusan selesai. Atau, Anda dapat membuat workforce identity pool baru dan tenant SCIM baru atau menggunakan workforce identity pool yang belum pernah dikonfigurasi dengan tenant SCIM.
  • Saat menggunakan SCIM, Anda memetakan atribut di penyedia workforce identity pool dan tenant SCIM. Atribut google.subject harus secara unik merujuk ke identitas yang sama. Anda menentukan google.subject di penyedia workforce identity pool 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 pengguna atau grup lain, tetapi mencabut akses dari satu identitas mungkin tidak menghapusnya dari semua identitas.
  • Untuk menggunakan SCIM guna memetakan grup, tetapkan --scim-usage=enabled-for-groups. Saat Anda memetakan grup menggunakan SCIM, pemetaan grup apa pun yang ditentukan di penyedia workforce identity pool akan diabaikan. Saat merujuk ke grup yang dikelola SCIM, atribut yang dipetakan adalah google.group, bukan google.groups. google.groups hanya merujuk ke grup yang dipetakan token.
  • 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 409 Conflict HTTP. Jika atribut yang dipetakan dievaluasi ke null atau kosong, penyediaan akan gagal dengan error 400 Bad Request HTTP.
  • Saat menggunakan SCIM, atribut berbasis token yang dipetakan dengan --attribute-mapping masih dapat digunakan untuk autentikasi dan dalam ID utama.
  • Untuk konfigurasi Microsoft Entra ID, gunakan SCIM untuk mengaktifkan nama grup yang mudah dibaca di Gemini Enterprise.

Memetakan penyedia OIDC dan SAML ke konfigurasi SCIM

Harus ada konsistensi antara pemetaan atribut dalam konfigurasi penyedia workforce identity pool (--attribute-mapping) dan pemetaan klaim di tenant SCIM (--claim-mapping). Atribut IdP yang mendasarinya yang digunakan untuk mengisi google.subject (untuk pengguna) harus sama, baik dibaca dari klaim token maupun atribut SCIM.

Jika pemetaan ini tidak konsisten, pengguna mungkin dapat login tetapi tidak akan dikenali sebagai anggota grup yang disediakan SCIM. Misalnya, jika penyedia menggunakan assertion.email untuk google.subject, tenant SCIM juga harus menggunakan atribut SCIM yang setara (misalnya, user.emails[0].value) untuk google.subject.

Tabel berikut menunjukkan pemetaan antara atribut klaim token dan atribut SCIM:

Atribut Google Pemetaan penyedia workforce identity pool Pemetaan tenant SCIM (SCIM)
google.subject assertion.oid (EntraId) 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()
google.group T/A (Dipetakan menggunakan SCIM) group.externalId

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 Workforce Identity Federation 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 resource yang cocok sebenarnya. Kolom totalResults dalam respons selalu sama dengan jumlah item yang ditampilkan dalam respons tersebut, dengan maksimum 100.

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

  • Respons JSON yang tidak sesuai dengan token tidak valid: API yang berisi token API tidak valid akan menghasilkan 401 HTTP error dari Google Cloud. Responsnya bukan struktur JSON seperti yang diperlukan oleh spesifikasi.

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 ulang 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. Sinkronisasi atribut yang dipetakan yang menghasilkan nilai duplikat untuk google.subject atau google.group akan gagal dengan error 409 Conflict HTTP. Atribut yang dipetakan yang dievaluasi ke null atau kosong akan gagal dengan error 400 Bad Request HTTP.

  • Persyaratan satu email: Agar sinkronisasi SCIM berhasil, setiap pengguna harus memiliki tepat satu alamat email berjenis work. Penyediaan atau pembaruan akan gagal jika IdP Anda mengirimkan beberapa email atau jika satu email yang diberikan tidak diketik sebagai 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 menjelaskan dukungan untuk atribut pengguna:

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

Atribut grup

Tabel berikut menjelaskan dukungan untuk atribut grup:

Atribut Sub-atribut yang didukung
displayName T/A
externalId T/A
members value, type, $ref, display

Atribut ekstensi skema pengguna perusahaan

Tabel berikut menjelaskan dukungan untuk ekstensi skema pengguna perusahaan:

Atribut Sub-atribut yang didukung
employeeNumber T/A
costCenter T/A
organization T/A
division T/A
department T/A
manager value, $ref, displayName

Langkah berikutnya