As solicitações de aplicativo para a maioria dos serviços do Azure devem ser autenticadas com chaves ou conexões sem senha. Os desenvolvedores devem ser diligentes para nunca expor as chaves em um local não seguro. Qualquer pessoa que obtenha acesso à chave será capaz de se autenticar no serviço. A autenticação sem chave oferece vantagens de segurança e gerenciamento aprimorados com relação à chave de conta porque não há nenhuma chave (nem cadeia de conexão) para armazenar.
As conexões sem chave estão habilitadas com as seguintes etapas:
Configure sua autenticação.
Defina as variáveis de ambiente, conforme necessário.
Use um tipo de credencial de biblioteca de identidade do Azure para criar um objeto de cliente OpenAI do Azure.
Autenticação
A autenticação na ID do Microsoft Entra é necessária para usar as bibliotecas de cliente do Azure.
A autenticação difere com base no ambiente em que o aplicativo está sendo executado:
Use o link a seguir para explorar o modelo de IA do Building Block Keyless do OpenAI do Azure. Este modelo provisiona uma conta OpenAI do Azure com sua permissão de função RBAC de conta de usuário para autenticação sem chave (Microsoft Entra) para acessar os SDKs da API OpenAI.
Observação
Este artigo usa um ou mais modelos de aplicativo de IA como base para os exemplos e as diretrizes no artigo. Os modelos de aplicativo de IA fornecem implementações de referência regulares e fáceis de implantar que ajudam a garantir um ponto de partida de alta qualidade para os aplicativos de IA.
Para desenvolvimento local, para obter sua própria ID de identidade, use o comando a seguir. Você precisa entrar com az login antes de usar este comando.
az ad signed-in-user show \
--query id -o tsv
Para desenvolvimento local, para obter sua própria ID de identidade, use o comando a seguir. Você precisa entrar com Connect-AzAccount antes de usar este comando.
Ao usar o Bicep implantado com a CLI do Desenvolvedor do Azure, a identidade da pessoa ou do serviço que executa a implantação é definida como o parâmetro principalId.
A variável a seguir main.parameters.json é definida como a identidade que executa o processo.
Para uso no Azure, especifique uma identidade gerenciada atribuída pelo usuário como parte do processo de implantação do Bicep. Crie uma identidade gerenciada atribuída pelo usuário separada da identidade que executa o processo.
Para conceder suas permissões de identidade ao recurso por meio do RBAC, atribua uma função usando o comando da CLI do Azure az role assignment create.
az role assignment create \
--role "Cognitive Services OpenAI User" \
--assignee "<identity-id>" \
--scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>"
Para conceder permissões de aplicativo ao recurso OpenAI do Azure por meio do RBAC, atribua uma função usando o cmdlet New-AzRoleAssignment do Azure PowerShell.
Use o seguinte modelo do OpenAI Bicep do Azure para criar o recurso e definir a autenticação para o identityId. O Bicep requer a ID da função. O name mostrado nesse snippet do Bicep não é a função do Azure; é específico para a implantação do Bicep.
A biblioteca de Identidades do Azure DefaultAzureCredential permite que o cliente execute o mesmo código no ambiente de desenvolvimento local e na Nuvem do Azure.
Para obter mais informações sobre DefaultAzureCredential para .NET, consulte a visão geral DefaultAzureCredential.
Siga uma destas abordagens para configurar a ID de cliente da identidade gerenciada atribuída pelo usuário:
Definir variável de ambiente AZURE_CLIENT_ID. O construtor sem parâmetros de DefaultAzureCredential usará o valor dessa variável de ambiente, se presente.
using Azure;
using Azure.AI.OpenAI;
using Azure.Identity;
using System;
using static System.Environment;
string endpoint = GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
OpenAIClient client = new(new Uri(endpoint), new DefaultAzureCredential());
using Azure;
using Azure.AI.OpenAI;
using Azure.Identity;
using System;
using static System.Environment;
string endpoint = GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
var credential = new DefaultAzureCredential(
new DefaultAzureCredentialOptions
{
ManagedIdentityClientId = "<user_assigned_client_id>"
});
OpenAIClient client = new(new Uri(endpoint), credential);
Para obter mais informações sobre DefaultAzureCredential para Go, consulte a visão geral DefaultAzureCredential.
Para obter mais informações sobre DefaultAzureCredential para Java, consulte a visão geral DefaultAzureCredential.
Siga uma destas abordagens para configurar a ID de cliente da identidade gerenciada atribuída pelo usuário:
Definir variável de ambiente AZURE_CLIENT_ID. O construtor sem parâmetros de DefaultAzureCredential usará o valor dessa variável de ambiente, se presente.
Atribua uma identidade gerenciada específica atribuída pelo usuário com DefaultAzureCredential usando o DefaultAzureCredentialBuilder para configurá-la com uma ID do cliente:
Para obter mais informações sobre DefaultAzureCredential para JavaScript, consulte a visão geral DefaultAzureCredential.
Siga uma destas abordagens para configurar a ID de cliente da identidade gerenciada atribuída pelo usuário:
Definir variável de ambiente AZURE_CLIENT_ID. O construtor sem parâmetros de DefaultAzureCredential usará o valor dessa variável de ambiente, se presente.
Atribua uma identidade gerenciada específica atribuída pelo usuário com DefaultAzureCredential usando o parâmetro managedIdentityClientId para configurá-la com uma ID do cliente:
Para obter mais informações sobre DefaultAzureCredential para Python, consulte a visão geral DefaultAzureCredential.
Siga uma destas abordagens para configurar a ID de cliente da identidade gerenciada atribuída pelo usuário:
Definir variável de ambiente AZURE_CLIENT_ID. O construtor sem parâmetros de DefaultAzureCredential usará o valor dessa variável de ambiente, se presente.
Atribua uma identidade gerenciada específica atribuída pelo usuário com DefaultAzureCredential usando o parâmetro managed_identity_client_id para configurá-la com uma ID do cliente: