Procedimiento para configurar Azure OpenAI Service con autenticación de Microsoft Entra ID
Los escenarios de seguridad más complejos requieren el control de acceso basado en rol de Azure (Azure RBAC). En este documento se explica cómo autenticarse en el recurso Azure OpenAI mediante Microsoft Entra ID.
En las secciones siguientes, usará la CLI de Azure para asignar iniciar sesión y obtener un token de portador para llamar al recurso OpenAI. Si se bloquea, se proporcionan vínculos en cada sección con todas las opciones disponibles para cada comando de Azure Cloud Shell o la CLI de Azure.
Requisitos previos
Una suscripción a Azure: cree una cuenta gratuita.
CLI de Azure: Guía de instalación
Las siguientes bibliotecas de Python: os, requests, json, openai, azure-identity
Asignación de un rol
Asígnese el rol de Usuario de OpenAI de Cognitive Services o Colaborador de OpenAI de Cognitive Services para permitirle usar su cuenta para realizar llamadas a la API de inferencia de Azure OpenAI en lugar de tener que usar la autenticación basada en claves. Después de realizar este cambio, puede tardar hasta 5 minutos antes de que el cambio surta efecto.
Inicio de sesión en la CLI de Azure
Para iniciar sesión en la CLI de Azure, ejecute el siguiente comando y complete el inicio de sesión. Es posible que tenga que volver a hacerlo si la sesión ha estado inactiva durante demasiado tiempo.
az login
Finalizaciones de chat
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)
Consulta de Azure OpenAI con la API del plano de control
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))
Autorización para obtener acceso a identidades administradas
OpenAI admite la autenticación de Microsoft Entra con identidades administradas para los recursos de Azure. Las identidades administradas para recursos de Azure pueden autorizar el acceso a los recursos de servicios de Azure AI con credenciales de Microsoft Entra desde aplicaciones que se ejecutan en máquinas virtuales (VM) de Azure, aplicaciones de función, conjuntos de escalado de máquinas virtuales y otros servicios. Si usa identidades administradas para recursos de Azure junto con autenticación de Microsoft Entra, puede evitar el almacenamiento de credenciales con las aplicaciones que se ejecutan en la nube.
Habilitación de identidades administradas en una máquina virtual
Para poder usar identidades administradas para recursos de Azure a fin de autorizar el acceso los recursos de servicios de Azure AI desde la VM, primero debe habilitar las identidades administradas para los recursos de Azure en la VM. Para aprender a habilitar las identidades administradas para los recursos de Azure, consulte:
- Azure Portal
- Azure PowerShell
- CLI de Azure
- Plantilla de Azure Resource Manager
- Bibliotecas cliente de Azure Resource Manager
Para más información sobre las identidades administradas, consulte Identidades administradas para recursos de Azure.