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 pode autenticar-se no serviço. A autenticação sem chave oferece benefícios aprimorados de gerenciamento e segurança em relação à chave da conta, pois não há nenhuma chave (ou cadeia de conexão) para armazenar.
As conexões sem chave são habilitadas com as seguintes etapas:
Configure sua autenticação.
Defina variáveis de ambiente, conforme necessário.
Use um tipo de credencial de biblioteca de Identidade do Azure para criar um objeto de cliente do Azure OpenAI.
Autenticação
A autenticação para o Microsoft Entra ID é 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 Azure OpenAI Keyless Building Block AI. Este modelo provisiona uma conta do Azure OpenAI com sua permissão de função RBAC da conta de usuário para autenticação sem chave (Microsoft Entra) para acessar os SDKs da API OpenAI.
Nota
Este artigo usa um ou mais modelos de aplicativo de IA como base para os exemplos e orientações no artigo. Os modelos de aplicativos de IA fornecem implementações de referência bem mantidas e fáceis de implantar que ajudam a garantir um ponto de partida de alta qualidade para seus aplicativos de IA.
Encontre a função para seu uso do Azure OpenAI. Dependendo de como você pretende definir essa função, você precisa do nome ou da ID.
Nome da função
ID da função
Para a CLI do Azure ou o Azure PowerShell, você pode usar o nome da função.
Para o Bicep, você precisa do ID da função.
Use a tabela a seguir para selecionar uma função e um ID.
Caso de utilização
Nome da função
ID da função
Assistants
Cognitive Services OpenAI Contributor
a001fd3d-188f-4b5d-821b-7da978bf7442
Conclusão do chat
Cognitive Services OpenAI User
5e0bd9bd-7b93-4f28-af87-19fc36ad61bd
Selecione um tipo de identidade a ser usado.
Identidade pessoal: esta é a sua identidade pessoal associada ao seu início de sessão no Azure.
Identidade gerenciada: essa é uma identidade gerenciada e criada para uso no Azure. Para identidade gerenciada, crie uma identidade gerenciada atribuída pelo usuário. Ao criar a identidade gerenciada, você precisa do Client ID, também conhecido como app ID.
Para encontrar sua identidade pessoal, use um dos seguintes comandos. Use o ID como o <identity-id> na próxima etapa.
Para o desenvolvimento local, para obter seu próprio ID de identidade, use o seguinte comando. Você precisa entrar com az login antes de usar este comando.
az ad signed-in-user show \
--query id -o tsv
Para o desenvolvimento local, para obter seu próprio ID de identidade, use o seguinte comando. 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 serviço que executa a implantação é definida como o principalId parâmetro.
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 seu recurso por meio do RBAC, atribua uma função usando o comando az role assignment create da CLI do Azure.
az role assignment create \
--role "Cognitive Services OpenAI User" \
--assignee "<identity-id>" \
--scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>"
Para conceder permissões ao seu aplicativo para seu recurso do Azure OpenAI por meio do RBAC, atribua uma função usando o cmdlet New-AzRoleAssignment do Azure PowerShell.
Use o seguinte modelo do Azure OpenAI Bicep para criar o recurso e definir a autenticação para o identityId. O bíceps requer o ID da função. O name mostrado neste trecho do Bicep não é a função do Azure, é específica para a implantação do Bicep.
A biblioteca de Identidade do DefaultAzureCredential Azure permite que o cliente execute o mesmo código no ambiente de desenvolvimento local e na Nuvem do Azure.
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());