Проверка подлинности и авторизация доступа к 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 в именованном значении
- Получите ключ API из ресурса Azure OpenAI. В портал Azure найдите ключ на странице "Ключи и конечная точка" ресурса Azure OpenAI.
- Перейдите к Управление API экземпляру и выберите именованные значения в меню слева.
- Выберите +Добавить и добавьте значение в качестве секрета или дополнительно для повышения безопасности используйте ссылку на хранилище ключей.
Передача ключа API в запросах API — политика set-backend-service
Создайте серверную часть , которая указывает на API OpenAI Azure.
- В меню слева экземпляра Управление API выберите серверные части.
- Выберите +Добавить и введите описательное имя серверной части. Пример: openai-backend.
- В разделе " Тип" выберите "Пользовательский" и введите URL-адрес конечной точки Azure OpenAI. Пример:
https://contoso.openai.azure.com/openai
. - В разделе учетные данные авторизации выберите заголовки и введите ключ API в качестве имени заголовка и именованного значения в качестве значения.
- Нажмите кнопку создания.
Добавьте следующий
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.
Включите управляемое удостоверение, назначаемое системой или назначаемое пользователем, для экземпляра Управление API. В следующем примере предполагается, что вы включили управляемое удостоверение, назначаемое системой, назначаемое системой.
Назначьте управляемое удостоверение роли пользователя OpenAI Cognitive Services, назначаемой соответствующему ресурсу. Например, назначьте управляемое удостоверение , назначаемое системой, роль пользователя OpenAI Cognitive Services в ресурсе Azure OpenAI. Подробные инструкции см. в статье "Управление доступом на основе ролей" для службы Azure OpenAI.
Добавьте следующий фрагмент политики в
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 пользователям или приложениям, авторизованным с помощью поставщика удостоверений.
Создайте приложение в поставщике удостоверений, чтобы представить API OpenAI в Azure Управление API. Если вы используете идентификатор Microsoft Entra, зарегистрируйте приложение в клиенте Идентификатора Microsoft Entra ID. Запись сведений, таких как идентификатор приложения и универсальный код ресурса (URI) аудитории.
При необходимости настройте приложение для получения ролей или областей, представляющих точные разрешения, необходимые для доступа к API OpenAI Azure.
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>