Mengonfigurasi SCIM di Okta

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 satu tenant, Anda harus menghapus tenant yang ada secara permanen terlebih dahulu.

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

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 Okta
  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.displayName

      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 Okta

Untuk mengonfigurasi SCIM di Okta, di aplikasi Okta yang ada, lakukan hal berikut:

  1. Login ke Konsol Admin Okta.
  2. Buka Applications > Applications.
  3. Pilih atau buat aplikasi Anda:

    • Jika Anda ingin memilih aplikasi yang sudah ada, lakukan hal berikut:

      1. Klik nama aplikasi yang Anda buat menggunakan template Google Cloud Workforce Identity Federation.
      2. Di tab Umum, lakukan hal berikut:

        1. Di panel Setelan Aplikasi, klik Edit.
        2. Di kolom Tenant, masukkan ID Tenant yang diperoleh dari gcloud CLI.
        3. Klik Done.
    • Jika Anda ingin membuat aplikasi baru, lakukan langkah berikut:

      1. Klik Browse App Catalog.
      2. Di kolom Search, masukkan Google Cloud Workforce Identity Federation, lalu pilih integrasi Google Cloud Workforce Identity Federation dari hasilnya.
      3. Klik Tambahkan Integrasi.

        1. Di kolom Application, masukkan nama untuk aplikasi Anda.
        2. Di kolom Tenant, masukkan ID Tenant yang diperoleh dari gcloud CLI.
        3. Klik Done.
  4. Di tab Penyediaan, lakukan hal berikut:

    1. Di panel Integrasi, klik Edit.

      1. Di kolom API Token, masukkan token SCIM yang Anda peroleh dari Google Cloud.
      2. Untuk mengonfirmasi validitas token API, klik Uji Kredensial.
      3. Pilih Impor Grup.
      4. Klik Simpan.
    2. Di panel Ke Aplikasi, klik Edit.

      1. Pilih Buat Pengguna, Perbarui Atribut Pengguna, dan Nonaktifkan pengguna.
      2. 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.sub user.externalId
google.subject assertion.subject user.userName
google.subject assertion.subject.lowerAscii() user.userName.lowerAscii()
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 pastikan Anda memberi tahu penyedia Anda tentang --scim-usage=enabled-for-groups N/A group.displayName

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=PROVIDER_ID \
              --workforce-pool=WORKFORCE_POOL_ID \
              --location= global
              --scim-usage=SCIM_USAGE_UNSPECIFIED
            

    Ganti kode berikut:

    • PROVIDER_ID: ID penyedia workforce identity pool
    • WORKFORCE_POOL_ID: ID 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