Создание исходящих подключений через общую приватную ссылку

В этой статье объясняется, как настроить частные исходящие вызовы из службы "Поиск ИИ Azure" в ресурс Azure PaaS, который выполняется в виртуальной сети.

Настройка частного подключения позволяет службе поиска подключаться к IP-адресу виртуальной сети, а не через порт, открытый к Интернету. Объект, созданный для подключения, называется общей приватной ссылкой. При подключении служба поиска использует общий приватный канал внутренне для доступа к ресурсу Azure PaaS внутри сетевой границы.

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

Примечание.

Если вы настраиваете частное подключение индексатора к Управляемый экземпляр SQL, ознакомьтесь с этой статьей.

Поиск ИИ Azure выполняет исходящие вызовы к другим ресурсам Azure PaaS в следующих сценариях:

  • Индексатор или поисковая система подключается к Azure OpenAI для внедрения текстовых векторов
  • Индексатор подключается к поддерживаемым источникам данных
  • Подключения индексатора (набора навыков) к служба хранилища Azure для кэширования обогащений, отладочного сеанса или записи в хранилище знаний
  • Запросы ключа шифрования в Azure Key Vault
  • Запросы пользовательских навыков для Функции Azure или аналогичного ресурса

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

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

Общая приватная ссылка:

  • Создание с помощью средств поиска ИИ Azure, API или пакетов SDK
  • Утвержден владельцем ресурса Azure PaaS
  • Используется внутренней службой поиска ИИ Azure для частного подключения к определенному ресурсу Azure.

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

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

Существует два сценария совместного использования Приватный канал Azure и поиска ИИ Azure.

Сценарий, описанный в этой статье.

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

Ограничения

При оценке общих частных ссылок для вашего сценария помните эти ограничения.

  • Несколько типов ресурсов, используемых в общей приватной ссылке, находятся в предварительной версии. Если вы подключаетесь к ресурсу предварительной версии (База данных Azure для MySQL, Функции Azure или Управляемый экземпляр SQL Azure), используйте предварительную версию REST API управления для создания общей приватной ссылки. К этим версиям относятся 2020-08-01-preview, 2021-04-01-previewи 2024-03-01-preview.

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

Необходимые компоненты

  • Поиск по искусственному интеллекту Azure на уровне "Базовый" или выше. Если вы используете наборы навыков и обогащения ИИ, уровень должен быть стандартом 2 (S2) или выше. Дополнительные сведения см. в разделе "Ограничения службы".

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

  • Разрешения для поиска ИИ Azure и источника данных:

    • В ресурсе Azure PaaS необходимо иметь разрешение на утверждение подключений к частной конечной точке. Например, если вы используете учетную запись служба хранилища Azure в качестве источника данных (например, контейнер BLOB-объектов, Файлы Azure общий ресурс, таблицу Azure), вам потребуетсяMicrosoft.Storage/storageAccounts/privateEndpointConnectionsApproval/action.

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

      • Microsoft.Search/searchServices/sharedPrivateLinkResources/write
      • Microsoft.Search/searchServices/sharedPrivateLinkResources/read
      • Microsoft.Search/searchServices/sharedPrivateLinkResources/operationStatuses/read

Поддерживаемые типы ресурсов

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

Тип ресурса Subresource (или идентификатор группы)
Microsoft. служба хранилища/storageAccounts 1 blob, , tabledfsfile
Microsoft.DocumentDB/databaseAccounts 2 Sql
Microsoft.Sql/servers sqlServer
Microsoft.KeyVault/vaults vault
Microsoft.DBforMySQL/servers (предварительная версия) mysqlServer
Microsoft.Web/sites (предварительная версия) 3 sites
Microsoft.Sql/managedInstances (предварительная версия) 4 managedInstance
Microsoft.CognitiveServices/accounts (предварительная версия) 5 openai_account

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

2 Тип Microsoft.DocumentDB/databaseAccounts ресурса используется для подключений индексатора к Azure Cosmos DB для NoSQL. Имя поставщика и идентификатор группы чувствительны к регистру.

3 Тип Microsoft.Web/sites ресурса используется для службы приложений и функций Azure. В контексте поиска ИИ Azure функция Azure является более вероятным сценарием. Функция Azure обычно используется для размещения логики пользовательского навыка. Функция Azure имеет планы размещения, уровня "Премиум" и "Выделенный" Служба приложений. В настоящее время Среда службы приложений (ASE) и Служба Azure Kubernetes (AKS) не поддерживаются.

4 См. раздел "Создание общей приватной ссылки" для Управляемый экземпляр SQL инструкций.

5 Тип Microsoft.CognitiveServices/accounts ресурса используется для подключений индексатора к Azure OpenAI при реализации интегрированной векторизации.

Используйте портал Azure, REST API управления, Azure CLI или Azure PowerShell, чтобы создать общую приватную ссылку.

Несколько советов:

  • Присвойте приватной ссылке понятное имя. В ресурсе Azure PaaS общий приватный канал отображается вместе с другими частными конечными точками. Имя, например "shared-private-link-for-search", может напомнить вам, как оно используется.

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

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

  2. В разделе Параметры в области навигации слева выберите "Сеть".

  3. На странице "Общий частный доступ" нажмите кнопку "Добавить общий частный доступ".

  4. Выберите Подключение в ресурс Azure в моем каталоге или Подключение ресурсу Azure по идентификатору ресурса.

  5. Если выбрать первый вариант (рекомендуется), портал поможет выбрать соответствующий ресурс Azure и заполнить другие свойства, например идентификатор группы ресурса и тип ресурса.

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

  6. Если выбрать второй вариант, введите идентификатор ресурса Azure вручную и выберите соответствующий идентификатор группы из списка в начале этой статьи.

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

  7. Убедитесь, что состояние подготовки — "Обновление".

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

  8. После успешного создания ресурса состояние подготовки ресурса изменится на "Успешно".

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

В случае успешного выполнения возвращается ответ 202 Accepted. Процесс создания исходящей частной конечной точки — это длительно выполняемая (асинхронная) операция. Включает развертывание следующих ресурсов:

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

  • Частная зона DNS для типа ресурса на основе идентификатора группы. Развернув этот ресурс, убедитесь, что в любом DNS-запросе к частному ресурсу используется IP-адрес, связанный с частной конечной точкой.

2. Утверждение подключения к частной конечной точке

Утверждение подключения к частной конечной точке предоставляется на стороне Azure PaaS. Требуется явное утверждение владельца ресурса. Следующие действия охватывают утверждение с помощью портал Azure, но ниже приведены ссылки на утверждение подключения программным способом с стороны Azure PaaS:

Используя портал Azure, выполните следующие действия.

  1. Откройте страницу "Сеть" ресурса Azure PaaS.Текст

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

    Снимок экрана: портал Azure с панелью

  3. Выберите подключение и нажмите кнопку "Утвердить". На портале может потребоваться несколько минут.

    Снимок экрана: портал Azure, на панели

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

Хотя ссылка на частную конечную точку на странице "Сеть " активна, она не будет разрешать.

Снимок экрана: ссылка на частную конечную точку на странице сети Azure PaaS.

При выборе ссылки возникает ошибка. Сообщение "The access token is from the wrong issuer" о состоянии и must match the tenant associated with this subscription отображается, так как ресурс внутренней частной конечной точки подготовлен корпорацией Майкрософт в управляемом корпорацией Майкрософт клиенте, а связанный ресурс (поиск ИИ Azure) находится в вашем клиенте. Это по проектированию, вы не можете получить доступ к ресурсу частной конечной точки, выбрав ссылку подключения к частной конечной точке.

Следуйте инструкциям в следующем разделе, чтобы проверка состояние общей приватной ссылки.

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

Снимок экрана: портал Azure с ресурсом утвержденного общего приватного канала.

Кроме того, можно получить состояние подключения с помощью API GET Shared Приватный канал.

az rest --method get --uri https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/contoso/providers/Microsoft.Search/searchServices/contoso-search/sharedPrivateLinkResources/blob-pe?api-version=2023-11-01

При этом возвращается JSON, где состояние подключения отображается как состояние "состояние" в разделе "свойства". Ниже приведен пример учетной записи хранения.

{
      "name": "blob-pe",
      "properties": {
        "privateLinkResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/contoso/providers/Microsoft.Storage/storageAccounts/contoso-storage",
        "groupId": "blob",
        "requestMessage": "please approve",
        "status": "Approved",
        "resourceRegion": null,
        "provisioningState": "Succeeded"
      }
}

Если состояние подготовки (properties.provisioningState) ресурса имеет значение "Успешно" и состояниеproperties.status подключения () имеет значение "Утверждено", это означает, что общий ресурс приватного канала работает и индексатор можно настроить для обмена данными через частную конечную точку.

4. Настройка индексатора для запуска в частной среде

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

Среда выполнения является прозрачной, но после начала создания правил брандмауэра или установки частных подключений необходимо учитывать выполнение индексатора. Для частного подключения настройте выполнение индексатора, чтобы всегда выполняться в частной среде.

На этом шаге показано, как настроить индексатор для запуска в частной среде с помощью REST API. Среду выполнения также можно задать с помощью редактора JSON на портале.

Примечание.

Этот шаг можно выполнить до утверждения частного подключения конечной точки. Однако до тех пор, пока подключение частной конечной точки не будет утверждено, любой существующий индексатор, который пытается связаться с безопасным ресурсом (например, учетной записью хранения) в конечном итоге будет находиться в временном состоянии сбоя, и новые индексаторы не будут созданы.

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

  2. Создайте индексатор, указывающий на источник данных, индекс и набор навыков, созданный в предыдущем шаге. Кроме того, необходимо принудительно запустить индексатор в частной среде выполнения, задав для свойства конфигурации индексатора executionEnvironment значение private.

    {
        "name": "indexer",
        "dataSourceName": "blob-datasource",
        "targetIndexName": "index",
        "parameters": {
            "configuration": {
                "executionEnvironment": "private"
            }
        },
        "fieldMappings": []
    }
    

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

Примечание.

Если у вас уже используются индексаторы, их можно обновить с помощью API PUT, задав для свойства executionEnvironment значение private, или с помощью редактора JSON на портале.

  1. Если вы еще этого не сделали, убедитесь, что ресурс Azure PaaS отказывается от подключений из общедоступного Интернета. Если подключения принимаются, просмотрите параметры DNS на странице "Сеть " ресурса Azure PaaS.

  2. Выберите средство, которое может вызвать сценарий исходящего запроса, например подключение индексатора к частной конечной точке. Простой выбор — использование мастера импорта данных , но вы также можете попробовать клиент REST и REST API для повышения точности. Если служба поиска не настроена для частного подключения, подключение клиента REST для поиска может находиться через общедоступный Интернет.

  3. Задайте для строка подключения частный ресурс Azure PaaS. Формат строка подключения не изменяется для общей приватной ссылки. Служба поиска вызывает общую приватную ссылку внутри.

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

     {
       "name": "my-blob-ds",
       "type": "azureblob",
       "subtype": null,
       "credentials": {
         "connectionString": "DefaultEndpointsProtocol=https;AccountName=<YOUR-STORAGE-ACCOUNT>;AccountKey=..."
       }
    
  4. Для рабочих нагрузок индексатора не забудьте задать среду выполнения в определении индексатора. Пример определения индексатора может выглядеть следующим образом:

    "name": "indexer",
    "dataSourceName": "my-blob-ds",
    "targetIndexName": "my-index",
    "parameters": {
       "configuration": {
           "executionEnvironment": "private"
           }
       },
    "fieldMappings": []
    }
    
  5. Запустите индексатор. Если выполнение индексатора успешно выполнено, и индекс поиска заполняется, общая приватная ссылка работает.

Устранение неполадок

  • Если создание индексатора завершается сбоем с ошибкой "Учетные данные источника данных недопустимы", проверка состояние утверждения общей приватной связи перед отладкой подключения. Если состояние равноApproved, проверка properties.provisioningState свойство. Если это Incompleteтак, может возникнуть проблема с базовыми зависимостями. В этом случае повторите PUT запрос на повторное создание общей приватной ссылки. Возможно, вам также потребуется повторить шаг утверждения.

  • Если индексаторы завершаются последовательно или периодически, проверка executionEnvironment свойство индексатора. Значение должно иметь значение private. Если это свойство не задано, и индексатор выполняется успешно в прошлом, это связано с тем, что служба поиска использовала частную среду собственного соглашения. Служба поиска перемещает обработку из стандартной среды, если система находится под нагрузкой.

  • Если при создании общей приватной ссылки возникает ошибка, проверка ограничения службы, чтобы убедиться, что вы находитесь под квотой для вашего уровня.

Следующие шаги

Дополнительные сведения о частных конечных точках и других методах безопасного подключения: