Mengonfigurasi SCIM di Microsoft Entra ID

Dokumen ini menjelaskan cara mengonfigurasi tenant SCIM di workforce identity pool. Untuk mempelajari SCIM lebih lanjut, lihat Penyediaan SCIM untuk Workforce Identity Federation.

Setiap workforce identity pool hanya mendukung satu tenant SCIM. Untuk mengonfigurasi tenant SCIM baru di pool yang sudah memiliki tenant, Anda harus menghapus tenant yang ada secara permanen terlebih dahulu.

Flag --claim-mapping untuk tenant SCIM hanya dapat berisi ekspresi Common Expression Language (CEL) tertentu. Untuk mempelajari ekspresi yang didukung, lihat Memetakan atribut token dan SCIM.

Untuk mengonfigurasi System for Cross-domain Identity Management (SCIM), lakukan hal berikut:
  1. Mengonfigurasi token dan tenant SCIM di Google Cloud
  2. Mengonfigurasi SCIM di Microsoft Entra ID
  3. Memperbarui penyedia untuk mengaktifkan SCIM
  4. Memverifikasi sinkronisasi SCIM

Mengonfigurasi token dan tenant SCIM di Google Cloud

Untuk mengonfigurasi tenant SCIM di Google Cloud, lakukan hal berikut:

  1. Buat tenant SCIM.

        gcloud iam workforce-pools providers scim-tenants create SCIM_TENANT_ID \
            --workforce-pool="WORKFORCE_POOL_ID" \
            --provider="PROVIDER_ID" \
            --display-name="SCIM_TENANT_DISPLAY_NAME" \
            --description="SCIM_TENANT_DESCRIPTION" \
            --claim-mapping="CLAIM_MAPPING" \
            --location="global"
        

    Ganti kode berikut:

    • SCIM_TENANT_ID: ID untuk tenant SCIM Anda.
    • WORKFORCE_POOL_ID: ID workforce pool yang Anda buat sebelumnya dalam dokumen ini.
    • PROVIDER_ID: ID penyedia kumpulan identitas tenaga kerja yang Anda buat sebelumnya dalam dokumen ini.
    • SCIM_TENANT_DISPLAY_NAME: nama tampilan untuk tenant SCIM Anda.
    • SCIM_TENANT_DESCRIPTION: deskripsi untuk tenant SCIM Anda.
    • CLAIM_MAPPING: daftar pemetaan atribut yang dipisahkan koma. Untuk daftar lengkap atribut pemetaan, lihat Memetakan atribut token dan SCIM. Pemetaan berikut direkomendasikan untuk Gemini Enterprise:
      google.subject=user.emails[0].value.lowerAscii(),google.group=group.externalId

      Atribut google.subject yang Anda petakan di tenant SCIM harus secara unik merujuk ke identitas yang sama yang dipetakan di atribut google.subject di penyedia workforce identity pool dengan menggunakan tanda --attribute-mapping. Setelah tenant SCIM dibuat, Anda tidak dapat memperbarui pemetaan klaim. Untuk menggantinya, Anda dapat menghapus permanen tenant SCIM dan segera membuat tenant baru. Untuk mempelajari lebih lanjut pertimbangan penggunaan SCIM, lihat Dukungan SCIM.

  2. Setelah perintah selesai, lakukan hal berikut:

    1. Di kolom baseUri dalam output, simpan seluruh URI, yang diformat sebagai https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID. Anda harus memberikan URI ini ke IdP Anda.
    2. Selain itu, dari URI, simpan hanya SCIM_TENANT_UID. Anda memerlukan UID ini untuk menetapkan kebijakan izin IAM di tenant SCIM nanti dalam dokumen ini.
  3. Buat token SCIM:

        gcloud iam workforce-pools providers scim-tenants tokens create SCIM_TOKEN_ID \
            --display-name DISPLAY_NAME \
            --scim-tenant SCIM_TENANT_ID \
            --workforce-pool WORKFORCE_POOL_ID \
            --provider PROVIDER_ID \
            --location global
        

    Ganti kode berikut:

    • SCIM_TOKEN_ID: ID untuk token SCIM
    • DISPLAY_NAME: nama tampilan token SCIM
    • WORKFORCE_POOL_ID: ID workforce pool
    • SCIM_TENANT_ID: ID tenant SCIM
    • PROVIDER_ID: ID penyedia workforce identity pool
  4. Setelah perintah gcloud iam workforce-pools providers scim-tenants tokens create selesai, lakukan hal berikut:

    1. Di output, simpan nilai SCIM_TOKEN di kolom securityToken. Anda harus memberikan token keamanan ini ke IdP Anda. Token keamanan hanya ditampilkan dalam output ini, dan jika hilang, Anda harus membuat token SCIM baru.

    2. Untuk memeriksa apakah SCIM_TOKEN ditolak oleh kebijakan organisasi Anda, jalankan perintah berikut:

      curl -v -H "Authorization: Bearer SCIM_TOKEN"  https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID/Users

      Jika perintah gagal dengan error terkait izin, jalankan gcloud organizations add-iam-policy-binding, yang dijelaskan pada langkah selanjutnya. Jika perintah berhasil, Anda dapat melewati langkah tersebut.

  5. Tetapkan kebijakan izin IAM pada token dan tenant SCIM. Jika perintah curl pada langkah sebelumnya gagal dengan error terkait izin, Anda harus menjalankan perintah berikut:

        gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
            --member=serviceAccount:SERVICE_AGENT_EMAIL \
            --role roles/iam.scimSyncer
        

    Ganti kode berikut:

    • ORGANIZATION_ID: ID organisasi.
    • SERVICE_AGENT_EMAIL: alamat email agen layanan. Alamat email menggunakan format berikut: o-ORGANIZATION_ID-SCIM_TENANT_UID@gcp-sa-iamscim.iam.gserviceaccount.com. SCIM_TENANT_UID ditampilkan saat Anda membuat tenant SCIM.

Saat Anda menyediakan grup di IdP, pastikan nama tampilan setiap grup, sebagaimana diberikan di kolom displayName, bersifat unik dalam tenant SCIM. Untuk mempelajari lebih lanjut grup dan SCIM di Microsoft Entra ID, lihat Grup.

Mengonfigurasi SCIM di Microsoft Entra ID

Untuk mengonfigurasi SCIM di Microsoft Entra ID, lakukan hal berikut:

  1. Buka portal Azure dan login sebagai pengguna yang memiliki hak istimewa administrator global.
  2. Pilih Microsoft Entra ID > Enterprise Apps.
  3. Klik New application.
  4. Di Browse Microsoft Entra App gallery, klik Create your own application.
  5. Di panel Create your own application yang muncul, lakukan hal berikut:
    1. Untuk What's the name of your app, masukkan nama aplikasi Anda.
    2. Pilih Integrate any other application you don't find in gallery (Non-gallery).
    3. Untuk membuat aplikasi, klik Buat.
  6. Di aplikasi Anda, lakukan hal berikut:
    1. Di bagian Kelola, klik Penyediaan.
    2. Di panel kanan yang muncul, klik Konfigurasi Baru.
    3. Di bagian Admin Credentials, di Tenant URL, masukkan URL SCIM yang Anda peroleh saat membuat tenant SCIM, yang ditambahkan dengan ?aadOptscim062020. Anda harus menambahkan ?aadOptscim062020 di akhir URI dasar.

      Parameter kueri ini diperlukan oleh Microsoft Entra ID untuk memastikan bahwa permintaan SCIM PATCH mematuhi standar SCIM RFC. Untuk mengetahui detail selengkapnya, lihat dokumentasi Microsoft.

      URL Tenant akhir di Microsoft Entra ID harus dalam format berikut:

      https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID?aadOptscim062020

      Ganti SCIM_TENANT_UID dengan UID tenant SCIM.

    4. Di Secret token, masukkan token rahasia yang Anda peroleh saat membuat token SCIM.
    5. Untuk menguji konfigurasi SCIM dengan Workforce Identity Federation, klik Uji koneksi.
    6. Untuk menyimpan konfigurasi, klik Buat.
  7. Di bagian Kelola, lakukan tindakan berikut:
    1. Klik Pemetaan atribut.
    2. Klik Provision Microsoft Entra ID Users.
    3. Di halaman Pemetaan Atribut, lakukan hal berikut:
      1. Di tabel Pemetaan atribut, temukan baris untuk externalId, lalu klik Edit di baris tersebut. Di halaman Edit atribut, lakukan tindakan berikut:
        1. Di menu drop-down Atribut sumber, pilih objectId.
        2. Klik Ok.
      2. Untuk menyimpan pemetaan atribut, klik Simpan.

Memperbarui penyedia untuk mengaktifkan SCIM

Untuk mengaktifkan SCIM bagi penyedia, lakukan hal berikut:

OIDC

      gcloud iam workforce-pools providers update-oidc PROVIDER_ID \
          --workforce-pool=WORKFORCE_POOL_ID \
          --location=LOCATION \
          --scim-usage=enabled-for-groups
    

Ganti kode berikut:

  • PROVIDER_ID: ID penyedia workforce identity pool
  • WORKFORCE_POOL_ID: ID workforce pool
  • LOCATION: lokasi workforce pool

SAML

      gcloud iam workforce-pools providers update-saml PROVIDER_ID \
          --workforce-pool=WORKFORCE_POOL_ID \
          --location=LOCATION \
          --scim-usage=enabled-for-groups
    

Ganti kode berikut:

  • PROVIDER_ID: ID penyedia workforce identity pool
  • WORKFORCE_POOL_ID: ID workforce pool
  • LOCATION: lokasi workforce pool

Untuk memverifikasi sinkronisasi SCIM, lihat Memverifikasi sinkronisasi SCIM.

Memetakan token dan atribut SCIM

Anda harus memetakan atribut secara konsisten, baik di penyedia workforce identity pool maupun di tenant SCIM yang dikonfigurasi untuk penyedia. Untuk penyedia workforce identity pool, Anda menggunakan flag --attribute-mapping, dan untuk tenant SCIM, Anda menggunakan flag --claim-mapping. Atribut IdP yang dipetakan ke google.subject untuk pengguna harus merujuk secara unik ke identitas yang sama, baik yang ditentukan dalam pemetaan token atau SCIM. Untuk mempelajari lebih lanjut cara memetakan atribut saat Anda menggunakan SCIM, lihat bagian Dukungan SCIM. Tabel berikut menunjukkan cara memetakan atribut dalam klaim token dan atribut SCIM:

Atribut Google Pemetaan penyedia workforce identity pool Pemetaan tenant SCIM
google.subject assertion.oid user.externalId
google.subject assertion.attributes['http://schemas.microsoft.com/identity/claims/objectidentifier'][0] user.externalId
google.subject assertion.email user.emails[0].value
google.subject assertion.attributes['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress'][0] user.emails[0].value
google.subject assertion.email.lowerAscii() user.emails[0].value.lowerAscii()
google.subject assertion.attributes['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress'][0].lowerAscii() user.emails[0].value.lowerAscii()
google.subject assertion.preferred_username user.userName
google.subject assertion.attributes['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name'][0] user.userName
google.subject assertion.preferred_username.lowerAscii() user.userName.lowerAscii()
google.subject assertion.attributes['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name'][0].lowerAscii() user.userName.lowerAscii()
google.group pastikan Anda memberi tahu penyedia Anda tentang --scim-usage=enabled-for-groups N/A group.externalId

Memverifikasi sinkronisasi SCIM

Setelah mengonfigurasi SCIM, Anda dapat menggunakan curl untuk memverifikasi bahwa pengguna dan grup disinkronkan dengan benar ke Google Cloud. Perintah ini memerlukan token SCIM yang valid dan ID tenant SCIM Anda.

Memverifikasi sinkronisasi pengguna

Untuk memverifikasi bahwa pengguna disinkronkan dengan benar, telusuri userName pengguna menggunakan filter berikut:

curl -H "Authorization: Bearer SCIM_TOKEN" \
  "https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID/Users?filter=userName%20eq%20%22USER_NAME%22"

Contoh respons:

{
  "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
  "totalResults": 1,
  "Resources": [
    {
      "id": "USER_ID",
      "userName": "USER_NAME",
      ...
    }
  ]
}

Memverifikasi sinkronisasi grup

Untuk memverifikasi bahwa grup disinkronkan dengan benar, telusuri displayName grup menggunakan filter berikut:

curl -H "Authorization: Bearer SCIM_TOKEN" \
  "https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID/Groups?filter=displayName%20eq%20%22GROUP_NAME%22"

Contoh respons:

{
  "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
  "totalResults": 1,
  "Resources": [
    {
      "id": "GROUP_ID",
      "displayName": "GROUP_NAME",
      ...
    }
  ]
}

Memverifikasi keanggotaan grup

Untuk memverifikasi apakah pengguna tertentu adalah anggota grup, gunakan filter yang menentukan ID grup dan ID pengguna.

curl -H "Authorization: Bearer SCIM_TOKEN" \
  "https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID/Groups?filter=id%20eq%20%22GROUP_ID%22%20and%20members%20eq%20%22USER_ID%22"

Contoh respons jika pengguna adalah pelanggan:

{
  "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
  "totalResults": 1,
  "Resources": [
    {
      "id": "GROUP_ID",
      "displayName": "GROUP_NAME",
      ...
    }
  ]
}

Contoh respons jika pengguna bukan pelanggan:

{
  "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
  "totalResults": 0,
  "Resources": []
}

Catatan: Untuk mendapatkan GROUP_ID dan USER_ID, temukan terlebih dahulu grup dan pengguna menggunakan filter displayName dan userName. ID ditampilkan di kolom id respons. Ganti SCIM_TOKEN, SCIM_TENANT_UID, USER_NAME, GROUP_NAME, GROUP_ID, dan USER_ID dengan nilai sebenarnya.

Menghapus tenant SCIM secara paksa

Untuk menghapus paksa tenant SCIM, lakukan langkah-langkah berikut:

  1. Jika --scim-usage=enabled-for-groups ditetapkan untuk penyedia Anda, nonaktifkan dari konfigurasi penyedia:
              gcloud iam workforce-pools providers update-oidc PROVIDER_ID \
                  --workforce-pool=WORKFORCE_POOL_ID \
                  --location=LOCATION \
                  --scim-usage=SCIM_USAGE_UNSPECIFIED
            

    Ganti kode berikut:

    • PROVIDER_ID: ID penyedia workforce identity pool
    • WORKFORCE_POOL_ID: ID workforce pool
    • LOCATION: lokasi workforce pool

  2. Hapus tenant SCIM:
      gcloud iam workforce-pools providers scim-tenants delete SCIM_TENANT_ID \
          --workforce-pool=WORKFORCE_POOL_ID \
          --provider=PROVIDER_ID \
          --hard-delete \
          --location=global
    

    Ganti kode berikut:

    • SCIM_TENANT_ID: ID tenant SCIM yang akan dihapus
    • WORKFORCE_POOL_ID: ID workforce pool
    • PROVIDER_ID: ID penyedia workforce identity pool
    Untuk mempelajari SCIM lebih lanjut, termasuk cara menghapus tenant SCIM, lihat Dukungan SCIM.

Langkah berikutnya