Autenticação e autorização dos serviços de IA do Azure usando o .NET
As solicitações de aplicativo para os Serviços de IA do Azure devem ser autenticadas. Neste artigo, você explorará as opções disponíveis para autenticar no OpenAI do Azure e em outros serviços de IA usando o .NET. Esses conceitos se aplicam ao SDK do Kernel Semântico, bem como SDKs de serviços específicos, como o OpenAI do Azure. A maioria dos serviços de IA oferece duas maneiras principais de autenticar aplicativos e usuários:
- A autenticação baseada em chave fornece acesso a um serviço do Azure usando valores de chave secreta. Esses valores secretos às vezes são conhecidos como chaves de API ou chaves de acesso, dependendo do serviço.
- O Microsoft Entra ID fornece uma solução abrangente de gerenciamento de identidade e acesso para garantir que as identidades corretas tenham o nível correto de acesso a diferentes recursos do Azure.
As seções adiante fornecem visões gerais conceituais para essas duas abordagens, em vez de etapas de implementação detalhadas. Para obter informações mais detalhadas sobre como se conectar aos serviços do Azure, visite os seguintes recursos:
- Autenticar aplicativos .NET nos serviços do Azure
- Conceitos básicos de identidade
- O que é o Azure RBAC?
Observação
Os exemplos neste artigo se concentram principalmente em conexões com o OpenAI do Azure, mas os mesmos conceitos e etapas de implementação se aplicam diretamente a muitos outros serviços de IA do Azure também.
Autenticação usando chaves
As chaves de acesso permitem que aplicativos e ferramentas se autentiquem em um serviço de IA do Azure, como o OpenAI do Azure, usando uma chave secreta fornecida pelo serviço. Recupere a chave secreta usando ferramentas como o portal do Azure ou a CLI do Azure e use-a para configurar o código do aplicativo para se conectar ao serviço de IA:
builder.Services.AddAzureOpenAIChatCompletion(
"deployment-model",
"service-endpoint",
"service-key"); // Secret key
var kernel = builder.Build();
Usar chaves é uma opção simples, mas essa abordagem deve ser usada com cautela. As chaves não são a opção de autenticação recomendada porque elas:
- Não seguem o princípio de privilégios mínimos. Elas fornecem permissões elevadas, independentemente de quem as usa ou para qual tarefa.
- Podem ser acionadas acidentalmente no controle do código-fonte ou armazenadas em locais não seguros.
- Podem ser facilmente compartilhadas ou enviadas para partes que não devem ter acesso.
- Geralmente, exigem administração e rotação manuais.
Em vez disso, considere usar o Microsoft Entra ID para autenticação, que é a solução recomendada para a maioria dos cenários.
Autenticação usando o Microsoft Entra ID
O Microsoft Entra ID é um serviço de gerenciamento de acesso e identidade baseado em nuvem que fornece um vasto conjunto de recursos para diferentes cenários de negócios e aplicativos. O Microsoft Entra ID é a solução recomendada para se conectar ao OpenAI do Azure e a outros serviços de IA e oferece os seguintes benefícios:
- Autenticação sem chave usando identidades.
- RBAC (controle de acesso baseado em função) para atribuir às identidades as permissões mínimas necessárias.
- Pode usar a biblioteca de clientes
Azure.Identity
para detectar credenciais diferentes entre ambientes sem exigir alterações de código. - Lida automaticamente com tarefas de manutenção administrativa, como girar chaves subjacentes.
O fluxo de trabalho para implementar a autenticação do Microsoft Entra em seu aplicativo geralmente inclui o seguinte:
Desenvolvimento local:
- Entre no Azure usando uma ferramenta de desenvolvimento local, como a CLI do Azure ou o Visual Studio.
- Configure seu código para usar a biblioteca do cliente
Azure.Identity
e a classeDefaultAzureCredential
. - Atribua funções do Azure à conta com a qual você entrou para habilitar o acesso ao serviço de IA.
Aplicativo hospedado no Azure:
- Implante o aplicativo no Azure depois de configurá-lo para autenticar usando a biblioteca de clientes
Azure.Identity
. - Atribua uma identidade gerenciada ao aplicativo hospedado pelo Azure.
- Atribua funções do Azure à identidade gerenciada para habilitar o acesso ao serviço de IA.
- Implante o aplicativo no Azure depois de configurá-lo para autenticar usando a biblioteca de clientes
Os principais conceitos desse fluxo de trabalho são explorados nas seções a seguir.
Autenticar no Azure localmente
Ao desenvolver aplicativos localmente que se conectam aos serviços de IA do Azure, autentique-se no Azure usando uma ferramenta como o Visual Studio ou a CLI do Azure. Suas credenciais locais podem ser descobertas pela biblioteca de clientes Azure.Identity
e usadas para autenticar seu aplicativo nos serviços do Azure, conforme descrito na seção Configurar o código do aplicativo.
Por exemplo, para autenticar no Azure localmente usando a CLI do Azure, execute o seguinte comando:
az login
Configurar o código do aplicativo
Use a biblioteca de clientes Azure.Identity
do SDK do Azure para implementar a autenticação do Microsoft Entra em seu código. As bibliotecas Azure.Identity
incluem a classe DefaultAzureCredential
, que descobre automaticamente as credenciais disponíveis do Azure com base no ambiente atual e nas ferramentas disponíveis. Visite a documentação do SDK do Azure para .NET para obter o conjunto completo de credenciais de ambiente com suporte e a ordem na qual elas são pesquisadas.
Por exemplo, configure o Kernel Semântico para autenticação usando DefaultAzureCredential
com o seguinte código:
Kernel kernel = Kernel
.CreateBuilder()
.AddAzureOpenAITextGeneration(
"your-model",
"your-endpoint",
new DefaultAzureCredential())
.Build();
DefaultAzureCredential
permite que os aplicativos sejam promovidos do desenvolvimento local para a produção sem alterações de código. Por exemplo, durante o desenvolvimento DefaultAzureCredential
usa suas credenciais de usuário local do Visual Studio ou da CLI do Azure para autenticar no serviço de IA. Quando o aplicativo é implantado no Azure, DefaultAzureCredential
usa a identidade gerenciada atribuída ao seu aplicativo.
Atribuir funções à sua identidade
O RBAC (controle de acesso baseado em função) do Azure é um sistema que fornece gerenciamento de acesso refinado de recursos do Azure. Atribua uma função à entidade de segurança usada por DefaultAzureCredential
para se conectar a um serviço de IA do Azure, seja um usuário individual, um grupo, uma entidade de serviço ou uma identidade gerenciada. As funções do Azure são uma coleção de permissões que permitem que a identidade execute várias tarefas, como gerar conclusões ou criar e excluir recursos.
Atribua funções como Usuário OpenAI dos Serviços Cognitivos (ID da função:5e0bd9bd-7b93-4f28-af87-19fc36ad61bd
) à identidade relevante usando ferramentas como a CLI do Azure, o Bicep ou o Portal do Azure. Por exemplo, use o comando az role assignment create
para atribuir uma função usando a CLI do Azure:
az role assignment create \
--role "5e0bd9bd-7b93-4f28-af87-19fc36ad61bd" \
--assignee-object-id "$PRINCIPAL_ID" \
--scope /subscriptions/"$SUBSCRIPTION_ID"/resourceGroups/"$RESOURCE_GROUP" \
--assignee-principal-type User
Saiba mais sobre o RBAC do Azure usando os seguintes recursos:
Atribuir uma identidade gerenciada ao seu aplicativo
Na maioria dos cenários, os aplicativos hospedados no Azure devem usar uma identidade gerenciada para se conectar a outros serviços, como o OpenAI do Azure. As identidades gerenciadas fornecem uma identidade totalmente gerenciada no Microsoft Entra ID para que os aplicativos usem ao se conectar a recursos que dão suporte à autenticação do Microsoft Entra. DefaultAzureCredential
descobre a identidade associada ao seu aplicativo e a usa para se autenticar em outros serviços do Azure.
Há dois tipos de identidades gerenciadas que você pode atribuir ao seu aplicativo:
- Uma identidade atribuída pelo sistema é vinculada ao seu aplicativo e é excluída se o seu aplicativo for excluído. Um aplicativo só pode ter uma identidade atribuída pelo sistema.
- Uma identidade atribuída pelo usuário é um recurso independente do Azure que pode ser atribuído ao seu aplicativo. Um aplicativo pode ter várias identidades atribuídas pelo usuário.
Atribua funções a uma identidade gerenciada da mesma forma que você faria com uma conta de usuário individual, como a função de usuário OpenAI dos Serviços Cognitivos. saiba mais sobre como trabalhar com identidades gerenciadas usando os seguintes recursos: