Menyiapkan koneksi pengindeks ke Azure Storage menggunakan identitas terkelola

Artikel ini menjelaskan cara menyiapkan koneksi pengindeks ke akun Azure Storage menggunakan identitas terkelola alih-alih memberikan kredensial di string koneksi.

Anda dapat menggunakan identitas terkelola yang ditetapkan sistem atau identitas terkelola yang ditetapkan pengguna (pratinjau). Identitas terkelola adalah login Microsoft Entra dan memerlukan penetapan peran Azure untuk mengakses data di Azure Storage.

Catatan

Jika penyimpanan dilindungi jaringan dan di wilayah yang sama dengan layanan pencarian Anda, Anda harus menggunakan identitas terkelola yang ditetapkan sistem dan salah satu opsi jaringan berikut: terhubung sebagai layanan tepercaya, atau menyambungkan menggunakan aturan instans sumber daya.

Prasyarat

  • Buat identitas terkelola untuk layanan pencarian Anda.

  • Tetapkan peran di Azure Storage:

    • Pilih Pembaca Data Blob Penyimpanan untuk akses baca data di Blob Storage dan ADLS Gen2.

    • Pilih Pembaca dan Data untuk akses baca data di Penyimpanan Tabel dan Penyimpanan File.

  • Anda harus terbiasa dengan konsep dan konfigurasi pengindeks.

Tip

Untuk contoh kode di C#, lihat Mengindeks Data Lake Gen2 menggunakan ID Microsoft Entra di GitHub.

Membuat sumber data

Buat sumber data dan berikan identitas terkelola yang ditetapkan sistem atau identitas terkelola yang ditetapkan pengguna (pratinjau).

Identitas terkelola yang ditetapkan sistem

REST API,portal Microsoft Azure, dan .NET SDK mendukung string koneksi identitas terkelola.

Saat Anda terhubung dengan identitas terkelola yang ditetapkan sistem, satu-satunya perubahan pada definisi sumber data adalah format properti "kredensial". Anda akan memberikan ResourceId yang tidak memiliki kunci akun atau kata sandi. Id Sumber Daya harus menyertakan ID langganan akun penyimpanan, grup sumber daya akun penyimpanan, dan nama akun penyimpanan.

Berikut adalah contoh cara membuat sumber data untuk mengindeks data dari akun penyimpanan menggunakan Rest API Buat Sumber Data dan identitas terkelola string koneksi. Format string koneksi identitas terkelola sama untuk REST API, .NET SDK, dan portal Microsoft Azure.

POST https://[service name].search.windows.net/datasources?api-version=2020-06-30
Content-Type: application/json
api-key: [admin key]

{
    "name" : "blob-datasource",
    "type" : "azureblob",
    "credentials" : { 
        "connectionString" : "ResourceId=/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.Storage/storageAccounts/[storage account name]/;" 
    },
    "container" : { 
        "name" : "my-container", "query" : "<optional-virtual-directory-name>" 
    }
}   

Identitas terkelola yang ditetapkan pengguna (pratinjau)

REST API pratinjau 2021-04-30 mendukung koneksi berdasarkan identitas terkelola yang ditetapkan pengguna. Saat Anda menyambungkan dengan identitas terkelola yang ditetapkan pengguna, ada dua perubahan pada definisi sumber data:

  • Pertama, format properti "info masuk" adalah ResourceId yang tidak memiliki kunci akun atau kata sandi. Id Sumber Daya harus menyertakan ID langganan akun penyimpanan, grup sumber daya akun penyimpanan, dan nama akun penyimpanan. Format ini sama dengan identitas terkelola yang ditetapkan sistem.

  • Kedua, Anda akan menambahkan properti "identitas" yang berisi kumpulan identitas terkelola yang ditetapkan pengguna. Hanya satu identitas terkelola yang ditetapkan pengguna yang harus disediakan saat membuat sumber data. Atur ke ketik "userAssignedIdentities".

Berikut adalah contoh cara membuat objek sumber data pengindeks menggunakan pratinjau Buat atau Perbarui REST API Sumber Data:

POST https://[service name].search.windows.net/datasources?api-version=2021-04-30-preview
Content-Type: application/json
api-key: [admin key]

{
    "name" : "blob-datasource",
    "type" : "azureblob",
    "credentials" : { 
        "connectionString" : "ResourceId=/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.Storage/storageAccounts/[storage account name]/;" 
    },
    "container" : { 
        "name" : "my-container", "query" : "<optional-virtual-directory-name>" 
    },
    "identity" : { 
        "@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
        "userAssignedIdentity" : "/subscriptions/[subscription ID]/resourcegroups/[resource group name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[managed identity name]" 
    }
}   

Membuat indeks

Indeks menentukan bidang dalam dokumen, atribut, dan konstruksi lain yang membentuk pengalaman pencarian.

Berikut adalah panggilan Buat INDEKS REST API dengan bidang yang dapat dicari content untuk menyimpan teks yang diekstrak dari blob:

POST https://[service name].search.windows.net/indexes?api-version=2020-06-30
Content-Type: application/json
api-key: [admin key]

{
        "name" : "my-target-index",
        "fields": [
        { "name": "id", "type": "Edm.String", "key": true, "searchable": false },
        { "name": "content", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false }
        ]
}

Membuat pemberi indeks

Pengindeks menyambungkan sumber data dengan indeks pencarian target dan menyediakan jadwal untuk mengotomatiskan refresh data. Setelah indeks dan sumber data dibuat, Anda siap untuk membuat dan menjalankan pengindeks. Jika pengindeks berhasil, sintaks koneksi dan penetapan peran valid.

Berikut adalah panggilan Buat REST API Pengindeks dengan definisi pengindeks blob. Pengindeks akan berjalan saat Anda mengirimkan permintaan.

POST https://[service name].search.windows.net/indexers?api-version=2020-06-30
Content-Type: application/json
api-key: [admin key]

{
    "name" : "blob-indexer",
    "dataSourceName" : "blob-datasource",
    "targetIndexName" : "my-target-index"
}

Mengakses data aman jaringan di akun penyimpanan

Akun penyimpanan Azure dapat diamankan lebih lanjut menggunakan firewall dan jaringan virtual. Jika Anda ingin mengindeks konten dari akun penyimpanan yang diamankan menggunakan firewall atau jaringan virtual, lihat Membuat koneksi pengindeks ke Azure Storage sebagai layanan tepercaya.

Baca juga