Koneksi ke Azure AI Search menggunakan kontrol akses berbasis peran Azure (Azure RBAC)

Azure menyediakan sistem otorisasi kontrol akses berbasis peran global untuk semua layanan yang berjalan di platform. Di Azure AI Search, Anda dapat menggunakan peran Azure untuk:

  • Operasi sarana kontrol (tugas administrasi layanan melalui Azure Resource Manager).

  • Operasi sarana data, seperti membuat, memuat, dan mengkueri indeks.

Akses per pengguna melalui hasil pencarian (terkadang disebut sebagai keamanan tingkat baris atau keamanan tingkat dokumen) tidak didukung. Sebagai solusinya, buat filter keamanan yang memangkas hasil berdasarkan identitas pengguna, menghapus dokumen yang tidak boleh diakses pemohon.

Catatan

Di Azure AI Search, "sarana kontrol" mengacu pada operasi yang didukung di REST API Manajemen atau pustaka klien yang setara. "Data plane" mengacu pada operasi terhadap titik akhir layanan pencarian, seperti pengindeks atau kueri, atau operasi lainnya yang ditentukan dalam REST API Pencarian atau pustaka klien yang setara.

Peran berikut dibangun. Jika peran ini tidak mencukup, buat peran kustom.

Peran Pesawat Deskripsi
Pemilik Kontrol & Data Akses penuh ke sarana kontrol sumber daya pencarian, termasuk kemampuan untuk menetapkan peran Azure. Hanya peran Pemilik yang dapat mengaktifkan atau menonaktifkan opsi autentikasi atau mengelola peran untuk pengguna lain. Admin langganan menjadi anggota secara default.

Pada bidang data, peran ini memiliki akses yang sama dengan peran Kontributor Layanan Pencarian. Ini termasuk akses ke semua tindakan bidang data kecuali kemampuan untuk mengkueri atau mengindeks dokumen.
Kontributor Kontrol & Data Tingkat akses sarana kontrol yang sama dengan Pemilik, dikurangi kemampuan untuk menetapkan peran atau mengubah opsi autentikasi.

Pada bidang data, peran ini memiliki akses yang sama dengan peran Kontributor Layanan Pencarian. Ini termasuk akses ke semua tindakan bidang data kecuali kemampuan untuk mengkueri atau mengindeks dokumen.
Pembaca Kontrol & Data Membaca akses di seluruh layanan, termasuk metrik pencarian, metrik konten (penyimpanan yang digunakan, jumlah objek), dan definisi objek sumber daya data plane (indeks, pengindeks, dan sebagainya). Namun, itu tidak dapat membaca kunci API atau membaca konten dalam indeks.
Kontributor Layanan Pencarian Kontrol & Data Akses baca-tulis ke definisi objek (indeks, peta sinonim, pengindeks, sumber data, dan set keterampilan). Lihat Microsoft.Search/searchServices/* untuk daftar izin. Peran ini tidak dapat mengakses konten dalam indeks, sehingga tidak ada kueri atau pengindeksan, tetapi dapat membuat, menghapus, dan mencantumkan indeks, mengembalikan definisi dan statistik indeks, dan menguji penganalisis. Peran ini untuk administrator layanan pencarian yang perlu mengelola layanan pencarian dan objeknya, tetapi tanpa akses konten.
Kontributor Data Indeks Pencarian Data Akses baca-tulis ke konten di semua indeks pada layanan pencarian. Peran ini untuk pengembang atau pemilik indeks yang perlu mengimpor, me-refresh, atau mengkueri koleksi dokumen indeks.
Pembaca Data Indeks Pencarian Data Akses baca-saja ke semua indeks pencarian pada layanan pencarian. Peran ini untuk aplikasi dan pengguna yang menjalankan kueri.

Catatan

Jika Anda menonaktifkan akses berbasis peran Azure, peran bawaan untuk sarana kontrol (Pemilik, Kontributor, Pembaca) terus tersedia. Menonaktifkan Azure RBAC hanya menghapus izin terkait data yang terkait dengan peran tersebut. Dalam skenario disabled-RBAC, Kontributor Layanan Pencarian setara dengan Kontributor sarana kontrol.

Batasan

  • Adopsi kontrol akses berbasis peran dapat meningkatkan latensi beberapa permintaan. Setiap kombinasi unik sumber daya layanan (indeks, pengindeks, dll.) dan perwakilan layanan yang digunakan pada permintaan memicu pemeriksaan otorisasi. Pemeriksaan otorisasi ini dapat menambahkan hingga 200 milidetik latensi ke permintaan.

  • Dalam kasus yang jarang terjadi di mana permintaan berasal dari sejumlah besar perwakilan layanan yang berbeda, semua menargetkan sumber daya layanan yang berbeda (indeks, pengindeks, dll.), dimungkinkan bagi pemeriksaan otorisasi untuk menghasilkan pembatasan. Pembatasan hanya akan terjadi jika ratusan kombinasi unik sumber daya layanan pencarian dan perwakilan layanan digunakan dalam hitungan detik.

Mengonfigurasi akses berbasis peran untuk bidang data

Berlaku pada: Kontributor Data Indeks Pencarian, Pembaca Data Indeks, Kontributor Layanan Pencarian

Pada langkah ini, konfigurasikan layanan pencarian Anda untuk mengenali header otorisasi pada permintaan data yang menyediakan token akses OAuth2.

  1. Masuk ke portal Azure dan buka halaman layanan pencarian.

  2. Di panel navigasi sebelah kiri, pilih Kunci.

    Cuplikan layar halaman kunci dengan opsi autentikasi.

  3. Pilih opsi kontrol akses API. Kami merekomendasikan Keduanya jika Anda menginginkan fleksibilitas atau perlu memigrasikan aplikasi.

    Opsi Deskripsi
    Kunci API (default). Memerlukan kunci API admin atau kueri pada header permintaan untuk otorisasi. Tidak ada peran yang digunakan.
    Kontrol Akses Berbasis Peran Membutuhkan keanggotaan dalam penetapan peran untuk menyelesaikan tugas, yang dijelaskan pada langkah berikutnya. Hal ini juga memerlukan header otorisasi.
    Keduanya Permintaan valid menggunakan kunci API atau kontrol akses berbasis peran.

Perubahan segera efektif, tetapi tunggu beberapa detik sebelum pengujian.

Semua panggilan jaringan untuk operasi layanan pencarian dan konten mematuhi opsi yang Anda pilih: Kunci API, token pembawa, atau salah satu jika Anda memilih Keduanya.

Saat Anda mengaktifkan kontrol akses berbasis peran di portal, mode kegagalan adalah "http401WithBearerChallenge" jika otorisasi gagal.

Menetapkan peran

Penetapan peran bersifat kumulatif dan pervasif di semua alat dan pustaka klien. Anda dapat menetapkan peran menggunakan salah satu pendekatan yang didukung yang dijelaskan dalam dokumentasi kontrol akses berbasis peran Azure.

Anda harus menjadi Pemilik atau memiliki izin Microsoft.Authorization/roleAssignments/write untuk mengelola penetapan peran.

Penetapan peran di portal berskala layanan. Jika Anda ingin memberikan izin ke satu indeks, gunakan PowerShell atau Azure CLI sebagai gantinya.

  1. Masuk ke portal Azure.

  2. Buka layanan pencarian Anda.

  3. Pilih Kontrol akses (IAM) di panel navigasi kiri.

  4. Pilih + Tambahkan>Tambahkan penetapan peran.

    Halaman Kontrol akses (IAM) dengan menu Tambahkan penetapan peran terbuka.

  5. Pilih peran yang berlaku:

    • Pemilik
    • Kontributor
    • Pembaca
    • Kontributor Layanan Pencarian
    • Kontributor Data Indeks Pencarian
    • Pembaca Data Indeks Pencarian
  6. Pada tab Anggota , pilih identitas pengguna atau grup Microsoft Entra.

  7. Di tab Tinjau + tetapkan, pilih Tinjau + tetapkan untuk menetapkan peran.

Menguji penetapan peran

Gunakan klien untuk menguji penetapan peran. Ingatlah bahwa peran adalah peran kumulatif dan diwariskan yang dilingkup ke grup langganan atau sumber daya tidak dapat dihapus atau ditolak di tingkat sumber daya (layanan pencarian).

Pastikan Anda mendaftarkan aplikasi klien dengan ID Microsoft Entra dan memiliki penetapan peran sebelum menguji akses.

  1. Masuk ke portal Azure.

  2. Buka layanan pencarian Anda.

  3. Di halaman Ringkasan, pilih Indeks:

    • Kontributor dapat menampilkan dan membuat objek apa pun, tetapi tidak dapat mengkueri indeks menggunakan Search Explorer.

    • Pembaca Data Indeks Pencarian dapat menggunakan Search Explorer untuk mengkueri indeks. Anda dapat menggunakan versi API apa pun untuk memeriksa akses. Anda seharusnya dapat mengirim kueri dan melihat hasil, tetapi Anda seharusnya tidak dapat melihat definisi indeks.

    • Kontributor Data Indeks Pencarian dapat memilih Indeks Baru untuk membuat indeks baru. Menyimpan indeks baru memverifikasi akses tulis pada layanan.

Uji sebagai pengguna saat ini

Jika Anda sudah menjadi Kontributor atau Pemilik layanan pencarian, Anda dapat menyajikan token pembawa untuk identitas pengguna Anda untuk autentikasi ke Azure AI Search.

  1. Dapatkan token pembawa untuk pengguna saat ini menggunakan Azure CLI:

    az account get-access-token --scope https://search.azure.com/.default
    

    Atau dengan menggunakan PowerShell:

    Get-AzAccessToken -ResourceUrl "https://graph.microsoft.com/"
    
  2. Dalam file teks baru di Visual Studio Code, tempelkan dalam variabel ini:

    @baseUrl = PASTE-YOUR-SEARCH-SERVICE-URL-HERE
    @index-name = PASTE-YOUR-INDEX-NAME-HERE
    @token = PASTE-YOUR-TOKEN-HERE
    
  3. Tempelkan lalu kirim permintaan untuk mengonfirmasi akses. Berikut adalah salah satu yang mengkueri indeks hotel-quickstart

    POST https://{{baseUrl}}/indexes/{{index-name}}/docs/search?api-version=2023-11-01 HTTP/1.1
      Content-type: application/json
      Authorization: Bearer {{token}}
    
        {
             "queryType": "simple",
             "search": "motel",
             "filter": "",
             "select": "HotelName,Description,Category,Tags",
             "count": true
         }
    

Memberikan akses ke satu indeks

Dalam beberapa skenario, Anda mungkin ingin membatasi akses aplikasi ke satu sumber daya, seperti indeks.

Portal saat ini tidak mendukung penetapan peran pada tingkat granularitas ini, tetapi dapat dilakukan dengan PowerShell atau Azure CLI.

Di PowerShell, gunakan New-AzRoleAssignment, memberikan nama pengguna atau grup Azure, dan cakupan penugasan.

  1. Muat modul Azure dan AzureAD dan sambungkan ke akun Azure Anda:

    Import-Module -Name Az
    Import-Module -Name AzureAD
    Connect-AzAccount
    
  2. Tambahkan penetapan peran yang terlingkup ke indeks individual:

    New-AzRoleAssignment -ObjectId <objectId> `
        -RoleDefinitionName "Search Index Data Contributor" `
        -Scope  "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>"
    

Membuat peran kustom

Jika peran bawaan tidak menyediakan kombinasi izin yang tepat, Anda dapat membuat peran kustom untuk mendukung operasi yang Anda butuhkan

Contoh ini mengkloning Pembaca Data Indeks Pencarian lalu menambahkan kemampuan untuk mencantumkan indeks berdasarkan nama. Biasanya, mencantumkan indeks pada layanan pencarian dianggap sebagai hak administratif.

Langkah-langkah ini berasal dari Membuat atau memperbarui peran kustom Azure menggunakan portal Azure. Kloning dari peran yang ada didukung di halaman layanan pencarian.

Langkah-langkah ini membuat peran kustom yang menambah hak kueri pencarian untuk menyertakan daftar indeks menurut nama. Biasanya, mencantumkan indeks dianggap sebagai fungsi admin.

  1. Di portal Azure, navigasikan ke layanan pencarian Anda.

  2. Di panel navigasi kiri, pilih Kontrol Akses (IAM).

  3. Di bilah tindakan, pilih Peran.

  4. Klik kanan Pembaca Data Indeks Pencarian (atau peran lain) dan pilih Kloning untuk membuka wizard Buat peran kustom.

  5. Pada tab Dasar, berikan nama untuk peran kustom, seperti "Search Index Data Explorer", lalu pilih Berikutnya.

  6. Pada tab Izin, pilih Tambahkan izin.

  7. Pada tab Tambahkan izin, cari lalu pilih petak peta Microsoft Search .

  8. Atur izin untuk peran kustom Anda. Di bagian atas halaman, menggunakan pilihan Tindakan default:

    • Di bawah Microsoft.Search/operations, pilih Baca : Cantumkan semua operasi yang tersedia.
    • Di bawah Microsoft.Search/searchServices/indexes, pilih Baca : Baca Indeks.
  9. Pada halaman yang sama, beralihlah ke Tindakan data dan di bawah Microsoft.Search/searchServices/indexes/documents, pilih Baca : Baca Dokumen.

    Definisi JSON terlihat seperti contoh berikut:

    {
     "properties": {
         "roleName": "search index data explorer",
         "description": "",
         "assignableScopes": [
             "/subscriptions/a5b1ca8b-bab3-4c26-aebe-4cf7ec4791a0/resourceGroups/heidist-free-search-svc/providers/Microsoft.Search/searchServices/demo-search-svc"
         ],
         "permissions": [
             {
                 "actions": [
                     "Microsoft.Search/operations/read",
                     "Microsoft.Search/searchServices/indexes/read"
                 ],
                 "notActions": [],
                 "dataActions": [
                     "Microsoft.Search/searchServices/indexes/documents/read"
                 ],
                 "notDataActions": []
             }
         ]
       }
     }
    
  10. Pilih Tinjau + buat untuk membuat peran. Sekarang Anda dapat menetapkan pengguna dan grup ke peran tersebut.

Menonaktifkan autentikasi kunci API

Akses kunci, atau autentikasi lokal, dapat dinonaktifkan pada layanan Anda jika Anda menggunakan peran Kontributor Layanan Pencarian, Kontributor Data Indeks Pencarian, dan Pembaca Data Indeks Pencarian dan autentikasi Microsoft Entra. Menonaktifkan kunci API menyebabkan layanan pencarian menolak semua permintaan terkait data yang meneruskan kunci API di header.

Catatan

Kunci API admin hanya dapat dinonaktifkan, bukan dihapus. Kunci API kueri dapat dihapus.

Izin Pemilik atau Kontributor diperlukan untuk menonaktifkan fitur.

Untuk menonaktifkan autentikasi berbasis kunci, gunakan portal Azure atau REST API Manajemen.

  1. Di portal Azure, navigasikan ke layanan pencarian Anda.

  2. Di panel navigasi kiri, pilih Kunci.

  3. Pilih Kontrol akses berbasis peran.

Perubahan segera efektif, tetapi tunggu beberapa detik sebelum pengujian. Dengan asumsi Anda memiliki izin untuk menetapkan peran sebagai anggota Pemilik, administrator layanan, atau administrator bersama, Anda dapat menggunakan fitur portal untuk menguji akses berbasis peran.

Akses Bersyarat

Akses Bersyar adalah alat di ID Microsoft Entra yang digunakan untuk menegakkan kebijakan organisasi. Dengan menggunakan kebijakan Akses Bersyarat, Anda dapat menerapkan kontrol akses yang tepat saat diperlukan untuk menjaga organisasi Anda tetap aman. Saat mengakses azure AI layanan Pencarian menggunakan kontrol akses berbasis peran, Akses Bersyar dapat memberlakukan kebijakan organisasi.

Untuk mengaktifkan kebijakan Akses Bersyar untuk Pencarian Azure AI, ikuti langkah-langkah di bawah ini:

  1. Masuk ke portal Microsoft Azure.

  2. Cari Microsoft Entra Conditional Access.

  3. Pilih Kebijakan.

  4. Pilih + Kebijakan baru.

  5. Di bagian Aplikasi cloud atau tindakan kebijakan, tambahkan Azure AI Search sebagai aplikasi cloud tergantung pada cara Anda ingin menyiapkan kebijakan Anda.

  6. Perbarui parameter kebijakan yang tersisa. Misalnya, tentukan pengguna dan grup mana yang berlaku untuk kebijakan ini.

  7. Simpan kebijakan.

Penting

Jika layanan pencarian Anda memiliki identitas terkelola yang ditetapkan, layanan pencarian tertentu akan muncul sebagai aplikasi cloud yang dapat disertakan atau dikecualikan sebagai bagian dari kebijakan Akses Bersyarat. Kebijakan Akses Bersyarkat tidak dapat diberlakukan pada layanan pencarian tertentu. Sebagai gantinya, pastikan Anda memilih aplikasi cloud Azure AI Search umum.

Pemecahan masalah kontrol akses berbasis peran

Saat mengembangkan aplikasi yang menggunakan kontrol akses berbasis peran untuk autentikasi, beberapa masalah umum mungkin terjadi:

  • Jika token otorisasi berasal dari identitas terkelola dan izin yang sesuai baru-baru ini ditetapkan, mungkin perlu waktu beberapa jam agar penetapan izin ini berlaku.
  • Konfigurasi default untuk layanan pencarian hanya autentikasi berbasis kunci. Jika Anda tidak mengubah pengaturan kunci default ke Kontrol akses berbasis Peran atau Keduanya, maka semua permintaan yang menggunakan autentikasi berbasis peran secara otomatis ditolak terlepas dari izin yang mendasar.