Autenticar aplicativos .NET nos serviços do Azure durante o desenvolvimento local usando contas de desenvolvedor

Ao criar aplicativos em nuvem, os desenvolvedores precisam depurar e testar aplicativos em suas estações de trabalho locais. Quando um aplicativo é executado na estação de trabalho de um desenvolvedor durante o desenvolvimento local, ele ainda deve se autenticar em todos os serviços do Azure usados pelo aplicativo. Este artigo aborda como usar as credenciais do Azure de um desenvolvedor para autenticar o aplicativo no Azure durante o desenvolvimento local.

A diagram showing how an app running in local developer will obtain the application service principal from a .env file and then use that identity to connect to Azure resources.

Para que um aplicativo se autentique no Azure durante o desenvolvimento local usando as credenciais do Azure do desenvolvedor, o desenvolvedor deve estar conectado ao Azure a partir da extensão VS Code Azure Tools, da CLI do Azure ou do Azure PowerShell. O SDK do Azure para .NET é capaz de detetar que o desenvolvedor está conectado a partir de uma dessas ferramentas e, em seguida, obter as credenciais necessárias do cache de credenciais para autenticar o aplicativo no Azure como o usuário conectado.

Essa abordagem é mais fácil de configurar para uma equipe de desenvolvimento, pois aproveita as contas existentes do Azure dos desenvolvedores. No entanto, a conta de um desenvolvedor provavelmente terá mais permissões do que as exigidas pelo aplicativo, excedendo assim as permissões com as quais o aplicativo será executado em produção. Como alternativa, você pode criar entidades de serviço de aplicativo para usar durante o desenvolvimento local, que podem ter o escopo para ter apenas o acesso necessário para o aplicativo.

1 - Criar grupo do Azure AD para desenvolvimento local

Como quase sempre há vários desenvolvedores que trabalham em um aplicativo, é recomendável primeiro criar um grupo do Azure AD para encapsular as funções (permissões) de que o aplicativo precisa no desenvolvimento local. Isto oferece as seguintes vantagens.

  • Todos os desenvolvedores têm a garantia de ter as mesmas funções atribuídas, uma vez que as funções são atribuídas no nível do grupo.
  • Se uma nova função for necessária para o aplicativo, ela só precisará ser adicionada ao grupo do Azure AD para o aplicativo.
  • Se um novo desenvolvedor ingressar na equipe, ele simplesmente deverá ser adicionado ao grupo correto do Azure AD para obter as permissões corretas para trabalhar no aplicativo.

Se você tiver um grupo existente do Azure AD para sua equipe de desenvolvimento, poderá usar esse grupo. Caso contrário, conclua as etapas a seguir para criar um grupo do Azure AD.

Instruções Captura de ecrã
Navegue até a página do Azure Ative Directory no portal do Azure digitando Azure Ative Directory na caixa de pesquisa na parte superior da página e selecionando Azure Ative Directory em serviços. A screenshot showing how to use the top search bar in the Azure portal to search for and navigate to the Azure Active Directory page.
Na página Azure Ative Directory, selecione Grupos no menu à esquerda. A screenshot showing the location of the Groups menu item in the left-hand menu of the Azure Active Directory Default Directory page.
Na página Todos os grupos, selecione Novo grupo. A screenshot showing the location of the New Group button in the All groups page.
Na página Novo Grupo:
  1. Tipo de grupo → Segurança
  2. Nome do grupo → Um nome para o grupo de segurança, normalmente criado a partir do nome do aplicativo. Também é útil incluir uma cadeia de caracteres como local-dev no nome do grupo para indicar a finalidade do grupo.
  3. Descrição do grupo → Uma descrição do objetivo do grupo.
  4. Selecione o link Sem membros selecionados em Membros para adicionar membros ao grupo.
A screenshot showing how to fill out the form to create a new Azure Active Directory group for the application. This screenshot also shows the location of the link to select to add members to this group
Na caixa de diálogo Adicionar membros :
  1. Use a caixa de pesquisa para filtrar a lista de nomes de usuário na lista.
  2. Selecione o(s) usuário(s) para desenvolvimento local para este aplicativo. À medida que os objetos são selecionados, eles serão movidos para a lista Itens selecionados na parte inferior da caixa de diálogo.
  3. Quando terminar, selecione o botão Selecionar .
A screenshot of the Add members dialog box showing how to select developer accounts to be included in the group.
De volta à página Novo grupo , selecione Criar para criar o grupo.

O grupo será criado e você será levado de volta para a página Todos os grupos . Pode levar até 30 segundos para que o grupo apareça e talvez seja necessário atualizar a página devido ao cache no portal do Azure.
A screenshot of the New Group page showing how to complete the process by selecting the Create button.

2 - Atribuir funções ao grupo do Azure AD

Em seguida, você precisa determinar quais funções (permissões) seu aplicativo precisa em quais recursos e atribuir essas funções ao seu aplicativo. Neste exemplo, as funções serão atribuídas ao grupo do Azure Ative Directory criado na etapa 1. As funções podem ser atribuídas a uma função 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.
A screenshot showing how to use the top search box in the Azure portal to locate and navigate to the resource group you want to assign roles (permissions) to.
Na página do grupo de recursos, selecione Controle de acesso (IAM) no menu à esquerda. A screenshot of the resource group page showing the location of the Access control (IAM) menu item.
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.
A screenshot showing how to navigate to the role assignments tab and the location of the button used to add role assignments to a resource group.
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.
A screenshot showing how to filter and select role assignments to be added to the resource group.
A próxima página Adicionar atribuição de função permite especificar a qual usuário atribuir a função.
  1. Selecione Usuário, grupo ou entidade de serviço em Atribuir acesso a.
  2. Selecione + Selecionar membros em Membros
Uma caixa de diálogo será aberta no lado direito do portal do Azure.
A screenshot showing the radio button to select to assign a role to an Azure AD group and the link used to select the group to assign the role to.
Na caixa de diálogo Selecionar membros:
  1. A caixa de texto Selecionar pode ser usada para filtrar a lista de usuários e grupos em sua assinatura. Se necessário, digite os primeiros caracteres do grupo de desenvolvimento local do Azure AD que você criou para o aplicativo.
  2. Selecione o grupo de desenvolvimento local do Azure AD associado ao seu aplicativo.
Selecione Selecionar na parte inferior da caixa de diálogo para continuar.
A screenshot showing how to filter for and select the Azure AD group for the application in the Select members dialog box.
O grupo do Azure AD agora será exibido como selecionado 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.
A screenshot showing the completed Add role assignment page and the location of the Review + assign button used to complete the process.

3 - Entrar no Azure usando o .NET Tooling

Em seguida, você precisa entrar no Azure usando uma das várias opções de ferramentas do .NET. A conta na qual você entra também deve existir no grupo do Azure Ative Directory que você criou e configurou anteriormente.

No menu superior do Visual Studio, navegue até Opções de Ferramentas>para abrir a caixa de diálogo de opções. Na barra de pesquisa no canto superior esquerdo, digite Azure para filtrar as opções. Em Autenticação de Serviço do Azure, escolha Seleção de Conta.

Selecione o menu suspenso em Escolha uma conta e escolha adicionar uma Conta da Microsoft. Será aberta uma janela solicitando que você escolha uma conta. Insira as credenciais da sua conta do Azure desejada e selecione a confirmação.

A screenshot showing how to sign in to Azure using Visual Studio.

4 - Implementar DefaultAzureCredential em seu aplicativo

DefaultAzureCredential Suporta vários métodos de autenticação e determina o método de autenticação que está sendo usado em tempo de execução. Dessa forma, seu aplicativo pode usar diferentes métodos de autenticação em ambientes diferentes sem implementar código específico do ambiente.

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

Para implementar DefaultAzureCredentialo , primeiro adicione os Azure.Identity pacotes e, opcionalmente, ao Microsoft.Extensions.Azure seu aplicativo. Você pode fazer isso usando a linha de comando ou o Gerenciador de Pacotes NuGet.

Abra um ambiente de terminal de sua escolha no diretório do projeto de aplicativo e digite o comando abaixo.

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

Os serviços do Azure geralmente são acessados usando as classes de cliente correspondentes do SDK. Essas classes e seus próprios serviços personalizados devem ser registrados no arquivo para que possam ser acessados por injeção de dependência em todo o Program.cs aplicativo. Dentro do Program.cs, siga as etapas abaixo para configurar corretamente seu serviço e DefaultAzureCredential.

  1. Inclua os Azure.Identity namespaces e Microsoft.Extensions.Azure com uma instrução using.
  2. Registre o serviço do Azure usando métodos auxiliares relevantes.
  3. Passe uma instância do DefaultAzureCredential objeto para o UseCredential método.

Um exemplo disso é mostrado no segmento de código a seguir.

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

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

Como alternativa, você também pode utilizar DefaultAzureCredential em seus serviços mais diretamente sem a ajuda de métodos de registro adicionais do Azure, conforme visto abaixo.

using Azure.Identity;

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

Quando o código acima é executado em sua estação de trabalho local durante o desenvolvimento local, ele procurará nas variáveis de ambiente uma entidade de serviço de aplicativo ou no Visual Studio, VS Code, CLI do Azure ou Azure PowerShell para um conjunto de credenciais de desenvolvedor, qualquer uma das quais 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.