Partilhar via


Autenticar aplicativos hospedados no Azure em recursos do Azure com o SDK do Azure para .NET

Quando um aplicativo é hospedado no Azure usando um serviço como o Serviço de Aplicativo do Azure, as Máquinas Virtuais do Azure ou as Instâncias de Contêiner do Azure, a abordagem recomendada para autenticar um aplicativo nos recursos do Azure é usar uma identidade gerenciada.

Uma identidade gerenciada fornece uma identidade para seu aplicativo para que ele possa se conectar a outros recursos do Azure sem a necessidade de usar uma chave secreta ou outro segredo de aplicativo. Internamente, o Azure conhece a identidade do seu aplicativo e a quais recursos ele pode se conectar. O Azure usa essas informações para obter automaticamente tokens do Microsoft Entra para o aplicativo para permitir que ele se conecte a outros recursos do Azure, tudo sem que você precise gerenciar nenhum segredo do aplicativo.

Tipos de identidade gerenciados

Existem dois tipos de identidades geridas:

  • Atribuído ao sistema - Esse tipo de identidade gerenciada é fornecido e vinculado diretamente a um recurso do Azure. Ao habilitar a identidade gerenciada em um recurso do Azure, você obtém uma identidade gerenciada atribuída ao sistema para esse recurso. Uma identidade gerenciada atribuída ao sistema está vinculada ao ciclo de vida do recurso do Azure ao qual está associada. Quando o recurso é excluído, o Azure exclui automaticamente a identidade para você. Como tudo o que você precisa fazer é habilitar a identidade gerenciada para o recurso do Azure que hospeda seu código, esse é o tipo de identidade gerenciada mais fácil de usar.
  • Atribuído pelo usuário - Você também pode criar uma identidade gerenciada como um recurso autônomo do Azure. Isso é usado com mais frequência quando sua solução tem várias cargas de trabalho executadas em vários recursos do Azure que precisam compartilhar a mesma identidade e as mesmas permissões. Por exemplo, se sua solução tivesse componentes executados em várias instâncias do Serviço de Aplicativo e da máquina virtual que precisassem acessar o mesmo conjunto de recursos do Azure, criar e usar uma identidade gerenciada atribuída pelo usuário nesses recursos faria sentido.

Este artigo abordará as etapas para habilitar e usar uma identidade gerenciada atribuída ao sistema para um aplicativo. Se você precisar usar uma identidade gerenciada atribuída pelo usuário, consulte o artigo Gerenciar identidades gerenciadas atribuídas pelo usuário para ver como criar uma identidade gerenciada atribuída pelo usuário.

1 - Habilite a identidade gerenciada no recurso do Azure que hospeda o aplicativo

A primeira etapa é habilitar a identidade gerenciada no recurso do Azure que hospeda seu aplicativo. Por exemplo, se você estiver hospedando um aplicativo .NET usando o Serviço de Aplicativo do Azure, precisará habilitar a identidade gerenciada para o aplicativo Web do Serviço de Aplicativo que está hospedando seu aplicativo. Se você estivesse usando uma máquina virtual para hospedar seu aplicativo, permitiria que sua VM usasse a identidade gerenciada.

Você pode habilitar a identidade gerenciada para ser usada para um recurso do Azure usando o portal do Azure ou a CLI do Azure.

Instruções Captura de ecrã
Navegue até o recurso que hospeda o código do aplicativo no portal do Azure. Por exemplo, você pode digitar o nome do recurso na caixa de pesquisa na parte superior da página e navegar até ele selecionando-o na caixa de diálogo. Uma captura de tela mostrando como usar a barra de pesquisa superior no portal do Azure para localizar e navegar até um recurso do Azure.
Na página do seu recurso, selecione o item de menu Identidade no menu à esquerda. Todos os recursos do Azure capazes de dar suporte à identidade gerenciada terão um item de menu Identidade , mesmo que o layout do menu possa variar ligeiramente. Uma captura de tela mostrando o local do item de menu Identidade no menu à esquerda de um recurso do Azure.
Na página Identidade:
  1. Altere o controle deslizante Status para Ativado.
  2. Selecione Guardar.
Uma caixa de diálogo de confirmação verificará se você deseja habilitar a identidade gerenciada para seu serviço. A resposta Sim e a identidade gerenciada serão habilitadas para o recurso do Azure.
Uma captura de tela mostrando como habilitar a identidade gerenciada para um recurso do Azure na página Identidade do recurso.

2 - Atribuir funções à identidade gerenciada

Em seguida, determine quais funções (permissões) seu aplicativo precisa e atribua a identidade gerenciada a essas funções no Azure. Uma identidade gerenciada pode receber funções em um recurso, grupo de recursos ou escopo de assinatura. Este exemplo mostrará como atribuir funções no escopo do grupo de recursos, já que a maioria dos aplicativos agrupa todos os seus recursos do Azure em um único grupo de recursos.

Instruções Captura de ecrã
Localize o grupo de recursos para seu aplicativo pesquisando o nome do grupo de recursos usando a caixa de pesquisa na parte superior do portal do Azure.

Navegue até o grupo de recursos selecionando o nome do grupo de recursos sob o título Grupos de Recursos na caixa de diálogo.
Uma captura de tela mostrando como usar a barra de pesquisa superior no portal do Azure para localizar e navegar para um grupo de recursos no Azure. Este é o grupo de recursos ao qual você atribuirá funções (permissões).
Na página do grupo de recursos, selecione Controle de acesso (IAM) no menu à esquerda. Uma captura de tela mostrando o local do item de menu Controle de acesso (IAM) no menu esquerdo de um grupo de recursos do Azure.
Na página Controle de acesso (IAM):
  1. Selecione o separador Atribuição de funções.
  2. Selecione + Adicionar no menu superior e, em seguida, Adicionar atribuição de função no menu suspenso resultante.
Uma captura de tela mostrando como navegar até a guia atribuições de função e o local do botão usado para adicionar atribuições de função a um grupo de recursos.
A página Adicionar atribuição de função lista todas as funções que podem ser atribuídas para o grupo de recursos.
  1. Use a caixa de pesquisa para filtrar a lista para um tamanho mais gerenciável. Este exemplo mostra como filtrar funções de Blob de Armazenamento.
  2. Selecione a função que pretende atribuir.
Selecione Avançar para ir para a próxima tela.
Uma captura de tela mostrando como filtrar e selecionar atribuições de função a serem adicionadas ao grupo de recursos.
A próxima página Adicionar atribuição de função permite especificar a qual usuário atribuir a função.
  1. Selecione Identidade gerenciada em Atribuir acesso a.
  2. Selecione + Selecionar membros em Membros.
Uma caixa de diálogo será aberta no lado direito do portal do Azure.
Uma captura de tela mostrando como selecionar identidade gerenciada como o tipo de usuário que você deseja atribuir a função (permissão) na página adicionar atribuições de função.
Na caixa de diálogo Selecionar identidades gerenciadas:
  1. A lista suspensa Identidade gerenciada e a caixa de texto Selecionar podem ser usadas para filtrar a lista de identidades gerenciadas em sua assinatura. Neste exemplo, ao selecionar Serviço de Aplicativo, somente as identidades gerenciadas associadas a um Serviço de Aplicativo são exibidas.
  2. Selecione a identidade gerenciada para o recurso do Azure que hospeda seu aplicativo.
Selecione Selecionar na parte inferior da caixa de diálogo para continuar.
Uma captura de tela mostrando como usar a caixa de diálogo selecionar identidades gerenciadas para filtrar e selecionar a identidade gerenciada à qual atribuir a função.
A identidade gerenciada agora será mostrada como selecionada na tela Adicionar atribuição de função.

Selecione Rever + atribuir para ir para a página final e, em seguida, Rever + atribuir novamente para concluir o processo.
Uma captura de tela da tela final adicionar atribuição de função onde um usuário precisa selecionar o botão Revisar + Atribuir para finalizar a atribuição de função.

3 - Implementar DefaultAzureCredential em seu aplicativo

DefaultAzureCredential é uma sequência opinativa e ordenada de mecanismos para autenticação no Microsoft Entra. Cada mecanismo de autenticação é uma classe derivada da classe TokenCredential e é conhecida como uma credencial. No tempo de execução, DefaultAzureCredential tenta autenticar usando a primeira credencial. Se essa credencial não conseguir adquirir um token de acesso, a próxima credencial na sequência será tentada, e assim por diante, até que um token de acesso seja obtido com êxito. Dessa forma, seu aplicativo pode usar credenciais diferentes em ambientes diferentes sem escrever código específico do ambiente.

A ordem e os locais em que DefaultAzureCredential procura credenciais são encontrados em DefaultAzureCredential.

Para usar DefaultAzureCredentialo , adicione o Azure.Identity e, opcionalmente, os pacotes Microsoft.Extensions.Azure ao seu aplicativo:

Em um terminal de sua escolha, navegue até o diretório do projeto de aplicativo e execute os seguintes comandos:

dotnet add package Azure.Identity
dotnet add package Microsoft.Extensions.Azure

Os serviços do Azure são acessados usando classes de cliente especializadas das várias bibliotecas de cliente do SDK do Azure. Essas classes e seus próprios serviços personalizados devem ser registrados para que possam ser acessados por meio de injeção de dependência em todo o aplicativo. No Program.cs, conclua as seguintes etapas para registrar uma classe de cliente e DefaultAzureCredential:

  1. Inclua os namespaces e Microsoft.Extensions.Azure por Azure.Identity meio using de diretivas.
  2. Registre o cliente de serviço do Azure usando o método de extensão -prefixed correspondente Add.
  3. Passe uma instância de DefaultAzureCredential para o UseCredential método.

Por exemplo:

using Microsoft.Extensions.Azure;
using Azure.Identity;

builder.Services.AddAzureClients(clientBuilder =>
{
    clientBuilder.AddBlobServiceClient(
        new Uri("https://<account-name>.blob.core.windows.net"));
    clientBuilder.UseCredential(new DefaultAzureCredential());
});

Uma alternativa é UseCredential instanciar DefaultAzureCredential diretamente:

using Azure.Identity;

builder.Services.AddSingleton<BlobServiceClient>(_ =>
    new BlobServiceClient(
        new Uri("https://<account-name>.blob.core.windows.net"),
        new DefaultAzureCredential()));

Quando o código anterior é executado em sua estação de trabalho de desenvolvimento local, ele procura nas variáveis de ambiente uma entidade de serviço de aplicativo ou em ferramentas de desenvolvedor instaladas localmente, como o Visual Studio, para um conjunto de credenciais de desenvolvedor. Qualquer uma das abordagens pode ser usada para autenticar o aplicativo nos recursos do Azure durante o desenvolvimento local.

Quando implantado no Azure, esse mesmo código também pode autenticar seu aplicativo em outros recursos do Azure. DefaultAzureCredential Pode recuperar configurações de ambiente e configurações de identidade gerenciada para autenticar em outros serviços automaticamente.