Поделиться через


Настройка службы поиска для подключения с помощью управляемого удостоверения в службе поиска искусственного интеллекта Azure

Внимание

Назначенное пользователем управляемое удостоверение находится в статусе общедоступной предварительной версии в разделе "Дополнительные условия использования". REST API для предварительного доступа к управлению обеспечивает назначение управляемых удостоверений, приписываемых пользователем, для поиска ИИ в Azure. Поддержка управляемой системой назначаемой идентичности теперь общедоступна.

Вы можете использовать идентификатор и назначения ролей Microsoft Entra для исходящих подключений из службы "Поиск ИИ Azure" к ресурсам, предоставляющим данные, примененную ИИ или векторизацию во время индексирования или запросов.

Чтобы использовать роли в исходящем подключении, сначала настройте службу поиска для использования управляемого удостоверения , назначаемого системой или назначаемого пользователем, в качестве субъекта безопасности для службы поиска в клиенте Microsoft Entra. После получения управляемого удостоверения можно назначить роли для авторизованного доступа. Управляемые удостоверения и назначения ролей устраняют необходимость передачи секретов и учетных данных в строка подключения или коде.

Предварительные условия

  • Служба поиска на уровне "Базовый" или выше любой регион.

  • Ресурс Azure, принимающий входящие запросы от субъекта безопасности Microsoft Entra, имеющего действительное назначение роли.

Поддерживаемые сценарии

Поиск ИИ Azure может подключаться к другим ресурсам Azure под управлением управляемого удостоверения, назначаемого системой, или управляемого удостоверения, назначаемого пользователем.

  • Конфигурация поисковой службы управляемого удостоверения, назначаемого системой, в общем доступе.
  • Конфигурация службы поиска управляемого удостоверения, назначенной пользователем, находится в открытой предварительной версии в соответствии с дополнительными условиями использования.
  • Использование управляемой идентичности в плоскости данных, будь то системой или пользователем назначенной, теперь в общем доступе. Например, если требуется управляемое удостоверение, назначаемое пользователем, для подключения к источнику данных индексатора, хранилища ключей, сеанса отладки или кэша обогащения, можно использовать общедоступную версию REST API для создания подключения, при условии, что функция, которую вы используете, также общедоступна.

Управляемое удостоверение системы указывается, когда строка подключения является идентификатором ресурса службы или приложения, поддерживающего Microsoft Entra ID. Управляемое удостоверение, назначаемое пользователем, указывается с помощью свойства identity.

Служба поиска использует Azure Storage в качестве источника данных индексатора и как приемник данных для сеансов отладки, кэширования обогащения и хранилища знаний. Для функций поиска, которые записывают обратно в хранилище, управляемое удостоверение требует назначения роли участника, как описано в разделе "Назначение роли".

Сценарий Система Назначено пользователем
Подключения индексатора к поддерживаемым источникамданных Azure 1 Да Да
Azure Key Vault для ключей, управляемых клиентом Да Да
Сеансы отладки (размещенные в служба хранилища Azure)1 Да Нет
Кэш обогащения (размещён в Azure Storage)1,2 Да Да
Хранилище знаний (размещено в служба хранилища Azure)1 Да Да
Подключения к Azure OpenAI, Azure AI Foundry и Функции Azure с помощью навыков и векторизаторов 3 Да Да

1 Для подключения между поиском и хранилищем конфигурация безопасности сети накладывает ограничения на то, какой тип управляемого удостоверения можно использовать. Только системное управляемое удостоверение можно использовать для подключения в пределах того же региона к хранилищу через исключение доверенного сервиса или правило экземпляра ресурса. Дополнительные сведения см. в статье "Доступ к учетной записи хранения, защищенной сетью".

В настоящее время служба поиска искусственного интеллекта не может подключиться к таблицам в учетной записи хранения с отключенным доступом к общему ключу.

3 Подключения к Azure OpenAI, Azure AI Foundry и Azure Functions через навыки и векторизаторы включают: настраиваемый навык, настраиваемый векторизатор, навык встраивания Azure OpenAI, векторизатор Azure OpenAI, навык AML и векторизатор каталога моделей Azure AI Foundry.

Управляемое удостоверение системы создать

При включении управляемого удостоверения, назначаемого системой, идентификатор Microsoft Entra создает удостоверение для службы поиска, которую можно использовать для проверки подлинности в других службах Azure в том же клиенте. Затем вы можете использовать это удостоверение в назначениях ролей для доступа к данным и моделям.

Управляемое удостоверение, назначаемое системой, уникально для вашей службы поиска и связано с ней на протяжении всего её существования. Служба поиска может иметь только одно управляемое удостоверение, назначаемое системой.

  1. Войдите в портал Azure и найдите службу поиска.

  2. В разделе Параметры выберите пункт Идентификация.

  3. На вкладке "Назначенная системой" в разделе "Состояние" выберите "Вкл".

  4. Выберите Сохранить.

    Снимок экрана: страница

    После сохранения параметров страница обновляется, чтобы отобразить идентификатор объекта, назначенный службе поиска.

    Снимок экрана: идентификатор объекта системного удостоверения.

Создание управляемого удостоверения, назначаемого пользователем

Внимание

Часть этого сценария доступна в общедоступной предварительной версии в разделе "Дополнительные условия использования". REST API для управления предварительной версии предоставляет конфигурацию управляемого удостоверения, назначаемого пользователем, для поиска ИИ Azure.

Управляемое пользователем удостоверение — это ресурс в Azure. Вы можете создать несколько управляемых удостоверений, назначаемых пользователем, если требуется более подробная степень в назначениях ролей. Например, могут потребоваться отдельные удостоверения для различных приложений и сценариев.

Вот шаги:

  • В подписке Azure создайте управляемое удостоверение, назначаемое пользователем.
  • В службе поиска обновите определение службы, чтобы включить управляемое удостоверение, назначаемое пользователем (этот шаг находится в предварительной версии).
  • В других службах Azure, к которым вы хотите подключиться, создайте назначение ролей для удостоверения.
  • В подключениях к источникам данных в Azure AI Search, например, в источнике данных индексатора, используйте управляемое пользователем удостоверение в сведениях о подключении (этот шаг доступен для всех, если поддержка этой функции общедоступна).

Назначенное пользователем управляемое удостоверение можно ограничить подписками, группами ресурсов или типами ресурсов.

Связывание пользовательского управляемого удостоверения поддерживается в портале Azure, в предварительных версиях REST API управления и в бета-версиях пакетов SDK, которые предоставляют эту функцию.

  1. Войдите на портал Azure

  2. Выберите Создать ресурс.

  3. В строке поиска "Поиск по службам и marketplace" выполните поиск по запросу "управляемое удостоверение, назначаемое пользователем", а затем выберите Создать.

    Снимок экрана элемента управляемого удостоверения, назначенного пользователю, в Azure Marketplace.

  4. Выберите подписку, группу ресурсов и регион. Присвойте удостоверению описательное название.

  5. Нажмите кнопку "Создать " и дождитесь завершения развертывания ресурса.

    Прежде чем использовать удостоверение, потребуется несколько минут.

  6. На странице службы поиска в разделе "Параметры" выберите "Удостоверение".

  7. На вкладке User assigned (Назначаемое пользователем) нажмите Добавить.

  8. Выберите подписку, а затем выберите управляемый ресурс, назначенный пользователем, созданный на предыдущем шаге.

Назначение роли

После получения управляемого удостоверения назначьте роли, определяющие доступ к службе поиска в ресурсе Azure.

  • Разрешения на чтение необходимы для подключений к данным индексатора и доступа к ключу, управляемому клиентом, в Azure Key Vault.

  • Разрешения на запись необходимы для функций обогащения ИИ, использующих Azure хранилище для размещения данных сеанса отладки, кэширования обогащения и долгосрочного хранения содержимого в хранилище знаний.

Следующие шаги иллюстрируют рабочий процесс назначения ролей. Этот пример предназначен для Azure OpenAI. Сведения о других ресурсах Azure см. в разделе Подключение к хранилищу Azure, Подключение к Azure Cosmos DB или Подключение к Azure SQL.

  1. Войдите в портал Azure с помощью учетной записи Azure и перейдите к ресурсу Azure OpenAI.

  2. Выберите элемент управления доступом в меню слева.

  3. Выберите Добавить, затем выберите Добавить назначение ролей.

  4. В разделе "Роли функции задания" выберите "Пользователь OpenAI" Cognitive Services и нажмите кнопку "Далее".

  5. В разделе "Участники" выберите "Управляемое удостоверение" и затем выберите "Участники".

  6. Фильтруйте по подписке и типу ресурсов (сервисы поиска), а затем выберите управляемое удостоверение вашего сервиса поиска.

  7. Выберите Проверить + назначить.

Примеры строк подключения

После того как управляемое удостоверение определено для службы поиска и назначено на роль, можно изменять исходящие подключения, чтобы использовать уникальный идентификатор другого ресурса Azure. Ниже приведены некоторые примеры строка подключения для различных сценариев.

Для этих подключений можно использовать общедоступную версию REST API и пакеты azure SDK.

Совет

Большинство этих объектов можно создать в портале Azure, указав управляемое удостоверение, назначаемое системой или пользователем, а затем просмотреть определение JSON и получить строку подключения.

Источник данных BLOB (система):

Источник данных индексатора содержит свойство credentials, определяющее способ подключения к источнику данных. В следующем примере показана строка подключения указание уникального идентификатора ресурса учетной записи хранения.

Система Microsoft Entra ID аутентифицирует запрос, используя управляемую системой идентичность службы поиска. Обратите внимание, что строка подключения не включает контейнер. В определении источника данных имя контейнера указывается в свойстве "container" (не отображается), а не в строке подключения.

"credentials": {
    "connectionString": "ResourceId=/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name};"
    }

Источник данных BLOB-объектов (пользователь):

Запрос к службе хранения Azure также может быть выполнен с использованием управляемой самим пользователем удостоверения. Идентификация пользователя службы поиска указана в свойстве "идентификация".

"credentials": {
    "connectionString": "ResourceId=/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name};"
    },
  . . .
"identity": {
    "@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
    "userAssignedIdentity": "/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{user-assigned-managed-identity-name}"
  }

Хранилище знаний:

Определение хранилища знаний включает строку подключения к хранилищу Azure. Строка подключения — это уникальный идентификатор ресурса учетной записи хранения. Обратите внимание, что строка не включает контейнеры или таблицы в путь. Они определены в проекционном определении, а не в строке подключения.

"knowledgeStore": {
  "storageConnectionString": "ResourceId=/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/storage-account-name};"
}

Кэш обогащения:

Индексатор создает, использует и запоминает контейнер, используемый для кэшированных обогащений. Не обязательно включать контейнер в строку подключения кэша. Идентификатор объекта можно найти на странице Идентификатор службы поиска в портале Azure.

"cache": {
  "enableReprocessing": true,
  "storageConnectionString": "ResourceId=/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name};"
}

Сеанс отладки:

Сеанс отладки выполняется в портале Azure и принимает строку подключения при его запуске. Вы можете вставить строку, похожую на следующий пример.

"ResourceId=/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name}/{container-name};",

Пользовательский навык:

Пользовательский навык направлен на конечную точку функции Azure или приложения, в котором размещен пользовательский код.

  • uri — конечная точка функции или приложения.

  • authResourceId сообщает службе поиска подключиться с помощью управляемого удостоверения, передавая идентификатор приложения целевой функции или приложения в свойстве.

{
  "@odata.type": "#Microsoft.Skills.Custom.WebApiSkill",
  "description": "A custom skill that can identify positions of different phrases in the source text",
  "uri": "https://contoso.count-things.com",
  "authResourceId": "<Azure-AD-registered-application-ID>",
  "batchSize": 4,
  "context": "/document",
  "inputs": [ ... ],
  "outputs": [ ...]
}

Навык встраивания Azure OpenAI и векторизатор Azure OpenAI:

Навык встраивания Azure OpenAI и векторизатор в поиске ИИ нацелены на конечную точку службы Azure OpenAI, которая размещает модель встраивания. Конечная точка указана в определении навыка внедрения Azure OpenAI и (или) в определении векторизатора OpenAI Azure.

Управляемое системой удостоверение используется автоматически, если "apikey" и "authIdentity" пусто, как показано в следующем примере. Свойство "authIdentity" используется только для управляемого удостоверения, назначаемого пользователем.

Пример управляемого системой удостоверения:

{
  "@odata.type": "#Microsoft.Skills.Text.AzureOpenAIEmbeddingSkill",
  "description": "Connects a deployed embedding model.",
  "resourceUri": "https://url.openai.azure.com/",
  "deploymentId": "text-embedding-ada-002",
  "modelName": "text-embedding-ada-002",
  "inputs": [
    {
      "name": "text",
      "source": "/document/content"
    }
  ],
  "outputs": [
    {
      "name": "embedding"
    }
  ]
}

Ниже приведен пример векторизатора, настроенного для управляемого удостоверения, назначаемого системой. Векторизатор указан в индексе поиска.

 "vectorizers": [
    {
      "name": "my_azure_open_ai_vectorizer",
      "kind": "azureOpenAI",
      "azureOpenAIParameters": {
        "resourceUri": "https://url.openai.azure.com",
        "deploymentId": "text-embedding-ada-002",
        "modelName": "text-embedding-ada-002"
      }
    }
  ]

Пример управляемого удостоверения, заданного пользователем:

Управляемое удостоверение, назначаемое пользователем, используется, если "apiKey" он пуст и указан допустимый "authIdentity" .

{
  "@odata.type": "#Microsoft.Skills.Text.AzureOpenAIEmbeddingSkill",
  "description": "Connects a deployed embedding model.",
  "resourceUri": "https://url.openai.azure.com/",
  "deploymentId": "text-embedding-ada-002",
  "modelName": "text-embedding-ada-002",
  "inputs": [
    {
      "name": "text",
      "source": "/document/content"
    }
  ],
  "outputs": [
    {
      "name": "embedding"
    }
  ],
  "authIdentity": {
    "@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
    "userAssignedIdentity": "/subscriptions/<subscription_id>/resourcegroups/<resource_group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user-assigned-managed-identity-name>"
   }
}

Ниже приведен пример векторизатора, настроенного для управляемого удостоверения, назначаемого пользователем. Векторизатор указан в индексе поиска.

 "vectorizers": [
    {
      "name": "my_azure_open_ai_vectorizer",
      "kind": "azureOpenAI",
      "azureOpenAIParameters": {
        "resourceUri": "https://url.openai.azure.com",
        "deploymentId": "text-embedding-ada-002",
        "modelName": "text-embedding-ada-002"
        "authIdentity": {
            "@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
            "userAssignedIdentity": "/subscriptions/<subscription_id>/resourcegroups/<resource_group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user-assigned-managed-identity-name>"
          }
      }
    }
  ]

Проверка доступа к брандмауэру

Если ресурс Azure находится за брандмауэром, убедитесь, что есть правило входящего трафика, которое признает запросы из службы поиска и из портал Azure.

  • Для подключений в пределах того же региона к хранилищу BLOB-объектов Azure или Azure Data Lake Storage 2-го поколения используйте системное управляемое удостоверение и исключение для доверенной службы. При необходимости можно настроить правило инстанса ресурса, чтобы принимать запросы.

  • Для всех других ресурсов и подключений настройте правило брандмауэра IP-адресов, которое допускает запросы из службы "Поиск ИИ Azure". Дополнительные сведения см. в статье о доступе индексатора к содержимому, защищенному функциями безопасности сети Azure.

См. также