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 o 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 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 (criar ou girar) os segredos de autenticação.
Tipos de identidade gerenciados
Existem dois tipos de identidades geridas:
- 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 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.
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 ao 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 de identidade gerenciada mais fácil de usar.
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 eles 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 - Sistema atribuído: Ativar 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 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.
2 - Atribuir funções à identidade gerenciada
Em seguida, você precisa determinar quais funções (permissões) seu aplicativo precisa e atribuir 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 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.
3 - Implementar DefaultAzureCredential em seu aplicativo
A DefaultAzureCredential
classe detetará 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 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.
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:
- Importe a
DefaultAzureCredential
classe do@azure/identity
módulo. - Crie um
DefaultAzureCredential
objeto. - Passe o
DefaultAzureCredential
objeto para o construtor de objeto de cliente do SDK do Azure.
Um exemplo disso é mostrado no segmento de código 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 para obter 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.