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


Безопасное использование Azure OpenAI в данных

Примечание.

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

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

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

Эта статья применима только при использовании Azure OpenAI On Your Data с текстом. Он не применяется к Azure OpenAI On Your Data с изображениями.

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

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

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

  • Шаги 1 и 2 используются только для отправки файлов.
  • Скачивание URL-адресов в хранилище BLOB-объектов не показано на этой схеме. После скачивания веб-страниц из Интернета и отправки в хранилище BLOB-объектов шаги 3 будут одинаковыми.
  • Два индексаторов, два индекса, два источника данных и пользовательский навык создаются в ресурсе поиска ИИ Azure.
  • Контейнер блоков создается в хранилище BLOB-объектов.
  • Если расписание активирует прием, процесс приема начинается с шага 7.
  • API Azure OpenAI реализует протокол веб-API поиска ИИ preprocessing-jobs Azure и обрабатывает документы в очереди.
  • Azure OpenAI:
    1. Внутренне использует первый индексатор, созданный ранее, для взлома документов.
    2. Использует алгоритм на основе эвристики для выполнения фрагментирования. Он учитывает макеты таблиц и другие элементы форматирования в границе блока, чтобы обеспечить оптимальное качество блокирования.
    3. Если вы решили включить векторный поиск, Azure OpenAI использует выбранный параметр внедрения для векторизации блоков.
  • Когда обрабатываются все данные, отслеживаемые службой, Azure OpenAI активирует второй индексатор.
  • Индексатор сохраняет обработанные данные в служба ИИ Azure.

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

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

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

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

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

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

Примечание.

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

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 OpenAI Studio. В разделе сопоставления полей индекса можно сопоставить ноль или одно значение с полем разрешенных групп, если схема совместима. Если поле разрешенных групп не сопоставлено, доступ на уровне документа отключен.

Студия Azure OpenAI

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

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

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

API

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

Внимание

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

Дополнительные сведения о безопасности служб ИИ см. в статье "Проверка подлинности запросов к службам ИИ 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, необходимо назначить управляемое удостоверение для службы 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 вызывать Azure OpenAI в качестве пользовательского веб-API навыка, в то время как Azure OpenAI не имеет доступа к общедоступной сети, необходимо настроить Azure OpenAI preprocessing-jobs для обхода Службы поиска ИИ Azure в качестве доверенной службы на основе управляемого удостоверения. Azure OpenAI определяет трафик из поиска ИИ Azure, проверяя утверждения в веб-токене JSON (JWT). Поиск по искусственному интеллекту Azure должен использовать проверку подлинности управляемого удостоверения, назначаемую системой, для вызова пользовательского веб-API навыка.

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

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

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

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

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

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

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

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

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

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

Так как Azure OpenAI использует управляемое удостоверение для доступа к поиску ИИ Azure, необходимо включить управление доступом на основе ролей в поиске ИИ Azure. Чтобы сделать это на портал Azure, выберите управление доступом на основе ролей на вкладке "Ключи" в портал Azure.

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

Дополнительные сведения см. в статье RBAC поиска ИИ Azure.

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

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

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

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

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

Перейдите на сетевую вкладку ресурса поиска. При отключенном доступе к общедоступной сети выберите разрешить службам 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 OpenAI Studio, необходимо создать подключения к частной конечной точке, которые подключаются к хранилищу BLOB-объектов.

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

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

Роль Уполномоченный Ресурс Description
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 Пользовательский навык.
Storage Blob Data Reader Поиск с использованием ИИ Azure Учетная запись хранения Считывает большие двоичные объекты документов и блок-объекты.
Cognitive Services OpenAI User Веб-приложение Azure OpenAI Вывод.

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

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

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

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

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

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

Чтобы получить доступ к службе 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 OpenAI

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

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

Веб-приложение взаимодействует с ресурсом 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 OpenAI Studio выберите то же расположение с виртуальной сетью и выберите соответствующий номер 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 Defender для облака.