Menyiapkan koneksi pengindeks ke Azure SQL menggunakan identitas terkelola

Note

Pencarian Azure AI tersedia melalui portal Azure, REST API, dan Azure SDK. Ini juga mendukung Foundry IQ, lapisan pengetahuan terkelola yang mengubah konten perusahaan menjadi pangkalan pengetahuan yang dapat digunakan kembali dan sadar izin untuk agen di portal Microsoft Foundry.

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

Anda dapat menggunakan identitas terkelola yang ditetapkan sistem atau identitas terkelola yang ditetapkan pengguna. Identitas terkelola adalah login Microsoft Entra dan memerlukan penetapan peran Azure untuk mengakses data dalam Azure SQL.

Prasyarat

1 - Menetapkan izin untuk membaca database

Ikuti langkah-langkah di bawah ini untuk menetapkan layanan pencarian atau izin identitas terkelola yang ditetapkan pengguna untuk membaca database.

  1. Sambungkan ke Visual Studio.

    Hubungkan ke Visual Studio

  2. Autentikasi dengan akun Microsoft Entra Anda.

    Mengautentikasi Autentikasi

  3. Jalankan perintah berikut:

    Sertakan tanda kurung di sekitar nama layanan pencarian atau nama identitas terkelola yang ditetapkan pengguna.

    CREATE USER [insert your search service name here or user-assigned managed identity name] FROM EXTERNAL PROVIDER;
    EXEC sp_addrolemember 'db_datareader', [insert your search service name here or user-assigned managed identity name];
    

    Kueri baru

    Eksekusi kueri

Jika nanti Anda mengubah identitas layanan pencarian atau identitas yang ditetapkan pengguna setelah menetapkan izin, Anda harus menghapus keanggotaan peran dan menghapus pengguna di database SQL, lalu mengulangi penetapan izin. Menghapus keanggotaan peran dan pengguna dapat dicapai dengan menjalankan perintah berikut:

sp_droprolemember 'db_datareader', [insert your search service name or user-assigned managed identity name];

DROP USER IF EXISTS [insert your search service name or user-assigned managed identity name];

2 - Menambahkan penetapan peran

Di bagian ini Anda akan, berikan izin layanan Pencarian Azure AI Anda untuk membaca data dari SQL Server Anda. Untuk langkah-langkah terperinci, lihat Menetapkan peran Azure menggunakan portal Azure.

  1. Di portal Azure, navigasikan ke halaman Azure SQL Server Anda.

  2. Pilih Kontrol akses (IAM).

  3. Pilih Tambahkan > penetapan peran.

    Cuplikan layar yang memperlihatkan halaman Kontrol akses (IAM) dengan menu Tambahkan penetapan peran terbuka.

  4. Pada tab Peran , pilih peran Pembaca yang sesuai.

  5. Pada tab Anggota , pilih Identitas terkelola, lalu pilih Pilih anggota.

  6. Pilih langganan Azure Anda.

  7. Jika Anda menggunakan identitas terkelola yang ditetapkan sistem, pilih Identitas terkelola yang ditetapkan sistem, cari layanan pencarian Anda, lalu pilih identitas tersebut.

  8. Jika tidak, jika Anda menggunakan identitas terkelola yang ditetapkan pengguna, pilih Identitas terkelola yang ditetapkan pengguna, cari nama identitas terkelola yang ditetapkan pengguna, lalu pilih identitas tersebut.

  9. Pada tab Tinjau + tetapkan, pilih Tinjau + tetapkan untuk menetapkan peran.

3 - Membuat sumber data

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

Identitas yang terkelola yang diberikan oleh sistem

REST API, portal Azure, dan Azure SDK mendukung identitas terkelola yang ditetapkan sistem.

Saat Anda terhubung dengan identitas terkelola yang ditetapkan sistem, satu-satunya perubahan pada definisi sumber data adalah format properti "kredensial". Anda akan memberikan Katalog Awal atau Nama database dan ResourceId yang tidak memiliki kunci akun atau kata sandi. ResourceId harus menyertakan ID langganan Azure SQL Database, grup sumber daya SQL Database, dan nama database SQL.

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

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

{
    "name" : "sql-datasource",
    "type" : "azuresql",
    "credentials" : { 
        "connectionString" : "Database=[SQL database name];ResourceId=/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.Sql/servers/[SQL Server name];Connection Timeout=30;"
    },
    "container" : { 
        "name" : "my-table" 
    }
} 

Identitas terkelola yang ditetapkan pengguna

REST API versi 2026-04-01 dan yang lebih baru 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 "kredensial" adalah Katalog Awal atau Nama database dan ResourceId yang tidak memiliki kunci akun atau kata sandi. ResourceId harus menyertakan ID langganan Azure SQL Database, grup sumber daya SQL Database, dan nama database SQL. Ini adalah format yang sama dengan identitas terkelola yang ditetapkan sistem.

  • Kedua, tambahkan 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 tipe "userAssignedIdentities".

Berikut adalah contoh cara membuat objek sumber data pengindeks menggunakan Sumber Data - Buat Atau Perbarui:

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

{
    "name" : "sql-datasource",
    "type" : "azuresql",
    "credentials" : { 
        "connectionString" : "Database=[SQL database name];ResourceId=/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.Sql/servers/[SQL Server name];Connection Timeout=30;"
    },
    "container" : { 
        "name" : "my-table" 
    },
    "identity" : { 
        "@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
        "userAssignedIdentity" : "/subscriptions/[subscription ID]/resourcegroups/[resource group name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[managed identity name]"
    }
}   

4 - 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 booktitle :

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

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

5 - Membuat pengindeks

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 pengindeks. Jika pengindeks berhasil, sintaks koneksi dan penetapan peran valid.

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

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

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

Jika Anda mendapatkan kesalahan saat pengindeks mencoba menyambungkan ke sumber data yang mengatakan bahwa klien tidak diizinkan untuk mengakses server, lihat kesalahan pengindeks umum.

Lihat juga

Azure SQL pengindeks