Memetakan identitas eksternal

Perusahaan biasanya mengelola identitas (pengguna dan grup pengguna) menggunakan penyedia identitas (IDP). Namun, aplikasi kustom yang dibangun sendiri oleh perusahaan dapat memungkinkan pelanggan membuat grup pengguna baru yang ditentukan secara lokal dalam aplikasi tersebut. Grup pengguna khusus aplikasi atau ID pengguna sekunder ini disebut sebagai identitas eksternal.

Mengapa perlu menyiapkan pemetaan identitas?

Untuk memastikan bahwa Google dapat menerapkan kontrol akses dengan benar, petakan identitas IdP Anda ke identitas eksternal dari aplikasi kustom yang akan Anda gunakan dengan Gemini Enterprise.

Untuk menerapkan kontrol akses ke hasil aplikasi, Google menggunakan IDP sebagai sumber kebenaran untuk menentukan data mana yang dapat diakses pengguna Anda. Perusahaan sering kali menghubungkan IDP mereka ke solusi SaaS lain sehingga karyawan dapat menggunakan satu set kredensial perusahaan untuk login dan mengakses semua resource perusahaan.

Jika Anda memiliki identitas eksternal yang ditentukan melalui aplikasi yang akan Anda hubungkan ke aplikasi Anda seperti aplikasi kustom, maka IDP Anda bukan satu-satunya sumber tepercaya untuk kontrol akses.

Misalnya, "JaneDoe" ada dalam Organisasi Contoh, dengan domain "example.com". ID di IDP ditentukan sebagai "JaneDoe@example.com". Pengguna yang sama memiliki ID terpisah dalam aplikasi kustom sebagai "JDoe". IDP mungkin tidak mengetahui ID ini. Oleh karena itu, Gemini Enterprise tidak menerima informasi tentang ID aplikasi kustom melalui IDP.

Di Gemini Enterprise, pemetaan identitas disimpan dalam penyimpanan pemetaan identitas yang Anda buat dan impor pemetaannya. Jika Anda berencana menggunakan konektor kustom, Anda dapat mengikat penyimpanan pemetaan identitas ke penyimpanan data konektor kustom, lalu memperbarui metadata ACL penyimpanan data dengan informasi tentang identitas eksternal Anda.

Sebelum memulai

Sebelum menyiapkan pemetaan identitas, hubungkan penyedia identitas Anda ke project Google Cloud Anda.

Menyiapkan entri pemetaan identitas

Siapkan entri pemetaan identitas untuk diimpor. Pemetaan identitas harus diformat seperti dalam contoh berikut:

{
  "identity_mapping_entries": [
    {
      "external_identity": "u1",
      "user_id": "user1@example.com"
    },
    {
      "external_identity": "u2",
      "user_id": "user2@example.com"
    },
    {
      "external_identity": "gABC",
      "group_id": "groupABC@example.com"
    }
  ]
}

Misalnya, diagram berikut menunjukkan contoh keanggotaan grup pengguna, dengan Ext mewakili grup eksternal. Diagram ini menunjukkan contoh hubungan antara grup eksternal dengan pengguna dan grup IDP.

Hubungan identitas eksternal dengan pengguna dan grup IDP.

Grafik keanggotaan grup pengguna ini akan memiliki pemetaan berikut:

{
  "identity_mapping_entries": [
    {
      "external_identity": "Ext1",
      "user_id": "IDPUser1@example.com"
    },
    {
      "external_identity": "Ext2",
      "user_id": "IDPUser1@example.com"
    },
    {
      "external_identity": "Ext2",
      "user_id": "IDPUser2@example.com"
    },
    {
      "external_identity": "Ext3",
      "user_id": "IDPUser2@example.com"
    },
    {
      "external_identity": "Ext3",
      "group_id": "IDPGroup1@example.com"
    },
    {
      "external_identity": "Ext3",
      "group_id": "IDPGroup2@example.com"
    }
  ]
}

Keanggotaan identitas bertingkat, dengan identitas eksternal memiliki identitas turunan, harus diratakan.

Google mengasumsikan bahwa konektor mengirimkan ID utama untuk identitas eksternal. Misalnya, impor ID grup, bukan nama grup, karena nama dapat diubah selama masa aktif grup dalam aplikasi kustom.

Menyiapkan pemetaan identitas

Gunakan prosedur berikut untuk menyiapkan pemetaan identitas di Gemini Enterprise antara IDP Anda dan identitas eksternal Anda. Pada langkah-langkah berikut, Anda akan membuat penyimpanan pemetaan identitas, mengimpor pemetaan identitas yang telah Anda siapkan. Jika berencana menggunakan konektor kustom, Anda juga akan membuat penyimpanan data baru yang terikat ke penyimpanan pemetaan identitas.

Membuat toko pemetaan identitas

Langkah pertama adalah menyiapkan penyimpanan pemetaan identitas. Ini adalah resource induk tempat semua pemetaan identitas disimpan.

Saat Anda membuat penyimpanan pemetaan identitas, penyimpanan tersebut akan otomatis mengambil konfigurasi IDP dari IDP yang Anda hubungkan ke project Gemini Enterprise Anda.

  1. Untuk membuat penyimpanan pemetaan identitas, jalankan perintah berikut menggunakan metode identityMappingStores.create:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/json" \
    -H "X-Goog-User-Project: PROJECT_ID" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/identityMappingStores?identityMappingStoreId=IDENTITY_MAPPING_STORE_ID" \
    -d '{
      "name": "projects/PROJECT_ID/locations/global/identityMappingStores/IDENTITY_MAPPING_STORE_ID"
    }'
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Anda.
    • IDENTITY_MAPPING_STORE_ID: ID unik untuk penyimpanan pemetaan identitas. Contoh, test-id-mapping-store.

Mengimpor pemetaan identitas

Setelah membuat penyimpanan pemetaan identitas, impor entri pemetaan identitas yang Anda siapkan.

  1. Untuk mengimpor pemetaan identitas, jalankan perintah berikut menggunakan metode importIdentityMappings:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" -H "x-goog-user-project: PROJECT_ID" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/identityMappingStores/IDENTITY_MAPPING_STORE_ID:importIdentityMappings" \
    -d '{"inline_source" : IDENTITY_MAPPINGS_JSON}'
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Anda.
    • IDENTITY_MAPPING_STORE_ID: ID unik dari penyimpanan pemetaan identitas.
    • IDENTITY_MAPPINGS_JSON: pemetaan identitas yang disiapkan dalam format JSON.
  2. Selanjutnya, jika Anda berencana membuat konektor kustom dan menggunakan identitas eksternal, buka Mengikat penyimpanan data kustom ke penyimpanan pemetaan identitas. Jika tidak, lewati ke Memperbarui metadata ACL.

Mengikat penyimpanan data kustom ke penyimpanan pemetaan identitas

Prosedur ini hanya diperlukan jika Anda membuat konektor kustom. Jika Anda tidak membuat konektor kustom, lewati langkah ini.

Untuk konektor kustom, penyimpanan pemetaan identitas harus terikat ke penyimpanan data sebelum identitas eksternal dapat dikaitkan dengan dokumennya. Penetapan kolom ini hanya diizinkan selama pembuatan penyimpanan data.

  1. Untuk mengikat penyimpanan data ke penyimpanan pemetaan identitas, tentukan identity_mapping_store selama pembuatan penyimpanan data menggunakan metode Datastores.create.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json"  \
    -H "X-Goog-User-Project: PROJECT_ID" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores?dataStoreId=DATA_STORE_ID \
    -d '{
        ...
        "identity_mapping_store": "IDENTITY_MAPPING_STORE_NAME"
    }'
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Anda.
    • DATA_STORE_ID: ID penyimpanan data yang ingin Anda buat. ID ini hanya boleh berisi huruf kecil, angka, garis bawah, dan tanda hubung.
    • IDENTITY_MAPPING_STORE_NAME: nama resource lengkap dari penyimpanan pemetaan identitas. Contoh, projects/exampleproject/locations/global/identityMappingStores/test-id-mapping-store. Setelah penyimpanan data dibuat, nama ini tidak dapat diperbarui.

Menambahkan metadata ACL

Sertakan metadata ACL dalam objek AclInfo untuk dokumen Anda.

Saat pengguna mengirim permintaan penelusuran dan dokumen yang metadata ACL-nya mencakup identitas eksternal diambil, identitas eksternal tersebut akan dievaluasi. Jika identitas pengguna (groupID atau userID) dipetakan ke identitas eksternal (externalEntityId) yang terkait dengan dokumen, maka pengguna akan mendapatkan akses ke dokumen tersebut.

Misalnya, Anda telah membuat konektor kustom untuk Jira. Masalah Jira tertentu dapat diakses oleh pengguna IdP tertentu, grup IdP tertentu, dan peran administrator. Agar masalah tersebut dapat diakses oleh orang-orang tersebut di hasil penelusuran, Anda dapat membuat penyimpanan pemetaan identitas dan memetakan pengguna dan grup IdP ke identitas eksternal khusus Jira. Ikat penyimpanan pemetaan identitas ke penyimpanan data Jira Anda. Kemudian, buat dokumen di penyimpanan data Jira Anda dengan aclInfo yang dikonfigurasi dengan pengguna IdP, grup IdP, dan identitas eksternal yang seharusnya memiliki akses ke dokumen tersebut.

Untuk memperbarui metadata ACL Anda dengan informasi tentang identitas eksternal Anda, gunakan format berikut untuk menentukan identitas eksternal dan ID pengguna serta grup terkait.

{
  "aclInfo": {
    "readers": [
      {
        "principals": [
          {
            "groupId": "group_1"
          },
          {
            "userId": "user_1"
          },
          {
            "externalEntityId": "external_id1"
          }

        ]
      }
    ]
  }
}

Untuk mengetahui informasi selengkapnya tentang cara memperbarui metadata ACL, lihat Mengonfigurasi sumber data dengan kontrol akses.

Mengelola pemetaan identitas

Anda dapat mencantumkan pemetaan identitas di penyimpanan identitas, atau menghapus penyimpanan identitas dengan menentukannya melalui sumber inline atau menggunakan kondisi filter.

Tugas pengelolaan yang tersedia untuk pemetaan identitas adalah:

Mencantumkan pemetaan identitas

  1. Untuk mencantumkan pemetaan identitas, jalankan perintah berikut menggunakan metode listIdentityMappings:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H  "Content-Type: application/json" \
    -H "x-goog-user-project: PROJECT_ID" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/identityMappingStores/IDENTITY_MAPPING_STORE_ID:listIdentityMappings?page_size=PAGE_SIZE&page_token=PAGE_TOKEN"
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Anda.
    • PAGE_SIZE: jumlah maksimum penyimpanan pemetaan identitas yang akan ditampilkan. Jika tidak ditentukan, nilai defaultnya adalah 100. Nilai maksimum yang diizinkan adalah 1000. Nilai yang lebih tinggi dari 1.000 akan dikonversi menjadi 1.000.
    • PAGE_TOKEN: token halaman, yang diterima dari panggilan ListIdentityMappingStores sebelumnya. Berikan ini untuk mengambil halaman berikutnya.

Menghapus menggunakan sumber inline

Anda dapat menghapus entri tertentu dari penyimpanan pemetaan identitas dengan memberikan file JSON yang berisi identitas yang akan dihapus.

  1. Untuk menghapus pemetaan identitas menggunakan sumber inline, jalankan perintah berikut menggunakan metode purgeIdentityMappings:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -H "x-goog-user-project: PROJECT_ID" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/identityMappingStores/IDENTITY_MAPPING_STORE_ID:purgeIdentityMappings" \
    -d '{"inline_source" : IDENTITY_MAPPINGS_JSON}'
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Anda.
    • IDENTITY_MAPPING_STORE_ID: ID unik dari penyimpanan pemetaan identitas.
    • IDENTITY_MAPPING_STORE_NAME: nama penyimpanan pemetaan identitas.
    • IDENTITY_MAPPINGS_JSON: pemetaan identitas yang akan dihapus.

Menghapus menggunakan kondisi filter

Anda dapat menghapus entri tertentu dari penyimpanan pemetaan identitas dengan memfilter entri menurut waktu pembaruan, identitas eksternal, atau semua entri.

  1. Untuk menghapus pemetaan identitas menggunakan kondisi filter, jalankan perintah berikut menggunakan metode purgeIdentityMappings:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -H "x-goog-user-project: PROJECT_ID" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/identityMappingStores/IDENTITY_MAPPING_STORE_ID:purgeIdentityMappings" \
    -d '{"identity_mapping_store":"IDENTITY_MAPPING_STORE_NAME", "filter": "FILTER_CONDITION"}'
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Anda.
    • IDENTITY_MAPPING_STORE_ID: ID unik dari penyimpanan pemetaan identitas.
    • IDENTITY_MAPPING_STORE_NAME: nama penyimpanan pemetaan identitas.
    • FILTER_CONDITION: salah satu jenis filter berikut:
      • Waktu update. Contoh, update_time > "2012-04-23T18:25:43.511Z" AND update_time < "2012-04-23T18:30:43.511Z">
      • Identitas Eksternal. Contoh, external_id = "id1"
      • Semua pemetaan identitas. Contoh, *

Mengelola penyimpanan pemetaan identitas

Anda dapat mengambil, menghapus, mencantumkan, dan menghapus permanen penyimpanan pemetaan identitas.

Mendapatkan penyimpanan pemetaan identitas

  1. Untuk mendapatkan penyimpanan pemetaan identitas, jalankan perintah berikut menggunakan metode identityMappingStores.get:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -H "X-Goog-User-Project: PROJECT_ID" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/identityMappingStores/IDENTITY_MAPPING_STORE_ID"
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Anda.
    • IDENTITY_MAPPING_STORE_ID: ID unik dari penyimpanan pemetaan identitas.
    • IDENTITY_MAPPING_STORE_NAME: nama penyimpanan pemetaan identitas.

Mencantumkan toko pemetaan identitas

  1. Untuk mencantumkan penyimpanan pemetaan identitas, jalankan perintah berikut menggunakan metode identityMappingStores.list:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H  "Content-Type: application/json" \
    -H "x-goog-user-project: PROJECT_ID" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/identityMappingStores?page_size=PAGE_SIZE&page_token=PAGE_TOKEN"
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Anda.
    • PAGE_SIZE: jumlah maksimum penyimpanan pemetaan identitas yang akan ditampilkan. Jika tidak ditentukan, nilai defaultnya adalah 100. Nilai maksimum yang diizinkan adalah 1000. Nilai yang lebih tinggi dari 1.000 akan dikonversi menjadi 1.000.
    • PAGE_TOKEN: token halaman, yang diterima dari panggilan ListIdentityMappingStores sebelumnya. Berikan ini untuk mengambil halaman berikutnya.

Menghapus penyimpanan pemetaan identitas

Untuk menghapus penyimpanan pemetaan identitas, penyimpanan tersebut tidak boleh terikat ke penyimpanan data, dan tidak boleh ada pemetaan identitas dalam penyimpanan pemetaan identitas.

  1. Untuk menghapus penyimpanan pemetaan identitas, jalankan perintah berikut menggunakan metode identityMappingStores.delete:

    curl -X DELETE \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -H "X-Goog-User-Project: PROJECT_ID" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/identityMappingStores/IDENTITY_MAPPING_STORE_ID"
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Anda.
    • IDENTITY_MAPPING_STORE_ID: ID unik dari penyimpanan pemetaan identitas.
    • IDENTITY_MAPPING_STORE_NAME: nama penyimpanan pemetaan identitas.