Identidades gerenciadas em Aplicativos de Contêiner do Azure
Uma identidade gerenciada do Microsoft Entra ID permite que seu aplicativo de contêiner acesse outros recursos protegidos pelo Microsoft Entra. Para obter mais informações sobre identidades gerenciadas no Microsoft Entra ID, consulte Identidades gerenciadas para recursos do Azure.
Seu aplicativo de contêiner pode receber dois tipos de identidades:
- Uma identidade atribuída pelo sistema é vinculada ao seu aplicativo de contêiner e é excluída quando seu aplicativo de contêiner é excluído. Uma aplicação só pode ter uma identidade atribuída pelo sistema.
- Uma identidade atribuída pelo usuário é um recurso autônomo do Azure que pode ser atribuído ao seu aplicativo de contêiner e outros recursos. Um aplicativo de contêiner pode ter várias identidades atribuídas pelo usuário. A identidade existe até que você os exclua.
Por que usar uma identidade gerenciada?
Você pode usar uma identidade gerenciada em um aplicativo de contêiner em execução para autenticar em qualquer serviço que ofereça suporte à autenticação do Microsoft Entra.
Com identidades gerenciadas:
- Seu aplicativo se conecta a recursos com a identidade gerenciada. Você não precisa gerenciar credenciais em seu aplicativo de contêiner.
- Você pode usar o controle de acesso baseado em função para conceder permissões específicas a uma identidade gerenciada.
- As identidades atribuídas pelo sistema são criadas e gerenciadas automaticamente. Eles são excluídos quando seu aplicativo de contêiner é excluído.
- Você pode adicionar e excluir identidades atribuídas pelo usuário e atribuí-las a vários recursos. Eles são independentes do ciclo de vida do seu aplicativo de contêiner.
- Você pode usar a identidade gerenciada para autenticar com um Registro de Contêiner do Azure privado sem um nome de usuário e senha para extrair contêineres para seu Aplicativo de Contêiner.
- Você pode usar a identidade gerenciada para criar conexões para aplicativos habilitados para Dpr por meio de componentes do Dapr
Casos comuns de utilização
As identidades atribuídas pelo sistema são melhores para cargas de trabalho que:
- estão contidos num único recurso
- precisam de identidades independentes
As identidades atribuídas pelo usuário são ideais para cargas de trabalho que:
- executar em vários recursos e pode compartilhar uma única identidade
- precisa de pré-autorização para um recurso seguro
Limitações
Não há suporte para o uso de identidades gerenciadas em regras de escala. Você ainda precisará incluir a cadeia de conexão ou a chave na secretRef
regra de dimensionamento.
Os contêineres de inicialização não podem acessar identidades gerenciadas.
Configurar identidades geridas
Você pode configurar suas identidades gerenciadas através de:
- Portal do Azure
- da CLI do Azure
- seu modelo do Azure Resource Manager (ARM)
Quando uma identidade gerenciada é adicionada, excluída ou modificada em um aplicativo de contêiner em execução, o aplicativo não é reiniciado automaticamente e uma nova revisão não é criada.
Nota
Ao adicionar uma identidade gerenciada a um aplicativo de contêiner implantado antes de 11 de abril de 2022, você deve criar uma nova revisão.
Adicionar uma identidade atribuída ao sistema
Na navegação à esquerda da página do aplicativo contêiner, role para baixo até o grupo Configurações .
Selecione Identidade.
Na guia Sistema atribuído, alterne Status para Ativado. Selecione Guardar.
Adicionar uma identidade atribuída pelo usuário
Configurar um aplicativo de contêiner com uma identidade atribuída pelo usuário requer que você primeiro crie a identidade e, em seguida, adicione seu identificador de recurso à configuração do aplicativo de contêiner. Você pode criar identidades atribuídas pelo usuário por meio do portal do Azure ou da CLI do Azure. Para obter informações sobre como criar e gerenciar identidades atribuídas pelo usuário, consulte Gerenciar identidades gerenciadas atribuídas pelo usuário.
Primeiro, você precisará criar um recurso de identidade atribuído pelo usuário.
Crie um recurso de identidade gerenciada atribuído pelo usuário de acordo com as etapas encontradas em Gerenciar identidades gerenciadas atribuídas pelo usuário.
Na navegação à esquerda da página do aplicativo contêiner, role para baixo até o grupo Configurações .
Selecione Identidade.
Na guia Usuário atribuído, selecione Adicionar.
Procure a identidade que criou anteriormente e selecione-a. Selecione Adicionar.
Configurar um recurso de destino
Para alguns recursos, você precisará configurar atribuições de função para a identidade gerenciada do seu aplicativo para conceder acesso. Caso contrário, as chamadas do seu aplicativo para serviços, como o Cofre da Chave do Azure e o Banco de Dados SQL do Azure, serão rejeitadas mesmo se você usar um token válido para essa identidade. Para saber mais sobre o controle de acesso baseado em função do Azure (Azure RBAC), consulte O que é RBAC?. Para saber mais sobre quais recursos oferecem suporte a tokens do Microsoft Entra, consulte Serviços do Azure que oferecem suporte à autenticação do Microsoft Entra.
Importante
Os serviços back-end para identidades gerenciadas mantêm um cache por URI de recurso por cerca de 24 horas. Se você atualizar a política de acesso de um recurso de destino específico e recuperar imediatamente um token para esse recurso, poderá continuar a obter um token armazenado em cache com permissões desatualizadas até que esse token expire. Atualmente, não há como forçar uma atualização de token.
Conectar-se aos serviços do Azure no código do aplicativo
Com identidades gerenciadas, um aplicativo pode obter tokens para acessar recursos do Azure que usam a ID do Microsoft Entra, como o Banco de Dados SQL do Azure, o Cofre da Chave do Azure e o Armazenamento do Azure. Esses tokens representam o aplicativo que acessa o recurso, e não qualquer usuário específico do aplicativo.
Container Apps fornece um ponto de extremidade REST acessível internamente para recuperar tokens. O ponto de extremidade REST pode ser acessado de dentro do aplicativo com um HTTP GET padrão, que pode ser implementado com um cliente HTTP genérico em todos os idiomas. Para .NET, JavaScript, Java e Python, a biblioteca de cliente do Azure Identity fornece uma abstração sobre esse ponto de extremidade REST. Conectar-se a outros serviços do Azure é tão simples quanto adicionar um objeto de credencial ao cliente específico do serviço.
Nota
Ao usar a biblioteca de cliente do Azure Identity, a ID do cliente de identidade gerenciada atribuída pelo usuário deve ser especificada.
Nota
Ao conectar-se a fontes de dados SQL do Azure com o Entity Framework Core, considere usar Microsoft.Data.SqlClient, que fornece cadeias de conexão especiais para conectividade de identidade gerenciada.
Para aplicativos .NET, a maneira mais simples de trabalhar com uma identidade gerenciada é por meio da biblioteca de cliente do Azure Identity para .NET. Consulte os respetivos títulos de documentação da biblioteca do cliente para obter informações:
- Adicionar a biblioteca de cliente do Azure Identity ao seu projeto
- Acessar o serviço do Azure com uma identidade atribuída pelo sistema
- Acessar o serviço do Azure com uma identidade atribuída pelo usuário
Os exemplos vinculados usam DefaultAzureCredential
. É útil para a maioria dos cenários porque o mesmo padrão funciona no Azure (com identidades gerenciadas) e em sua máquina local (sem identidades gerenciadas).
Exibir identidades gerenciadas
Você pode mostrar as identidades gerenciadas atribuídas pelo sistema e pelo usuário usando o seguinte comando da CLI do Azure. A saída mostra o tipo de identidade gerenciada, IDs de locatário e IDs principais de todas as identidades gerenciadas atribuídas ao seu aplicativo de contêiner.
az containerapp identity show --name <APP_NAME> --resource-group <GROUP_NAME>
Remover uma identidade gerenciada
Quando você remove uma identidade atribuída ao sistema, ela é excluída da ID do Microsoft Entra. As identidades atribuídas ao sistema também são removidas automaticamente do Microsoft Entra ID quando você exclui o próprio recurso do aplicativo contêiner. A remoção de identidades gerenciadas atribuídas pelo usuário do seu aplicativo de contêiner não as remove da ID do Microsoft Entra.
Na navegação à esquerda da página da sua aplicação, desloque-se para baixo até ao grupo Definições .
Selecione Identidade. Em seguida, siga as etapas com base no tipo de identidade:
- Identidade atribuída ao sistema: na guia Sistema atribuído, alterne Status para Desativado. Selecione Guardar.
- Identidade atribuída pelo usuário: selecione a guia Usuário atribuído, marque a caixa de seleção da identidade e selecione Remover. Selecione Sim para confirmar.