Partilhar via


Autenticação e autorização das ferramentas Foundry usando .NET

Os pedidos de aplicação para as ferramentas Microsoft Foundry devem ser autenticados. Neste artigo, explora as opções disponíveis para autenticar no Azure OpenAI e outras ferramentas Foundry usando .NET. A maioria das ferramentas Foundry oferece duas formas principais de autenticar aplicações e utilizadores:

  • A autenticação baseada em chave fornece acesso a um serviço do Azure usando valores de chave secretos. 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 à frente 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:

Nota

Os exemplos deste artigo focam-se principalmente nas ligações ao Azure OpenAI, mas os mesmos conceitos e passos de implementação aplicam-se diretamente a muitas outras ferramentas do Foundry.

Autenticação usando chaves

As chaves de acesso permitem que aplicações e ferramentas se autentiquem numa ferramenta Foundry, como o Azure OpenAI, usando uma chave secreta fornecida pelo serviço. Recupera a chave secreta usando ferramentas como o portal Azure ou Azure CLI e usa-a para configurar o código da tua aplicação para se ligar à ferramenta Foundry:

builder.Services.AddAzureOpenAIChatCompletion(
    "deployment-model",
    "service-endpoint",
    "service-key"); // Secret key
var kernel = builder.Build();

As chaves são simples de usar, mas trate-as com cautela. As chaves não são a opção de autenticação recomendada porque:

  • Não siga o princípio do privilégio mínimo. Eles fornecem permissões elevadas, independentemente de quem os usa ou para qual tarefa.
  • Pode acabar acidentalmente no controle de versões ou em locais de armazenamento inseguros.
  • Pode ser facilmente compartilhado ou enviado para partes que não deveriam ter acesso.
  • Muitas vezes requerem administração manual e rotação.

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 identidade e acesso 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 ligar ao Azure OpenAI e outras ferramentas Foundry 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.
  • Permite-te usar a Azure.Identity biblioteca cliente para detetar diferentes credenciais em diferentes ambientes sem necessidade de alterações no código.
  • Lida automaticamente com tarefas de manutenção administrativa, como a rotação de chaves subjacentes.

O fluxo de trabalho para implementar a autenticação do Microsoft Entra em seu aplicativo geralmente inclui as seguintes etapas:

  • Desenvolvimento local:

    1. Entre no Azure usando uma ferramenta de desenvolvimento local, como a CLI do Azure ou o Visual Studio.
    2. Configure o seu código para usar a biblioteca do cliente Azure.Identity e a classe DefaultAzureCredential.
    3. Atribui funções Azure à conta com a qual iniciaste sessão para permitir o acesso à ferramenta Foundry.
  • Aplicativo hospedado no Azure:

    1. Implante o aplicativo no Azure depois de configurá-lo para autenticação usando a biblioteca de Azure.Identity cliente.
    2. Atribua uma identidade gerenciada ao aplicativo hospedado no Azure.
    3. Atribuir funções Azure à identidade gerida para permitir o acesso à ferramenta Foundry.

Os principais conceitos desse fluxo de trabalho são explorados nas seções a seguir.

Autenticar-se localmente no Azure

Ao desenvolver aplicações localmente que se liguem às ferramentas Foundry, autentique no Azure usando uma ferramenta como o Visual Studio ou a CLI do Azure. Suas credenciais locais podem ser descobertas pela biblioteca de Azure.Identity cliente 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 cliente do SDK do Azure para implementar a Azure.Identity autenticação do Microsoft Entra em seu código. As Azure.Identity bibliotecas incluem a classe DefaultAzureCredential, que descobre automaticamente as credenciais disponíveis do Azure com base nas ferramentas e no ambiente atual. Para o conjunto completo de credenciais de ambiente suportadas e a ordem em que DefaultAzureCredential as pesquisa, consulte a documentação do Azure SDK para .NET.

Por exemplo, configure o Azure OpenAI para autenticar, usando o seguinte código: DefaultAzureCredential

AzureOpenAIClient azureClient =
    new(
        new Uri(endpoint),
        new DefaultAzureCredential(new DefaultAzureCredentialOptions()
            { TenantId = tenantId }
        )
    );

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 as credenciais locais do Visual Studio ou do Azure CLI para autenticar na ferramenta Foundry. Quando o aplicativo é implantado no Azure, DefaultAzureCredential usa a identidade gerenciada atribuída ao seu aplicativo.

Atribua funções à sua identidade

O controle de acesso baseado em função do Azure (Azure RBAC) é um sistema que fornece gerenciamento de acesso refinado dos recursos do Azure. Atribui um papel ao principal de segurança usado por DefaultAzureCredential para se ligar a uma ferramenta Foundry, seja um utilizador individual, grupo, principal de serviço ou identidade gerida. 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 Utilizador OpenAI dos Serviços Cognitivos (ID de função: 5e0bd9bd-7b93-4f28-af87-19fc36ad61bd) à identidade relevante usando ferramentas como o Azure CLI, Bicep ou o portal Azure. Por exemplo, use o az role assignment create comando 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 Azure RBAC 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 Azure OpenAI. As identidades gerenciadas fornecem uma identidade totalmente gerenciada na ID do Microsoft Entra para os aplicativos usarem ao se conectar a recursos que oferecem suporte à autenticação do Microsoft Entra. DefaultAzureCredential descobre a identidade associada ao seu aplicativo e a usa para 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 está associada à aplicação e será eliminada se a aplicação for eliminada. Uma aplicação só pode ter uma identidade atribuída pelo sistema.
  • Uma identidade atribuída pelo utilizador é um recurso autónomo do Azure que pode ser atribuído à aplicação. Uma aplicação pode ter várias identidades atribuídas pelo utilizador.

Atribua funções a uma identidade gerenciada da mesma forma que faria com uma conta de usuário individual, como a função Usuário OpenAI dos Serviços Cognitivos. Saiba mais sobre como trabalhar com identidades geridas utilizando os seguintes recursos: