Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Note
Поиск с использованием ИИ Azure доступна через портал Azure, REST API и Azure SDKs. Он также лежит в основе Foundry IQ — управляемого слоя знаний, который преобразует корпоративный контент в многократно используемые базы знаний с учетом разрешений доступа для агентов на портале Microsoft Foundry.
В этой статье объясняется, как настроить подключение индексатора для База данных SQL Azure с помощью управляемого удостоверения вместо предоставления учетных данных в строка подключения.
Вы можете использовать управляемое удостоверение, назначаемое системой, или управляемое удостоверение, назначаемое пользователем. Управляемые удостоверения представляют собой учётные записи Microsoft Entra и требуют назначения ролей Azure для доступа к данным в Azure SQL.
Необходимые условия
Создайте учетную запись с управляемой идентификацией для вашего поискового сервиса.
Назначение роли администратора Azure в SQL. Удостоверение, используемое для подключения индексатора, должно иметь права на чтение. Для предоставления разрешений на чтение базы данных необходимо быть администратором Microsoft Entra с сервером в базе данных SQL или Управляемый экземпляр SQL.
Вы должны ознакомиться с понятиями индексатора и конфигурацией.
1. Назначение разрешений для чтения базы данных
Чтобы назначить службе поиска или назначаемого пользователем управляемому удостоверению разрешение на чтение базы данных, выполните приведенные ниже действия.
Подключитесь к Visual Studio.
Проверка подлинности с помощью учетной записи Microsoft Entra.
Выполните следующие команды:
Добавьте скобки вокруг имени вашей службы поиска или имени управляемого удостоверения, назначенного пользователем.
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];
Если позже вы измените удостоверение службы поиска или назначаемое пользователем удостоверение после назначения разрешений, необходимо удалить членство в роли и удалить пользователя в базе данных SQL, а затем повторить назначение разрешений. Удаление членства в роли и пользователя можно выполнить, выполнив следующие команды:
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. Добавьте назначение роли
В этом разделе описано, как предоставить службе Поиск с использованием ИИ Azure разрешение на чтение данных из SQL Server. Подробные инструкции см. в разделе Назначение ролей Azure с помощью портала Azure.
На портале Azure перейдите на страницу Azure SQL Server.
Выберите Управление доступом (IAM).
Выберите «Добавить > Добавить назначение роли».
На вкладке "Роль" выберите соответствующую роль читателя .
На вкладке "Участники" выберите "Управляемое удостоверение", а затем выберите "Выбрать участников".
Выберите подписку Azure.
Если вы используете управляемое удостоверение, назначаемое системой, выберите управляемое удостоверение, назначаемое системой, найдите службу поиска и выберите ее.
В противном случае, если вы используете управляемое удостоверение, назначаемое пользователем, выберите управляемое удостоверение, назначаемое пользователем, найдите имя управляемого удостоверения, назначаемого пользователем, и выберите его.
На вкладке «Рецензирование и назначение» выберите «Рецензирование и назначение», чтобы назначить роль.
3. Создание источника данных
Создайте источник данных и укажите управляемое удостоверение, назначаемое системой, или управляемое удостоверение, назначаемое пользователем.
Назначаемое системой управляемое удостоверение
API REST, Azure портал и Azure SDKs поддерживают управляемое удостоверение, назначаемое системой.
При подключении к управляемому удостоверению, назначенному системой, единственное изменение определения источника данных — это формат свойства учетных данных (credentials). Вы укажите имя начального каталога или базы данных и идентификатор ресурса, не имеющий ключа учетной записи или пароля. ResourceId должен содержать идентификатор подписки База данных SQL Azure, группу ресурсов базы данных SQL и имя базы данных SQL.
Вот пример того, как создать источник данных для индексирования данных из учетной записи хранения с помощью Create Data Source REST API и строки подключения управляемого удостоверения. Формат строки подключения для управляемого удостоверения одинаков для REST API, SDK .NET и портала 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"
}
}
Управляемое удостоверение, назначаемое пользователем
REST API версии 2026-04-01 и более поздних поддерживают подключения на основе пользовательского управляемого удостоверения. При подключении к управляемому удостоверению, назначаемого пользователем, существует два изменения определения источника данных:
Во-первых, формат свойства "credentials" является начальным каталогом или именем базы данных и идентификатором ресурса, который не имеет ключа учетной записи или пароля. ResourceId должен содержать идентификатор подписки База данных SQL Azure, группу ресурсов базы данных SQL и имя базы данных SQL. Это тот же формат, что и управляемое удостоверение, назначаемое системой.
Во-вторых, добавьте свойство identity, содержащее коллекцию управляемых удостоверений, назначаемых пользователем. При создании источника данных следует указать только одно управляемое удостоверение, назначаемое пользователем. Задайте для него тип userAssignedIdentities.
Ниже приведен пример создания объекта источника данных индексатора с помощью источников данных — создание или обновление:
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. Создание индекса
Индекс задает поля в документе, атрибутах и других конструкциях, которые формируют интерфейс поиска.
Ниже приведен вызов REST API для создания индекса с полем для 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. Создание индексатора
Индексатор подключает источник данных с целевым индексом поиска и предоставляет расписание для автоматизации обновления данных. После создания индекса и источника данных вы будете готовы к созданию индексатора. Если индексатор успешно выполнен, синтаксис подключения и назначения ролей допустимы.
Пример вызова REST API Create Indexer с определением индексатора Azure SQL. Индексатор запускается при отправке запроса.
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"
}
Если при попытке индексатора подключиться к источнику данных возникает ошибка, которая говорит, что клиенту запрещен доступ к серверу, ознакомьтесь с распространенными ошибками индексатора.
См. также
индексатор Azure SQL