Compartilhar via


Autenticando aplicativos hospedados no Azure em recursos do Azure com o SDK do Azure para JavaScript

Quando um aplicativo é hospedado no Azure (usando um serviço como Serviço de Aplicativo do Azure, Máquinas Virtuais do Azure ou 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 seu aplicativo se conecte a outros recursos do Azure sem a necessidade de usar um segredo (como uma cadeia de conexão de chave). Internamente, o Azure sabe a identidade do seu aplicativo e a quais recursos ele tem permissão para 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 (criar ou girar) os segredos de autenticação.

Tipos de identidade gerenciada

Há dois tipos de identidades gerenciadas:

  • Identidades gerenciadas atribuídas pelo sistema – recurso único do Azure
  • Identidades gerenciadas atribuídas pelo usuário – vários recursos do Azure

Este artigo aborda as etapas para habilitar e usar uma identidade gerenciada atribuída pelo 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.

Identidades gerenciadas atribuídas pelo sistema para um único recurso

As identidades gerenciadas atribuídas pelo sistema são fornecidas e vinculadas diretamente a um recurso do Azure. Ao habilitar a identidade gerenciada em um recurso do Azure, você obtém uma identidade gerenciada atribuída pelo sistema para esse recurso. Ele está vinculado ao ciclo de vida do recurso do Azure. 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 mais fácil de identidade gerenciada a ser usado.

Identidades gerenciadas atribuídas pelo usuário para vários recursos

Conceitualmente, essa identidade é 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 e todos precisassem de acesso ao mesmo conjunto de recursos do Azure, criar e usar uma identidade gerenciada atribuída pelo usuário nesses recursos faria sentido.

1 - Atribuído pelo sistema: Habilitar no aplicativo hospedado

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

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

Instruções Captura de tela
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 no Azure.
Na página do 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, embora o layout do menu possa variar ligeiramente.
Uma captura de tela mostrando a localização do item de menu Identidade no menu à esquerda de um recurso do Azure.
Na página Identidade:
  1. Mova o controle deslizante Status para Ligar.
  2. Selecione Salvar.
Uma caixa de diálogo de confirmação verifica se você deseja habilitar a identidade gerenciada para seu serviço. Responda Sim para habilitar a identidade gerenciada 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, você precisa determinar de quais funções (permissões) seu aplicativo precisa e atribuir a identidade gerenciada a essas funções no Azure. Uma identidade gerenciada pode ser atribuída a funções em um escopo de recurso, grupo de recursos ou assinatura. Este exemplo mostra como atribuir funções no escopo do grupo de recursos, uma vez que a maioria dos aplicativos agrupa todos os seus recursos do Azure em um único grupo de recursos.

Instruções Captura de tela
Localize o grupo de recursos do aplicativo pesquisando pelo nome do grupo de recursos e 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 no 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 até um grupo de recursos no Azure.
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 (I A M) no menu à esquerda de um grupo de recursos do Azure.
Na página Controle de acesso (IAM):
  1. Selecione a guia Atribuições de função.
  2. Selecione + Adicionar no menu superior e, em seguida, Adicionar atribuição de função no menu suspenso resultante.
Uma captura de tela que mostra como navegar até a guia de 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 ao grupo de recursos.
  1. Use a caixa de pesquisa para filtrar a lista para obter um tamanho mais gerenciável. Este exemplo mostra como filtrar as funções do Blob de Armazenamento.
  2. Selecione a função que você deseja atribuir.
    Selecione Avançar para ir para a próxima tela.
Uma captura de tela que mostra 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. Escolha Identidade gerenciada em Atribuir acesso a.
  2. Selecionar + Selecionar membros em Membros
Uma caixa de diálogo é aberta no lado direito do portal do Azure.
Uma captura de tela mostrando como selecionar a identidade gerenciada como o tipo de usuário ao qual 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 caixa de texto Selecionar podem ser usadas para filtrar a lista de identidades gerenciadas em sua assinatura. Neste exemplo, selecionando Serviço de Aplicativo, somente 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.
Para continuar, escolha Selecionar na parte inferior da caixa de diálogo.
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 aparece como selecionada na tela Adicionar atribuição de função.

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

3 – Implementar DefaultAzureCredential no seu aplicativo

A DefaultAzureCredential classe detectará automaticamente que uma identidade gerenciada está sendo usada e usará a identidade gerenciada para autenticar em outros recursos do Azure. Conforme discutido no artigo de visão geral da autenticação do SDK do Azure para JavaScript, DefaultAzureCredential dá suporte a vários métodos de autenticação e determina o método de autenticação que está sendo usado em runtime. Dessa forma, seu aplicativo pode usar diferentes métodos de autenticação em ambientes diferentes sem implementar código específico do ambiente.

Primeiro, adicione o pacote @azure/identity ao seu aplicativo.

npm install @azure/identity

Em seguida, para qualquer código JavaScript que crie um objeto de cliente do SDK do Azure em seu aplicativo, você deseja:

  1. Importar a classe DefaultAzureCredential do módulo @azure/identity.
  2. Crie um objeto DefaultAzureCredential.
  3. Passar o objeto DefaultAzureCredential para o construtor do objeto do cliente do SDK do Azure.

Um exemplo disso é mostrado na ilustração a seguir.

// connect-with-default-azure-credential.js
import { BlobServiceClient } from '@azure/storage-blob';
import { DefaultAzureCredential } from '@azure/identity';
import 'dotenv/config'

const accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME;
if (!accountName) throw Error('Azure Storage accountName not found');

const blobServiceClient = new BlobServiceClient(
  `https://${accountName}.blob.core.windows.net`,
  new DefaultAzureCredential()
);

Quando o código acima é executado em sua estação de trabalho local durante o desenvolvimento local, o método SDK, DefaultAzureCredential(), procura nas variáveis de ambiente uma entidade de serviço de aplicativo ou no VS Code, na CLI do Azure ou no Azure PowerShell um conjunto de credenciais de desenvolvedor, que podem ser usadas para autenticar o aplicativo nos recursos do Azure durante o desenvolvimento local. Dessa forma, esse mesmo código pode ser usado para autenticar seu aplicativo nos recursos do Azure durante o desenvolvimento local e quando implantado no Azure.