Come configurare il servizio Azure OpenAI con l'autenticazione Microsoft Entra ID

Gli scenari di sicurezza più complessi richiedono il controllo degli accessi in base al ruolo di Azure. Questo documento illustra come eseguire l'autenticazione nella risorsa OpenAI di Azure usando Microsoft Entra ID.

Nelle sezioni seguenti si userà l'interfaccia della riga di comando di Azure per accedere e ottenere un token di connessione per chiamare la risorsa OpenAI. In caso di difficoltà, in ogni sezione vengono forniti i collegamenti con tutte le opzioni disponibili per ogni comando in Azure Cloud Shell o nell’interfaccia della riga di comando di Azure.

Prerequisiti

Assegnare il ruolo

Assegnare a se stessi il ruolo Utente OpenAI di Servizi cognitivi o ruolo di Collaboratore OpenAI di Servizi cognitivi per consentire di usare l'account per effettuare chiamate API di inferenza OpenAI di Azure invece di dover usare l'autenticazione basata su chiave. Dopo aver apportato questa modifica, possono essere necessari fino a 5 minuti prima che la modifica venga applicata.

Accedere all'interfaccia della riga di comando di Azure

Per accedere all'interfaccia della riga di comando di Azure, eseguire il comando seguente e completare la procedura di accesso. Se la sessione è rimasta inattiva per troppo tempo, potrebbe essere necessario eseguire di nuovo questa operazione.

az login

Completamenti delle 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)

Esecuzione di query su OpenAI di Azure con l'API del piano di controllo

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

Autorizzare l'accesso alle identità gestite

OpenAI supporta l'autenticazione di Microsoft Entra con identità gestite per le risorse di Azure. Le identità gestite per le risorse di Azure possono autorizzare l'accesso alle risorse di Servizi di Intelligenza Artificiale di Azure usando le credenziali di Microsoft Entra dalle applicazioni in esecuzione in macchine virtuali di Azure, app per le funzioni, set di scalabilità di macchine virtuali e altri servizi. Usando le identità gestite per le risorse di Azure insieme all'autenticazione di Microsoft Entra, è possibile evitare di archiviare le credenziali con le applicazioni eseguite nel cloud.

Abilitare le identità gestite su una macchina virtuale

Prima di poter usare le identità gestite per le risorse di Azure per autorizzare l'accesso alle risorse di Servizi di Azure AI dalla macchina virtuale, è necessario abilitare le identità gestite per le risorse di Azure nella macchina virtuale. Per informazioni su come abilitare le identità gestite per le risorse di Azure, vedere:

Per altre informazioni sulle identità gestite, vedere Identità gestite per le risorse di Azure.