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


Конфигурация сети и доступа для Azure OpenAI на ваших данных

Примечание.

По состоянию на июнь 2024 г. форма заявки для управляемой частной конечной точки Майкрософт для поиска Azure AI больше не нужна.

Управляемая частная конечная точка будет удалена из управляемой виртуальной сети Майкрософт в июле 2025 года. Если вы уже предоставили управляемую частную конечную точку с помощью процедуры подачи заявки до июня 2024 г., включите доверенную службу поиска Azure AI как можно раньше, чтобы избежать нарушения работы службы.

Используйте эту статью, чтобы узнать, как настроить сеть и доступ при использовании Azure OpenAI On Your Data с помощью управления доступом на основе ролей Microsoft Entra ID, виртуальных сетей и частных конечных точек.

Архитектура приема данных

При использовании Azure OpenAI On your Data для приема данных из хранилища BLOB-объектов Azure, локальных файлов или URL-адресов в поиске ИИ Azure используется следующий процесс для обработки данных.

Схема, показывающая процесс приема данных.

  • Шаги 1 и 2 используются только для отправки файлов.
  • Загрузка URL-адресов в BLOB-хранилище не показана на этой диаграмме. После загрузки веб-страниц из интернета и отправки их в BLOB-хранилище, шаги, начиная с третьего, будут одинаковы.
  • Один индексатор, один индекс и один источник данных в ресурсе поиска ИИ Azure создается с помощью предварительно созданных навыков и интегрированной векторизации.
  • Поиск по искусственному интеллекту Azure обрабатывает извлечение, разбиение на части и векторизацию документов, разделённых на части, с помощью интегрированной векторизации. Если указан интервал планирования, индексатор будет выполняться соответствующим образом.

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

Архитектура вывода

Схема, показывающая процесс использования API вывода.

При отправке вызовов API для общения с моделью Azure OpenAI, работающей с вашими данными, служба должна получить поля индекса в процессе вывода для выполнения сопоставления полей. Поэтому служба требует, чтобы удостоверение Azure OpenAI имело роль Search Service Contributor в службе поиска даже во время выполнения вывода.

Если в запросе на выполнение вывода предоставляется зависимость встроенная в процесс, Azure OpenAI выполнит векторизацию переписанного запроса, и затем и запрос, и вектор будут отправлены в Azure AI Search для выполнения векторного поиска.

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

Примечание.

Управление доступом на уровне документа поддерживается только для Azure AI Search.

Azure OpenAI On Your Data позволяет ограничить документы, которые можно использовать в ответах для разных пользователей с фильтрами безопасности поиска Azure. При включении доступа на уровне документа поиск Azure ai обрезает результаты поиска на основе членства в группе Microsoft Entra, указанной в фильтре. Доступ на уровне документа можно включить только в существующих индексах поиска ИИ Azure. Чтобы включить доступ на уровне документа, выполните следующие действия.

  1. Чтобы зарегистрировать приложение и создать пользователей и группы, выполните действия, описанные в документации по поиску ИИ Azure.

  2. Индексируйте документы с учётом разрешённых групп. Убедитесь, что новые поля безопасности имеют схему:

    {"name": "group_ids", "type": "Collection(Edm.String)", "filterable": true }
    

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

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

  4. На портале Azure AI Foundry, добавьте источник данных. В разделе сопоставление полей индекса можно сопоставить ноль или одно значение с полем разрешенных групп, если схема совместима. Если поле разрешенных групп не сопоставлено, доступ на уровне документа отключен.

Портал Azure AI Foundry

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

Веб-приложение

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

API

При использовании API передайте filter параметр в каждом запросе API. Например:

Внимание

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

Дополнительные сведения о безопасности служб ИИ см. в статье "Проверка подлинности запросов к службам ИИ Azure".

Дополнительные сведения о безопасности служб ИИ см. в статье "Проверка подлинности запросов к службам ИИ Azure".

{
    "messages": [
        {
            "role": "user",
            "content": "who is my manager?"
        }
    ],
    "data_sources": [
        {
            "type": "azure_search",
            "parameters": {
                "endpoint": "<AZURE_AI_SEARCH_ENDPOINT>",
                "key": "<AZURE_AI_SEARCH_API_KEY>",
                "index_name": "<AZURE_AI_SEARCH_INDEX>",
                "filter": "my_group_ids/any(g:search.in(g, 'group_id1, group_id2'))"
            }
        }
    ]
}
  • my_group_ids — это имя поля, выбранное для разрешенных групп во время сопоставления полей.
  • group_id1, group_id2 являются группами, к которым принадлежит пользователь, вошедший в систему. Клиентское приложение может извлекать и кэшировать группы пользователей.

Настройка ресурсов

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

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

Создать группу ресурсов

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

  • Одна виртуальная сеть
  • Три ключевых службы: один Azure OpenAI, один поиск ИИ Azure, одна учетная запись хранения
  • Три частных конечных точки, каждая из которых связана с одной из ключевых служб.
  • Три сетевых интерфейса, каждая из которых связана с одной частной конечной точкой
  • Один шлюз виртуальной сети для доступа с локальных клиентских компьютеров
  • Одно веб-приложение с интегрированной виртуальной сетью
  • Одна частная зона DNS, чтобы веб-приложение находило IP-адрес вашего Azure OpenAI

Создание виртуальной сети

Виртуальная сеть имеет три подсети.

  1. Первая подсеть используется для шлюза виртуальной сети.
  2. Вторая подсеть используется для частных конечных точек для трех ключевых служб.
  3. Третья подсеть пуста и используется для интеграции исходящей виртуальной сети веб-приложения.

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

Настройка Azure OpenAI

Включенный настраиваемый поддомен

Настраиваемый поддомен необходим для проверки подлинности на основе идентификатора Microsoft Entra и частной зоны DNS. Если ресурс Azure OpenAI создается с помощью шаблона ARM, настраиваемый поддомен должен быть явно указан.

Включение управляемого удостоверения

Чтобы ваша учетная запись поиска и хранения Azure могла распознавать службу Azure OpenAI через аутентификацию Microsoft Entra ID, необходимо назначить управляемое удостоверение для службы Azure OpenAI. Самый простой способ — включить управляемое удостоверение, назначенное системой, на портал Azure. Снимок экрана, показывающий параметр управляемого системой удостоверения в портале Azure.

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


"identity": {
  "principalId": "<YOUR-PRINCIPAL-ID>",
  "tenantId": "<YOUR-TENNANT-ID>",
  "type": "SystemAssigned, UserAssigned", 
  "userAssignedIdentities": {
    "/subscriptions/<YOUR-SUBSCIRPTION-ID>/resourceGroups/my-resource-group",
    "principalId": "<YOUR-PRINCIPAL-ID>", 
    "clientId": "<YOUR-CLIENT-ID>"
  }
}

Включение доверенной службы

Чтобы разрешить Azure AI Search вызывать модель встраивания Azure OpenAI, в то время как Azure OpenAI не имеет доступа к общедоступной сети, необходимо настроить Azure OpenAI для обхода ограничений Azure AI Search в качестве доверенной службы на основе управляемого удостоверения. Azure OpenAI определяет трафик из поиска ИИ Azure, проверяя утверждения в веб-токене JSON (JWT). Поиск по искусственному интеллекту Azure должен использовать проверку подлинности управляемого удостоверения, назначаемую системой, для вызова конечной точки внедрения.

Установите networkAcls.bypass как AzureServices через API управления. Дополнительные сведения см. в статье о виртуальных сетях.

Этот шаг можно пропустить, только если у вас есть общая приватная ссылка для ресурса поиска ИИ Azure.

Отключение доступа из общедоступной сети

Вы можете отключить доступ к вашему ресурсу Azure OpenAI из публичных сетей в портале Azure.

Чтобы разрешить доступ к службе Azure OpenAI с клиентских компьютеров, например с помощью портала Azure AI Foundry, необходимо создать подключения к частным конечным точкам, которые подключаются к ресурсу Azure OpenAI.

Для ресурса поиска можно использовать базовую ценовую категорию и выше. Это не обязательно, но если вы используете ценовую категорию S2, доступны дополнительные варианты .

Включение управляемого удостоверения

Чтобы ваши другие ресурсы могли распознавать Azure AI Search с помощью проверки подлинности Microsoft Entra ID, вы должны назначить управляемую идентичность для Azure AI Search. Самый простой способ — включить управляемое удостоверение, назначенное системой, в портал Azure.

Снимок экрана, показывающий параметр управляемого удостоверения для Azure AI Search в портале Azure.

Включение управления доступом на основе ролей

Поскольку Azure OpenAI использует управляемое удостоверение для доступа к Azure AI Search, необходимо включить роль-ориентированное управление доступом в Azure AI Search. Чтобы сделать это на портале Azure, выберите Оба или Управление доступом на основе ролей на вкладке Ключи в портале Azure.

Снимок экрана с параметром управляемого удостоверения для поиска в Azure AI в портале Azure.

Дополнительную информацию см. в статье о RBAC для поиска Azure AI.

Отключение доступа из общедоступной сети

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

Чтобы разрешить доступ к ресурсу службы поиска ИИ Azure на клиентских компьютерах, например с помощью портала Azure AI Foundry, необходимо создать подключения к частной конечной точке, которые подключаются к ресурсу поиска ИИ Azure.

Включение доверенной службы

Вы можете включить доверенную службу вашего поискового ресурса в Azure portal.

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

Схема, показывающая надежную службу поиска.

Можно также использовать REST API для включения доверенной службы. В этом примере используется Azure CLI и инструмент jq.

rid=/subscriptions/<YOUR-SUBSCRIPTION-ID>/resourceGroups/<YOUR-RESOURCE-GROUP>/providers/Microsoft.Search/searchServices/<YOUR-RESOURCE-NAME>
apiVersion=2024-03-01-Preview
#store the resource properties in a variable
az rest --uri "https://management.azure.com$rid?api-version=$apiVersion" > search.json

#replace bypass with AzureServices using jq
jq '.properties.networkRuleSet.bypass = "AzureServices"' search.json > search_updated.json

#apply the updated properties to the resource
az rest --uri "https://management.azure.com$rid?api-version=$apiVersion" \
    --method PUT \
    --body @search_updated.json

Совет

Если вы используете базовую или стандартную ценовую категорию или когда вы впервые настраиваете все ресурсы безопасно, пропустите этот расширенный раздел.

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

Чтобы создать общую приватную ссылку из ресурса поиска, подключающегося к ресурсу Azure OpenAI, ознакомьтесь с документацией по поиску. Выберите тип ресурса как Microsoft.CognitiveServices/accounts и идентификаторopenai_accountгруппы.

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

Схема, показывающая процесс приема данных с помощью ресурса поиска S2.

Настройка учетной записи хранения

Включение доверенной службы

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

В портал Azure перейдите на вкладку "Сеть учетной записи хранения", выберите "Выбранные сети", а затем выберите "Разрешить службам Azure" в списке доверенных служб доступ к этой учетной записи хранения и нажмите кнопку "Сохранить".

Отключение доступа из общедоступной сети

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

Чтобы разрешить доступ к вашей учетной записи хранения с клиентских компьютеров, например, используя портал Azure AI Foundry, необходимо создать подключения к частной конечной точке, которые ведут к вашему BLOB-хранилищу.

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

До настоящего момента вы уже настроили каждый ресурс для работы независимо. Затем необходимо разрешить службам авторизовать друг друга.

Роль Назначенное лицо Ресурс Описание
Search Index Data Reader Azure OpenAI Поиск с использованием ИИ Azure Служба вывода запрашивает данные из индекса.
Search Service Contributor Azure OpenAI Поиск с использованием ИИ Azure Служба вывода запрашивает схему индекса для автоматического сопоставления полей. Служба приема данных создает индекс, источники данных, набор навыков, индексатор и запрашивает состояние индексатора.
Storage Blob Data Contributor Azure OpenAI Учетная запись хранения Считывает из входного контейнера и записывает предварительно обработанный результат в выходной контейнер.
Cognitive Services OpenAI Contributor Поиск с использованием ИИ Azure Azure OpenAI разрешить ресурсу поиска Azure AI доступ к конечной точке встраивания Azure OpenAI.
Storage Blob Data Reader Поиск с использованием ИИ Azure Учетная запись хранения Считывает двоичные объекты документов и фрагменты объектов.
Reader Проект Azure AI Foundry Частные конечные точки для хранилища Azure (Blob и File) Чтение индексов поиска, созданных в хранилище блобов в проекте Azure AI Foundry.
Cognitive Services OpenAI User Веб-приложение Azure OpenAI Вывод.

В таблице выше элементы с Assignee обозначают назначаемое системой управляемое удостоверение этого ресурса.

Администратор должен иметь Owner роль в этих ресурсах для добавления назначений ролей.

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

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

Роль Ресурс Описание
Cognitive Services OpenAI Contributor Azure OpenAI Выполните вызов общедоступного API приема данных с портала Azure AI Foundry . Роль Contributor недостаточна, так как если у вас есть только роль Contributor, вы не можете вызывать API плоскости данных через аутентификацию Microsoft Entra ID, а аутентификация через Microsoft Entra ID требуется в безопасной настройке, описанной в этой статье.
Contributor Поиск с использованием ИИ Azure Список API-Keys для перечисления индексов на портале Azure AI Foundry.
Contributor Учетная запись хранения Список учетных записей SAS для загрузки файлов с портала Azure AI Foundry.
Contributor Группа ресурсов или подписка Azure, куда разработчику нужно развернуть веб-приложение Разверните веб-приложение в подписке разработчика Azure.
Role Based Access Control Administrator Azure OpenAI Разрешение на настройку необходимого назначения ролей в ресурсе Azure OpenAI. Позволяет веб-приложению вызывать Azure OpenAI.

Настройка шлюза и клиента

Чтобы получить доступ к службе Azure OpenAI с локальных клиентских компьютеров, одним из способов является настройка Azure VPN-шлюз и VPN-клиента Azure.

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

Следуйте этому руководству , чтобы добавить конфигурацию типа "точка — сеть" и включить проверку подлинности на основе идентификатора Microsoft Entra. Скачайте пакет конфигурации профиля VPN-клиента Azure, распакуйте и импортируйте файл в AzureVPN/azurevpnconfig.xml VPN-клиент Azure.

Снимок экрана: место импорта профиля VPN-клиента Azure.

Настройте файл на локальном компьютере hosts, чтобы направить имена хостов ваших ресурсов на частные IP-адреса в вашей виртуальной сети. Файл hosts находится в C:\Windows\System32\drivers\etc Windows и в /etc/hosts Linux. Пример:

10.0.0.5 contoso.openai.azure.com
10.0.0.6 contoso.search.windows.net
10.0.0.7 contoso.blob.core.windows.net

Портал Azure AI Foundry

Вы должны иметь возможность использовать все функции портала Azure AI Foundry, включая ввод и исполнение, с ваших локальных клиентских машин.

Веб-приложение

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

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

  1. Создайте частную зону DNS в группе ресурсов.
  2. Добавьте запись DNS. IP-адрес — это частный IP-адрес частной конечной точки для ресурса Azure OpenAI, и вы можете получить IP-адрес из сетевого интерфейса, связанного с частной конечной точкой для Azure OpenAI.
  3. Свяжите частную зону DNS с виртуальной сетью , чтобы веб-приложение, интегрированное в этой виртуальной сети, может использовать эту частную зону DNS.

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

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

Снимок экрана: конфигурация исходящего трафика для веб-приложения.

Использование API

Убедитесь, что учетные данные для входа имеют роль Cognitive Services OpenAI Contributor в ресурсе Azure OpenAI, и сначала выполните az login.

Снимок экрана, показывающий роль участника OpenAI в Cognitive Services в портале Azure.

API загрузки

Дополнительные сведения об объектах запроса и ответа, используемых в API приема, см. в статье справки по API приема.

API для выводов

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

Использование Microsoft Defender для облака

Теперь вы можете интегрировать Microsoft Defender для облака (предварительная версия) с ресурсами Azure для защиты приложений. Microsoft Defender для облака защищает ваши приложения с помощью защиты от угроз для рабочих нагрузок, связанных с ИИ, предоставляя командам обоснованные оповещения системы безопасности, обогащенные сигналами разведки угроз от Microsoft, и позволяет командам укрепить своё положение безопасности с помощью интегрированных рекомендаций по обеспечению безопасности.

Используйте эту форму для подачи заявки на доступ.

Снимок экрана: Microsoft Defender для облака.