Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
A abordagem recomendada para autenticar uma aplicação alojada em Azure a outros recursos Azure é usar uma identidade gerida. Esta abordagem é suportada por para a maioria dos serviços Azure, incluindo aplicações alojadas em Azure App Service, Azure Container Apps e Azure Virtual Machines. Descubra mais sobre diferentes técnicas e abordagens de autenticação na página visão geral da autenticação. Nas seções a seguir, você aprenderá:
- Conceitos essenciais de identidade gerenciada
- Como criar uma identidade gerenciada atribuída ao sistema para seu aplicativo
- Como atribuir funções à identidade gerenciada atribuída ao sistema
- Como autenticar usando a identidade gerenciada atribuída pelo sistema a partir do código do seu aplicativo
Conceitos essenciais de identidade gerenciada
Uma identidade gerida permite que a sua aplicação se conecte de forma segura a outros recursos do Azure sem o uso de chaves secretas ou outros segredos de aplicação. Internamente, o Azure acompanha a identidade e a quais recursos pode ligar-se. O Azure utiliza esta informação para obter automaticamente tokens Microsoft Entra para a aplicação, permitindo que esta se ligue a outros recursos do Azure.
Há dois tipos de identidades gerenciadas a serem consideradas ao configurar seu aplicativo hospedado:
- As identidades geridas Atribuídas ao sistema são ativadas diretamente num recurso Azure e estão ligadas ao seu ciclo de vida. Quando o recurso é eliminado, o Azure apaga automaticamente a identidade para si. As identidades atribuídas pelo sistema fornecem uma abordagem minimalista para o uso de identidades gerenciadas.
- As identidades geridas Atribuídas pelo utilizador são criadas como recursos de Azure autónomas e oferecem maior flexibilidade e capacidades. São ideais para soluções que envolvem múltiplos recursos do Azure que precisam de partilhar a mesma identidade e permissões. Por exemplo, se várias máquinas virtuais precisarem de aceder ao mesmo conjunto de recursos do Azure, uma identidade gerida atribuída pelo utilizador proporciona reutilização e gestão otimizada.
Sugestão
Saiba mais sobre como selecionar e gerenciar identidades gerenciadas atribuídas pelo sistema e pelo usuário no artigo Recomendações de práticas recomendadas de identidade gerenciada .
As secções seguintes descrevem os passos para ativar e usar uma identidade gerida atribuída pelo sistema para uma aplicação alojada no Azure. Se você precisar usar uma identidade gerenciada atribuída pelo usuário, visite o artigo identidades gerenciadas atribuídas pelo usuário para obter mais informações.
Ativar uma identidade gerida atribuída pelo sistema no recurso de alojamento do Azure
Para começar a usar uma identidade gerida atribuída pelo sistema com a sua aplicação, ative a identidade no recurso Azure que aloja a sua aplicação, como um Azure App Service, Azure Container Apps ou Azure Virtual Machines.
Pode ativar uma identidade gerida atribuída pelo sistema para um recurso Azure usando o portal Azure ou a Azure CLI.
No portal Azure, navegue até ao recurso que hospeda o código da sua aplicação, como uma instância do Azure App Service ou Azure Container Apps.
Na página Visão Geral do recurso, expanda Configurações e selecione Identidade na navegação.
Na página Identidade, alterne o controle deslizante Status para On.
Selecione Guardar para aplicar as alterações.
Atribuir funções à identidade gerenciada
Em seguida, determine quais funções seu aplicativo precisa e atribua essas funções à identidade gerenciada. Você pode atribuir funções a uma identidade gerenciada nos seguintes escopos:
- Resource: As funções atribuídas aplicam-se apenas a esse recurso específico.
- Grupo de recursos: As funções atribuídas aplicam-se a todos os recursos contidos no grupo de recursos.
- Subscrição: As funções atribuídas aplicam-se a todos os recursos contidos na subscrição.
O exemplo seguinte mostra como atribuir papéis no âmbito do grupo de recursos, uma vez que muitas aplicações gerem todos os seus recursos Azure relacionados usando um único grupo de recursos.
Navegue até à página Visão Geral do grupo de recursos que contém o aplicativo com a identidade gerenciada atribuída ao sistema.
Selecione Controle de Acesso (IAM) na barra de navegação à esquerda.
Na página Controlo de acesso (IAM), selecione + Adicionar no menu superior e, em seguida, escolha Adicionar atribuição de função para navegar até a página Adicionar atribuição de função.
A página Adicionar atribuição de função apresenta um fluxo de trabalho com guias em várias etapas para atribuir funções a identidades. No separador inicial Função, utiliza a caixa de pesquisa na parte superior para localizar a função que deseja atribuir à identidade.
Selecione a função nos resultados e, em seguida, escolha Avançar para ir para o separador Membros.
Para a opção Atribuir acesso a, selecione Identidade gerenciada.
Para a opção Membros, escolha + Selecionar membros para abrir o painel Selecionar identidades gerenciadas.
No painel Selecionar identidades geridas, use a lista suspensa Assinatura e a lista suspensa Identidade gerida para filtrar as suas identidades nos resultados da pesquisa. Use a caixa de pesquisa Select para localizar a identidade do sistema que ativou para o recurso Azure que hospeda a sua aplicação.
Selecione a identidade e escolha Selecionar na parte inferior do painel para continuar.
Selecione Revisão + Atribua na parte inferior da página.
Na aba final Revisão + atribuir, selecione Revisão + atribuir para concluir o fluxo de trabalho.
Autenticar os serviços do Azure a partir da sua aplicação
A biblioteca Azure Identity fornece várias implementações de
-
Ambiente de desenvolvimento local: Durante desenvolvimento local somente, use uma classe chamada DefaultAzureCredential para uma cadeia de credenciais opinativa e pré-configurada.
DefaultAzureCredentialdescobre credenciais de utilizador a partir das suas ferramentas ou IDE locais, como o Azure CLI ou Visual Studio Code. Ele também oferece flexibilidade e conveniência para tentativas, tempos de espera para respostas e suporte para várias opções de autenticação. Visite o artigo Autenticar serviços Azure durante o desenvolvimento local para saber mais. -
Aplicações alojadas no Azure: Quando a sua aplicação estiver a correr no Azure, use
ManagedIdentityCredentialpara descobrir de forma segura a identidade gerida configurada para a sua aplicação. Especificar esse tipo exato de credencial evita que outras credenciais disponíveis sejam coletadas inesperadamente.
Implementar o código
Em um projeto JavaScript, adicione o pacote @azure/identity . Em um terminal de sua escolha, navegue até o diretório do projeto de aplicativo e execute os seguintes comandos:
npm install @azure/identity
Os serviços do Azure são acedidos através de classes cliente especializadas das várias bibliotecas cliente do Azure SDK. No index.js, conclua as seguintes etapas para configurar a autenticação baseada em token:
Importe o pacote
@azure/identity.Passe uma instância apropriada
TokenCredentialpara o cliente:- Usar
DefaultAzureCredentialquando seu aplicativo estiver sendo executado localmente - Usa
ManagedIdentityCredentialquando a tua aplicação estiver a correr em Azure.
import { BlobServiceClient } from '@azure/storage-blob'; import { ManagedIdentityCredential, DefaultAzureCredential } from '@azure/identity'; function createBlobServiceClient() { const accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME; if (!accountName) throw Error('Azure Storage accountName not found'); const url = `https://${accountName}.blob.core.windows.net`; if (process.env.NODE_ENV === "production") { return new BlobServiceClient(url, new ManagedIdentityCredential()); } else { return new BlobServiceClient(url, new DefaultAzureCredential()); } } async function main() { try { const blobServiceClient = createBlobServiceClient(); const containerClient = blobServiceClient.getContainerClient(process.env.AZURE_STORAGE_CONTAINER_NAME); const properties = await containerClient.getProperties(); console.log(properties); } catch (err) { console.error("Error retrieving container properties:", err.message); throw err; } } main().catch((err) => { console.error("Error running sample:", err.message); process.exit(1); });- Usar
Implementar o código
Em um projeto JavaScript, adicione o pacote @azure/identity . Em um terminal de sua escolha, navegue até o diretório do projeto de aplicativo e execute os seguintes comandos:
npm install @azure/identity @types/node
Os serviços do Azure são acedidos através de classes cliente especializadas das várias bibliotecas cliente do Azure SDK. No index.js, conclua as seguintes etapas para configurar a autenticação baseada em token:
Importe o pacote
@azure/identity.Passe uma instância apropriada
TokenCredentialpara o cliente:- Usar
DefaultAzureCredentialquando seu aplicativo estiver sendo executado localmente - Usa
ManagedIdentityCredentialquando a tua aplicação estiver a correr em Azure.
import { BlobServiceClient } from '@azure/storage-blob'; import { ManagedIdentityCredential, DefaultAzureCredential } from '@azure/identity'; function createBlobServiceClient(): BlobServiceClient { const accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME; if (!accountName) throw Error('Azure Storage accountName not found'); const url = `https://${accountName}.blob.core.windows.net`; if (process.env.NODE_ENV === "production") { return new BlobServiceClient(url, new ManagedIdentityCredential()); } else { return new BlobServiceClient(url, new DefaultAzureCredential()); } } async function main(): Promise<void> { try { const blobServiceClient = createBlobServiceClient(); const containerClient = blobServiceClient.getContainerClient(process.env.AZURE_STORAGE_CONTAINER_NAME!); const properties = await containerClient.getProperties(); console.log(properties); } catch (err: any) { console.error("Error retrieving container properties:", err.message); throw err; } } main().catch((err: Error) => { console.error("Error running sample:", err.message); process.exit(1); });- Usar
O código anterior se comporta de forma diferente dependendo do ambiente onde está sendo executado:
- Na sua estação de trabalho de desenvolvimento local, o
DefaultAzureCredentialprocura nas variáveis de ambiente de um application service principal ou nas ferramentas de desenvolvimento instaladas localmente, como a Visual Studio Code, para um conjunto de credenciais de programador. - Quando implementado na Azure,
ManagedIdentityCredentialdescobre as suas configurações de identidade gerida para autenticar automaticamente a outros serviços.