Настройка Службы Azure OpenAI с управляемыми удостоверениями

Для более сложных сценариев обеспечения безопасности требуется управление доступом на основе ролей Azure (Azure RBAC). В этом документе описывается проверка подлинности в ресурсе OpenAI с помощью идентификатора Microsoft Entra.

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

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

Назначение себе роли пользователя Cognitive Services

Назначьте себе роль участника OpenAI Или Cognitive Services OpenAI,чтобы разрешить использовать свою учетную запись для вызова API вывода Azure OpenAI , а не использовать проверку подлинности на основе ключей. После внесения этого изменения может потребоваться до 5 минут, прежде чем изменения вступает в силу.

Вход в Azure CLI

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

az login

Завершение чата

from azure.identity import DefaultAzureCredential, get_bearer_token_provider
from openai import AzureOpenAI

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAI(
    api_version="2024-02-15-preview",
    azure_endpoint="https://{your-custom-endpoint}.openai.azure.com/",
    azure_ad_token_provider=token_provider
)

response = client.chat.completions.create(
    model="gpt-35-turbo-0125", # model = "deployment_name".
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},
        {"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."},
        {"role": "user", "content": "Do other Azure AI services support this too?"}
    ]
)

print(response.choices[0].message.content)

Запрос Azure OpenAI с помощью API плоскости управления

import requests
import json
from azure.identity import DefaultAzureCredential

region = "eastus"
token_credential = DefaultAzureCredential()
subscriptionId = "{YOUR-SUBSCRIPTION-ID}" 


token = token_credential.get_token('https://management.azure.com/.default')
headers = {'Authorization': 'Bearer ' + token.token}

url = f"https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.CognitiveServices/locations/{region}/models?api-version=2023-05-01"

response = requests.get(url, headers=headers)

data = json.loads(response.text)

print(json.dumps(data, indent=4))

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

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

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

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

Дополнительные сведения об управляемых удостоверениях см. в статье Управляемые удостоверения для ресурсов Azure.