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


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

Используйте эту статью, чтобы узнать, как безопасно использовать 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 ИИ для поиска векторов.

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

Примечание.

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

Azure OpenAI On Your Data позволяет ограничить документы, которые можно использовать в ответах для разных пользователей с фильтрами безопасности поиска Azure. При включении доступа на уровне документов результаты поиска, возвращаемые из поиска ИИ Azure и используемые для создания ответа, будут обрезаны на основе членства в группе 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. Например:

{
    "messages": [
        {
            "role": "user",
            "content": "who is my manager?"
        }
    ],
    "dataSources": [
        {
            "type": "AzureCognitiveSearch",
            "parameters": {
                "endpoint": "'$AZURE_AI_SEARCH_ENDPOINT'",
                "key": "'$AZURE_AI_SEARCH_API_KEY'",
                "indexName": "'$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-адреса служб являются динамическими.

Совет

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

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

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

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

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

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

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

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

Обратите внимание, что управляемая корпорацией Майкрософт виртуальная сеть создана корпорацией Майкрософт, и ее невозможно увидеть. Управляемая корпорацией Майкрософт виртуальная сеть используется Azure OpenAI для безопасного доступа к поиску ИИ Azure.

Настройка Azure OpenAI

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

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

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

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

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


"identity": {
  "principalId": "12345678-abcd-1234-5678-abc123def",
  "tenantId": "1234567-abcd-1234-1234-abcd1234",
  "type": "SystemAssigned, UserAssigned", 
  "userAssignedIdentities": {
    "/subscriptions/1234-5678-abcd-1234-1234abcd/resourceGroups/my-resource-group",
    "principalId": "12345678-abcd-1234-5678-abcdefg1234", 
    "clientId": "12345678-abcd-efgh-1234-12345678"
  }
}

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

Чтобы разрешить поиску ИИ 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.

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

"disableLocalAuth": false,
"authOptions": { 
    "aadOrApiKey": { 
        "aadAuthFailureMode": "http401WithBearerChallenge"
    }
}

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

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

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

Примечание.

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

Снимок экрана: экран утверждения частной конечной точки.

Ресурс частной конечной точки подготавливается в управляемом клиенте Майкрософт, а связанный ресурс находится в вашем клиенте. Вы не можете получить доступ к ресурсу частной конечной точки, щелкнув ссылку частной конечной точки (синим шрифтом) на вкладке "Закрытый доступ" на странице "Сеть". Вместо этого щелкните в другом месте строки, а затем нажмите кнопку "Утвердить " выше.

Дополнительные сведения о рабочем процессе утверждения вручную.

Совет

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

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

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

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

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

Созданная вами общая частная ссылка поиска ИИ Azure также находится в управляемой виртуальной сети Майкрософт, а не в виртуальной сети. Разница по сравнению с другой управляемой частной конечной точкой, созданной ранее, заключается в том, что управляемая частная [1] конечная точка [2] из Azure OpenAI в Службу поиска Azure подготавливается через портал Azure или REST API службы поиска Azure.

Схема, на которой показана архитектура виртуальной сети с ресурсом поиска 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 Contributor Поиск с использованием ИИ Azure Учетная запись хранения Считывает большой двоичный объект и записывает хранилище знаний.

В приведенной выше таблице означает, 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.

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

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