Como configurar o Serviço OpenAI do Azure com identidades gerenciadas

Cenários de segurança mais complexos exigem o RBAC (controle de acesso baseado em função) do Azure. Este documento aborda como autenticar em seu recurso OpenAI usando a Microsoft Entra ID.

Nas seções a seguir, você usará a CLI do Azure para entrar e para obter um token de portador para chamar o recurso do OpenAI. Se você ficar paralisado, links são fornecidos em cada seção com todas as opções disponíveis para cada comando no Azure Cloud Shell / CLI do Azure.

Pré-requisitos

Atribuir a si mesmo a função de usuário dos Serviços Cognitivos

Atribua a si mesmo a função de Usuário do OpenAI de Serviços Cognitivos ou Colaborador de OpenAI dos Serviços Cognitivos para permitir que você use sua conta para fazer chamadas à API de inferência de OpenAI do Azure em vez de ter que usar autenticação baseada em chave. Depois de fazer essa alteração, a alteração pode levar até 5 minutos para entrar em vigor.

Entrar na CLI do Azure

Para entrar na CLI do Azure, execute o comando a seguir e conclua a entrada. Pode ser necessário fazer isso novamente, caso a sessão tenha ficado ociosa por muito tempo.

az login

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

Consultando a OpenAI do Azure com a API do painel de controle

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

Autorizar o acesso a identidades gerenciadas

O OpenAI dá suporte à autenticação do Microsoft Entra com identidades gerenciadas para recursos do Azure. As identidades gerenciadas para recursos do Azure podem autorizar o acesso aos recursos dos serviços de IA do Azure usando credenciais do Microsoft Entra de aplicativos em execução em VMs (máquinas virtuais) do Azure, aplicativos de funções, conjuntos de dimensionamento de máquinas virtuais e outros serviços. Usando identidades gerenciadas para recursos do Azure junto com a autenticação do Microsoft Entra, você pode evitar armazenar credenciais com seus aplicativos executados na nuvem.

Habilitar identidades gerenciadas em uma VM

Antes de poder usar identidades gerenciadas para recursos do Azure para autorizar o acesso aos recursos de serviços de IA do Azure de sua VM, você deve habilitar identidades gerenciadas para recursos do Azure na VM. Para saber como habilitar identidades gerenciadas para Recursos do Azure, consulte:

Para saber mais sobre identidades gerenciadas, confira identidades gerenciadas para recursos do Azure.