Partilhar via


Autenticar aplicativos Go para serviços do Azure durante o desenvolvimento local usando contas de desenvolvedor

Durante o desenvolvimento local, os aplicativos precisam se autenticar no Azure para usar diferentes serviços do Azure. Autentique localmente usando uma destas abordagens:

Este artigo explica como autenticar-se usando uma conta de programador com ferramentas suportadas pela biblioteca Azure Identity. Nas secções seguintes, aprende-se:

  • Como usar os grupos do Microsoft Entra para gerenciar com eficiência as permissões para várias contas de desenvolvedor.
  • Como atribuir funções a contas de desenvolvedor para definir o escopo das permissões.
  • Como iniciar sessão nas ferramentas de desenvolvimento local suportadas.
  • Como autenticar-se usando uma conta de programador a partir do código da sua aplicação.

Ferramentas de desenvolvedor suportadas para autenticação

Para que uma aplicação se autentique no Azure durante o desenvolvimento local usando as credenciais Azure do programador, o programador deve estar iniciado no Azure a partir de uma das seguintes ferramentas para programadores:

  • Azure CLI (Interface de Linha de Comando da Azure)
  • Azure Developer CLI
  • Azure PowerShell

A biblioteca Azure Identity consegue detetar que o programador está com sessão iniciada numa destas ferramentas. A biblioteca pode, então, obter o token de acesso do Microsoft Entra através da ferramenta para autenticar a aplicação no Azure como um utilizador autenticado.

Essa abordagem aproveita as contas existentes do Azure do desenvolvedor para simplificar o processo de autenticação. No entanto, a conta de um desenvolvedor provavelmente tem mais permissões do que as exigidas pelo aplicativo, excedendo assim as permissões com as quais o aplicativo é executado em produção. Como alternativa, podes criar principais de serviço de aplicação para usar durante o desenvolvimento local, que podem ter apenas o acesso necessário para a aplicação.

Criar um grupo do Microsoft Entra para desenvolvimento local

Crie um grupo do Microsoft Entra para encapsular as funções (permissões) de que o aplicativo precisa no desenvolvimento local, em vez de atribuir as funções a objetos principais de serviço individuais. Esta abordagem oferece as seguintes vantagens:

  • Cada desenvolvedor tem as mesmas funções 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 aplicativo.
  • Se um novo programador ingressar na equipa, um novo principal de serviço da aplicação será criado para o programador e adicionado ao grupo, garantindo que o programador tenha as permissões certas para trabalhar na aplicação.
  1. Navegue até a página de visão geral do Microsoft Entra ID no portal do Azure.

  2. Selecione Todos os grupos no menu à esquerda.

  3. Na página Grupos , selecione Novo grupo.

  4. Na página Novo de grupo, preencha os seguintes campos de formulário:

    • Tipo de grupo: Selecione Segurança.
    • Nome do grupo: insira um nome para o grupo que inclua uma referência ao nome do aplicativo ou ambiente.
    • Descrição do grupo: insira uma descrição que explique a finalidade do grupo.

    Uma captura de tela mostrando como criar um grupo no portal do Azure.

  5. Selecione o link Nenhum membro selecionado em Membros para adicionar membros ao grupo.

  6. No painel suspenso que se abre, procure o principal de serviço que criou anteriormente e selecione-o nos resultados filtrados. Escolha o botão Selecionar na parte inferior do painel para confirmar sua seleção.

  7. Selecione Criar na parte inferior da página Novo grupo para criar o grupo e retornar à página Todos os grupos . Se não vir o novo grupo listado, aguarde um momento e atualize a página.

Atribuir funções ao grupo

Em seguida, determine quais funções (permissões) seu aplicativo precisa em quais recursos e atribua essas funções ao grupo do Microsoft Entra que você criou. Os grupos podem receber uma função em um recurso, num grupo de recursos ou no âmbito de uma assinatura. Este exemplo mostra 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.

  1. No portal do Azure, navegue até a página Visão geral do grupo de recursos que contém seu aplicativo.

  2. Selecione Controle de acesso (IAM) na navegação à esquerda.

  3. Na página Controle de acesso (IAM), selecione + Adicionar e escolha Adicionar atribuição de função no menu suspenso. A página Adicionar atribuição de função fornece várias guias para configurar e atribuir funções.

  4. Na guia Função , use a caixa de pesquisa para localizar a função que você deseja atribuir. Selecione a função e, em seguida, escolha Avançar.

  5. Na aba Membros

    • Para o valor Atribuir acesso a , selecione Usuário, grupo ou entidade de serviço .
    • Para o valor Membros, escolha + Selecionar membros para abrir o painel flutuante Selecionar membros.
    • Procure o grupo do Microsoft Entra criado anteriormente e selecione-o nos resultados filtrados. Escolha e depois selecione para selecionar o grupo e fechar o painel de pop-up.
    • Selecione Revisar + atribuir no fundo do separador Membros.

    Uma captura de tela mostrando como atribuir uma função ao grupo Microsoft Entra.

  6. No separador Rever + atribuir, selecione Rever + atribuir na parte de baixo da página.

Inicie sessão no Azure usando ferramentas para programadores

De seguida, inicie sessão no Azure usando uma das várias ferramentas para programadores que pode usar para realizar autenticação no seu ambiente de desenvolvimento. A conta que você autenticar também deve existir no grupo do Microsoft Entra que você criou e configurou anteriormente.

Os desenvolvedores podem usar a CLI do Azure para autenticar. As aplicações que utilizam DefaultAzureCredential ou AzureCLICredential podem então usar esta conta para autenticar pedidos de aplicação.

Para autenticar com a CLI do Azure, execute o comando az login. Em um sistema com um navegador da Web padrão, a CLI do Azure inicia o navegador para autenticar o usuário.

az login

Para sistemas sem um navegador da Web padrão, o comando az login usa o fluxo de autenticação do código do dispositivo. Você também pode forçar a CLI do Azure a usar o fluxo de código do dispositivo em vez de iniciar um navegador especificando o --use-device-code argumento.

az login --use-device-code

Autenticar nos serviços do Azure a partir da sua aplicação

O pacote azidentity fornece várias credenciais adaptadas para suportar diferentes cenários e fluxos de autenticação do Microsoft Entra. Os passos seguintes demonstram como usar DefaultAzureCredential ao trabalhar com identidades de serviço tanto localmente como em produção.

Implementar o código

Para autenticar objetos de cliente do SDK do Azure no Azure, seu aplicativo deve usar a classe DefaultAzureCredential. Neste cenário, DefaultAzureCredential verifica sequencialmente se o programador iniciou sessão no Azure usando a CLI do Azure ou a CLI do programador Azure. Se o programador iniciar sessão no Azure usando uma destas ferramentas, a aplicação utiliza as credenciais para autenticação.

DefaultAzureCredential é uma sequência ordenada de mecanismos para autenticar no Microsoft Entra ID. Cada mecanismo de autenticação é um tipo que implementa a TokenCredential interface e é conhecido como credencial. DefaultAzureCredential verifica sequencialmente se o programador iniciou sessão no Azure usando a CLI do Azure ou a CLI do programador do Azure. Se o programador iniciar sessão no Azure usando uma destas ferramentas, a aplicação utiliza as credenciais para autenticação. Para mais informações sobre como personalizar a cadeia de credenciais, veja Como personalizar o DefaultAzureCredential.

  1. Adicione o pacote azidentity à sua aplicação.

    go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
    
  2. Para qualquer código Go que crie um objeto cliente Azure SDK na sua aplicação, deve:

    1. Importe o pacote azidentity.
    2. Use DefaultAzureCredential ou AzureCLICredential para criar uma instância de credencial. Por exemplo:
    • Para usar DefaultAzureCredential, defina a variável AZURE_TOKEN_CREDENTIALS de ambiente para dev que indique que a aplicação está a correr num ambiente de desenvolvimento. Para obter mais informações, consulte Como personalizar DefaultAzureCredential.

      // Environment variable AZURE_TOKEN_CREDENTIALS=dev or a specific developer tool credential value
      cred, err := azidentity.NewDefaultAzureCredential(nil)
      
    • Ou usar uma credencial específica como AzureCLICredential, AzureDeveloperCLICredential, ou AzurePowerShellCredential para autenticar usando o utilizador com sessão iniciada para uma ferramenta específica de desenvolvimento.

      cred, err := azidentity.NewAzureCLICredential(nil)
      // or cred, err := azidentity.NewAzureDeveloperCLICredential(nil)
      // or cred, err := azidentity.NewAzurePowerShellCredential(nil)
      
    1. Passe a instância de credencial para o construtor do cliente do Azure SDK.

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

import (
	"context"

	"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
	"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)

const (
	account       = "https://<replace_with_your_storage_account_name>.blob.core.windows.net/"
	containerName = "sample-container"
	blobName      = "sample-blob"
	sampleFile    = "path/to/sample/file"
)

func main() {
	// create a credential
	cred, err := azidentity.NewDefaultAzureCredential(nil)
	// or cred, err := azidentity.NewAzureCLICredential(nil)
	// or cred, err := azidentity.NewAzureDeveloperCLICredential(nil)
	// or cred, err := azidentity.NewAzurePowerShellCredential(nil)
	if err != nil {
	  // TODO: handle error
	}
	
	// create a client for the specified storage account
	client, err := azblob.NewClient(account, cred, nil)
	if err != nil {
	  // TODO: handle error
	}
	
	// TODO: perform some action with the azblob Client
	// _, err = client.DownloadFile(context.TODO(), <containerName>, <blobName>, <target_file>, <DownloadFileOptions>)
}