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 credenciais — implementações de TokenCredential concebidas para suportar diferentes cenários e fluxos de autenticação Microsoft Entra. Como a identidade gerenciada não está disponível ao ser executada localmente, as etapas à frente demonstram qual credencial usar em qual cenário:
-
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 executar no Azure, use ManagedIdentityCredential para descobrir em segurança 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
Adicione o pacote Azure-identity à sua aplicação navegando até ao diretório do projeto da aplicação e executando o seguinte comando:
pip 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. O exemplo de código seguinte demonstra como criar uma instância de credencial e usá-la com um cliente de serviço Azure SDK. No código da sua aplicação, complete os seguintes passos para autenticar usando uma identidade gerida:
- Importe a
ManagedIdentityCredentialclasse doazure.identitymódulo. - Crie um
ManagedIdentityCredentialobjeto. - Passe o objeto
ManagedIdentityCredentialao construtor cliente Azure SDK.
O exemplo seguinte demonstra autenticar um BlobServiceClient usando uma identidade gerida atribuída pelo sistema:
from azure.identity import ManagedIdentityCredential
from azure.storage.blob import BlobServiceClient
# Authenticate using system-assigned managed identity
credential = ManagedIdentityCredential()
blob_service_client = BlobServiceClient(
account_url="https://<account-name>.blob.core.windows.net",
credential=credential
)
Ao desenvolver localmente, pode usar DefaultAzureCredential, que descobre credenciais através de ferramentas de desenvolvimento local. Quando implementado no Azure, mudar para ManagedIdentityCredential para cenários de produção.
import os
from azure.identity import DefaultAzureCredential, ManagedIdentityCredential
from azure.storage.blob import BlobServiceClient
# Use ManagedIdentityCredential in Azure, DefaultAzureCredential locally
if os.getenv("WEBSITE_HOSTNAME"):
credential = ManagedIdentityCredential()
else:
credential = DefaultAzureCredential()
blob_service_client = BlobServiceClient(
account_url="https://<account-name>.blob.core.windows.net",
credential=credential
)