Guide pratique pour configurer Azure OpenAI Service avec des identités managées

Les scénarios de sécurité plus complexes nécessitent un contrôle d’accès en fonction du rôle Azure (Azure RBAC). Ce document explique comment s'authentifier auprès de votre ressource OpenAI à l'aide de Microsoft Entra ID.

Dans les sections suivantes, vous allez utiliser Azure CLI pour vous connecter et obtenir un jeton du porteur pour appeler la ressource OpenAI. Si vous êtes bloqué, des liens sont fournis dans chaque section avec toutes les options disponibles pour chaque commande dans Azure Cloud Shell/Azure CLI.

Prérequis

Attribuez-vous-même le rôle d’utilisateur Cognitive Services

Attribuez-vous le rôle utilisateur Cognitive Services OpenAI ou le rôle contributeur Cognitive Services OpenAI pour vous permettre d’utiliser votre compte pour effectuer des appels d’API d’inférence Azure OpenAI plutôt que d’utiliser l’authentification basée sur une clé. Une fois cette modification effectuée, la modification peut prendre jusqu’à 5 minutes avant que la modification ne prenne effet.

Se connecter à l’interface Azure CLI

Pour vous connecter à Azure CLI, exécutez la commande suivante et terminez la connexion. Vous devrez peut-être le faire à nouveau si votre session a été inactive depuis trop longtemps.

az login

Complétions de conversation

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)

Interrogation d’Azure OpenAI avec l’API de plan de contrôle

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

Autoriser l'accès aux identités managées

OpenAI prend en charge l'authentification Microsoft Entra avec des identités managées pour les ressources Azure. Les identités managées pour les ressources Azure peuvent autoriser l’accès aux ressources des services Azure AI à l’aide des informations d’identification Microsoft Entra à partir d’applications exécutées sur des machines virtuelles (VM) Azure, des applications de fonction, des groupes de machines virtuelles identiques et d’autres services. En utilisant des identités managées pour les ressources Azure avec l'authentification Microsoft Entra, vous pouvez éviter de stocker des informations d'identification avec vos applications qui s'exécutent dans le cloud.

Activer les identités managées sur une machine virtuelle

Avant de pouvoir utiliser les identités managées pour les ressources Azure en vue d’autoriser les ressources Azure AI services depuis votre machine virtuelle, vous devez activer les identités managées pour les ressources Azure sur la machine virtuelle. Pour savoir comment activer des identités managées pour ressources Azure, consultez :

Pour plus d’informations sur les identités managées, consultez Identités managées pour les ressources Azure.