Come configurare il servizio Azure OpenAI con identità gestite

Gli scenari di sicurezza più complessi richiedono il controllo degli accessi in base al ruolo di Azure. Questo documento illustra come eseguire l'autenticazione alla risorsa OpenAI 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. Se ci si blocca, i collegamenti vengono forniti in ogni sezione con tutte le opzioni disponibili per ogni comando in Azure Cloud Shell/interfaccia della riga di comando di Azure.

Prerequisiti

Assegnare se stessi al ruolo utente di Servizi cognitivi

Assegnare a se stessi il ruolo Di collaboratore OpenAI Di Servizi cognitivi o 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 l'accesso. Potrebbe essere necessario eseguire di nuovo questa operazione se la sessione è stata inattiva per troppo tempo.

az login

Completamento 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 dei 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 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 dei servizi di intelligenza artificiale di Azure 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.