Konfigurowanie połączenia indeksatora z Azure SQL przy użyciu tożsamości zarządzanej

Note

Wyszukiwanie AI platformy Azure jest dostępna za pośrednictwem portalu Azure, interfejsów API REST i Azure SDKs. Stanowi również podstawę Foundry IQ — zarządzanej warstwy wiedzy, która przekształca treści przedsiębiorstwa w bazy wiedzy do wielokrotnego wykorzystania, z uwzględnieniem uprawnień, dla agentów w portalu Microsoft Foundry.

W tym artykule wyjaśniono, jak skonfigurować połączenie indeksatora z Azure SQL Database przy użyciu tożsamości zarządzanej zamiast podawania poświadczeń w parametry połączenia.

Można użyć tożsamości zarządzanej przypisanej przez system lub tożsamości zarządzanej przypisanej przez użytkownika. Tożsamości zarządzane to loginy Microsoft Entra i wymagają przypisania ról Azure, aby uzyskać dostęp do danych w Azure SQL.

Wymagania wstępne

1 — Przypisywanie uprawnień do odczytywania bazy danych

Wykonaj poniższe kroki, aby przypisać uprawnienie do odczytu bazy danych dla usługi wyszukiwania lub zarządzanej tożsamości przypisanej przez użytkownika.

  1. Połącz się z Visual Studio.

    Połączenie z Visual Studio

  2. Uwierzytelnij się przy użyciu konta Microsoft Entra.

    Uwierzytelnij

  3. Wykonaj następujące polecenia:

    Uwzględnij nawiasy wokół nazwy usługi wyszukiwania lub nazwy tożsamości zarządzanej przypisanej przez użytkownika.

    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];
    

    Nowe zapytanie

    Wykonywanie zapytania Wykonaj zapytanie

Jeśli później zmienisz tożsamość usługi wyszukiwania lub tożsamość przypisaną przez użytkownika po przypisaniu uprawnień, musisz usunąć członkostwo roli i usunąć użytkownika w bazie danych SQL, a następnie powtórzyć przypisanie uprawnień. Usunięcie członkostwa w roli i użytkownika można wykonać, uruchamiając następujące polecenia:

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 — Dodaj przypisanie roli

W tej sekcji przyznasz usłudze Wyszukiwanie AI platformy Azure uprawnienie do odczytywania danych z SQL Server. Aby uzyskać szczegółowe instrukcje, zobacz Przypisania ról Azure przy użyciu portalu Azure.

  1. W portalu Azure przejdź do strony Azure SQL Server.

  2. Wybierz pozycję Kontrola dostępu (IAM).

  3. Wybierz Dodaj > przypisanie roli.

    Zrzut ekranu przedstawiający stronę Kontrola dostępu (IAM) z otwartym menu Dodaj przypisanie roli.

  4. Na karcie Rola wybierz odpowiednią rolę Czytelnik .

  5. Na karcie Członkowie wybierz pozycję Tożsamość zarządzana, a następnie wybierz pozycję Wybierz członków.

  6. Wybierz subskrypcję Azure.

  7. Jeśli używasz tożsamości zarządzanej przypisanej przez system, wybierz Zarządzana tożsamość przypisana przez system, wyszukaj swoją usługę wyszukiwania, a następnie ją wybierz.

  8. W przeciwnym razie, jeśli używasz tożsamości zarządzanej przypisanej przez użytkownika, wybierz pozycję Tożsamość zarządzana przypisana przez użytkownika, wyszukaj nazwę tożsamości zarządzanej przypisanej przez użytkownika, a następnie wybierz ją.

  9. Na karcie Przegląd i przypisanie wybierz pozycję Przegląd i przypisanie, aby przypisać rolę.

3 — Tworzenie źródła danych

Utwórz źródło danych i podaj tożsamość zarządzaną przypisaną przez system lub tożsamość zarządzaną przypisaną przez użytkownika.

Tożsamość zarządzana przypisana przez system

Interfejs API REST, portal Azure oraz Azure SDKs obsługują tożsamość zarządzaną przypisaną przez system.

Podczas nawiązywania połączenia z tożsamością zarządzaną przypisaną przez system jedyną zmianą definicji źródła danych jest format właściwości "credentials". Podasz nazwę katalogu początkowego lub bazy danych oraz identyfikator ResourceId, który nie ma klucza konta ani hasła. Identyfikator zasobu musi zawierać identyfikator subskrypcji Azure SQL Database, grupę zasobów usługi SQL Database oraz nazwę bazy danych SQL.

Oto przykład, jak utworzyć źródło danych w celu indeksowania danych z konta magazynowego przy użyciu interfejsu API REST Utwórz źródło danych oraz ciągu połączenia dla zarządzanej tożsamości. Format ciągu połączenia dla tożsamości zarządzanej jest taki sam dla interfejsu API REST, pakietu SDK .NET i portalu Azure.

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" 
    }
} 

Tożsamość zarządzana przypisana przez użytkownika

Interfejs API REST w wersji 2026-04-01 i nowszej obsługuje połączenia oparte na tożsamości zarządzanej przypisanej przez użytkownika. Podczas nawiązywania połączenia z tożsamością zarządzaną przypisaną przez użytkownika istnieją dwie zmiany definicji źródła danych:

  • Najpierw format właściwości "credentials" to nazwa katalogu początkowego lub bazy danych i identyfikator ResourceId, który nie ma klucza konta ani hasła. Identyfikator zasobu musi zawierać identyfikator subskrypcji Azure SQL Database, grupę zasobów usługi SQL Database oraz nazwę bazy danych SQL. Jest to taki sam format jak tożsamość zarządzana przypisana przez system.

  • Po drugie dodaj właściwość "identity", która zawiera kolekcję tożsamości zarządzanych przypisanych przez użytkownika. Podczas tworzenia źródła danych należy podać tylko jedną tożsamość zarządzaną przypisaną przez użytkownika. Ustaw go na wartość "userAssignedIdentities".

Oto przykład tworzenia obiektu źródła danych indeksatora przy użyciu źródeł danych — tworzenie lub aktualizowanie:

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 — Tworzenie indeksu

Indeks określa pola w dokumencie, atrybutach i innych konstrukcjach, które kształtuje środowisko wyszukiwania.

Oto wywołanie REST API Create Index z przeszukiwalnym polem 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 — Tworzenie indeksatora

Indeksator łączy źródło danych z docelowym indeksem wyszukiwania i udostępnia harmonogram automatyzowania odświeżania danych. Po utworzeniu indeksu i źródła danych możesz utworzyć indeksator. Jeśli indeksacja zakończy się sukcesem, składnia połączenia i przypisania ról są prawidłowe.

Oto wywołanie Tworzenie indeksatora interfejsu API REST z definicją indeksatora Azure SQL. Indeksator jest uruchamiany podczas przesyłania żądania.

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"
}

Jeśli wystąpi błąd, gdy indeksator spróbuje nawiązać połączenie ze źródłem danych z informacją, że klient nie może uzyskać dostępu do serwera, zapoznaj się z typowymi błędami indeksatora.

Zobacz też

indeksator Azure SQL