Configuración de Azure OpenAI Service con identidades administradas

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 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

Asignación personal al rol de usuario de Cognitive Services

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:

Para más información sobre las identidades administradas, consulte Identidades administradas para recursos de Azure.