Проверка подлинности и авторизация доступа к API Azure OpenAI с помощью Управление API Azure

ОБЛАСТЬ ПРИМЕНЕНИЯ: все уровни Управление API

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

  • Проверка подлинности. Проверка подлинности в API OpenAI Azure с помощью политик, которые проходят проверку подлинности с помощью ключа API или управляемого удостоверения Идентификатора Microsoft Entra.

  • Авторизация . Для более точного контроля доступа предварительной проверки подлинности запросов, которые передают маркеры OAuth 2.0, созданные поставщиком удостоверений, например идентификатором Microsoft Entra.

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

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

Перед выполнением действий, описанных в этой статье, необходимо выполнить следующие действия.

  • Экземпляр управления API. Примеры см. в статье "Создание экземпляра Azure Управление API".
  • Ресурс и модель Azure OpenAI, добавленные в экземпляр Управление API. Например, см. инструкции по импорту API OpenAI Azure в качестве REST API.
  • Разрешения на создание регистрации приложения в поставщике удостоверений, например клиента Microsoft Entra, связанного с подпиской Azure (для авторизации OAuth 2.0).

Аутентификация с помощью ключа API

По умолчанию для проверки подлинности в API OpenAI Azure используется ключ API. Для этого типа проверки подлинности все запросы API должны содержать допустимый ключ API в заголовке api-key HTTP.

  • Управление API можно безопасно управлять ключом API с помощью именованного значения.
  • Затем именованное значение можно ссылаться в политике API, чтобы задать api-key заголовок в запросах к API OpenAI Azure. Мы предоставляем два примера того, как это сделать: один использует set-backend-service политику, а другой использует set-header политику.

Хранение ключа API в именованном значении

  1. Получите ключ API из ресурса Azure OpenAI. В портал Azure найдите ключ на странице "Ключи и конечная точка" ресурса Azure OpenAI.
  2. Перейдите к Управление API экземпляру и выберите именованные значения в меню слева.
  3. Выберите +Добавить и добавьте значение в качестве секрета или дополнительно для повышения безопасности используйте ссылку на хранилище ключей.

Передача ключа API в запросах API — политика set-backend-service

  1. Создайте серверную часть , которая указывает на API OpenAI Azure.

    1. В меню слева экземпляра Управление API выберите серверные части.
    2. Выберите +Добавить и введите описательное имя серверной части. Пример: openai-backend.
    3. В разделе " Тип" выберите "Пользовательский" и введите URL-адрес конечной точки Azure OpenAI. Пример: https://contoso.openai.azure.com/openai.
    4. В разделе учетные данные авторизации выберите заголовки и введите ключ API в качестве имени заголовка и именованного значения в качестве значения.
    5. Нажмите кнопку создания.
  2. Добавьте следующий set-backend-service фрагмент политики в inbound раздел политики, чтобы передать ключ API в запросах к API OpenAI Azure.

    В этом примере серверный ресурс открыт серверной частью.

    <set-backend-service backend-id="openai-backend" />
    

Передача ключа API в запросах API — политика набора заголовков

Кроме того, добавьте следующий set-header фрагмент политики в inbound раздел политики, чтобы передать ключ API в запросах к API Azure OpenAI. Этот фрагмент политики задает api-key заголовок с заданным именем значением.

В этом примере именованное значение в Управление API — openai-api-key.

<set-header name="api-key" exists-action="override">
    <value>{{openai-api-key}}</value>
</set-header>

Аутентификация на основе управляемых удостоверений

Альтернативный способ проверки подлинности в API OpenAI Azure с помощью управляемого удостоверения в идентификаторе Microsoft Entra. В фоновом режиме см. сведения о настройке Службы Azure OpenAI с управляемым удостоверением.

Ниже приведены действия по настройке экземпляра Управление API для использования управляемого удостоверения для проверки подлинности запросов к API OpenAI Azure.

  1. Включите управляемое удостоверение, назначаемое системой или назначаемое пользователем, для экземпляра Управление API. В следующем примере предполагается, что вы включили управляемое удостоверение, назначаемое системой, назначаемое системой.

  2. Назначьте управляемое удостоверение роли пользователя OpenAI Cognitive Services, назначаемой соответствующему ресурсу. Например, назначьте управляемое удостоверение , назначаемое системой, роль пользователя OpenAI Cognitive Services в ресурсе Azure OpenAI. Подробные инструкции см. в статье "Управление доступом на основе ролей" для службы Azure OpenAI.

  3. Добавьте следующий фрагмент политики в inbound раздел политики для проверки подлинности запросов к API Azure OpenAI с помощью управляемого удостоверения.

    В этом примере:

    • Политика authentication-managed-identity получает маркер доступа для управляемого удостоверения.
    • Политика set-header задает Authorization заголовок запроса с маркером доступа.
    <authentication-managed-identity resource="https://cognitiveservices.azure.com" output-token-variable-name="managed-id-access-token" ignore-error="false" /> 
    <set-header name="Authorization" exists-action="override"> 
        <value>@("Bearer " + (string)context.Variables["managed-id-access-token"])</value> 
    </set-header> 
    

Авторизация OAuth 2.0 с помощью поставщика удостоверений

Чтобы обеспечить более подробный доступ к API OpenAPI определенными пользователями или клиентами, можно предварительно настроить доступ к API Azure OpenAI с помощью авторизации OAuth 2.0 с идентификатором Microsoft Entra или другим поставщиком удостоверений. Дополнительные сведения см. в статье "Защита API в Azure Управление API с помощью авторизации OAuth 2.0 с идентификатором Microsoft Entra.

Примечание.

Используйте авторизацию OAuth 2.0 в рамках стратегии глубокой защиты. Это не замена проверки подлинности ключа API или проверки подлинности управляемого удостоверения на API OpenAI Azure.

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

  1. Создайте приложение в поставщике удостоверений, чтобы представить API OpenAI в Azure Управление API. Если вы используете идентификатор Microsoft Entra, зарегистрируйте приложение в клиенте Идентификатора Microsoft Entra ID. Запись сведений, таких как идентификатор приложения и универсальный код ресурса (URI) аудитории.

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

  2. inbound Добавьте фрагмент политики в экземпляр Управление API для проверки запросов, которые представляют веб-токен JSON (JWT) в заголовкеAuthorization. Поместите этот фрагмент перед другими inbound политиками, установленными для проверки подлинности в API OpenAI Azure.

    Примечание.

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

    • validate-azure-ad-token . Если вы используете идентификатор Microsoft Entra, настройте validate-azure-ad-token политику для проверки аудитории и утверждений в JWT. Дополнительные сведения см. в справочнике по политике.

      <validate-azure-ad-token tenant-id={{TENANT_ID}} header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid.">
          <client-application-ids>
                  <application-id>{{CLIENT_APP_ID}}</application-id>
          </client-application-ids>
         <audiences>
              <audience>...</audience> 
          </audiences>
          <required-claims>
              <claim name=...>
                  <value>...</value>
              </claim>
          </required-claims>
      </validate-azure-ad-token>
      
    • validate-jwt — если вы используете другой поставщик удостоверений, настройте validate-jwt политику для проверки аудитории и утверждений в JWT. Дополнительные сведения см. в справочнике по политике.

      <validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid.">
          <openid-config url={{OPENID_CONFIGURATION_URL}} />
          <issuers>
              <issuer>{{ISSUER_URL}}</issuer>
          </issuers>
          <audiences>
              <audience>...</audience> 
          </audiences>
          <required-claims>
              <claim name=...>
                  <value>...</value>
              </claim>
          </required-claims>
      </validate-jwt>