Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo mostra como criar uma identidade gerenciada para aplicativos do Serviço de Aplicativo do Azure e do Azure Functions e como usá-la para acessar outros recursos.
Uma identidade gerenciada da ID do Microsoft Entra permite que seu aplicativo acesse facilmente outros recursos protegidos pelo Microsoft Entra, como o Azure Key Vault. A plataforma do Azure gerencia a identidade, portanto, você não precisa provisionar nem atualizar segredos. Para obter mais informações sobre identidades gerenciadas na ID do Microsoft Entra, consulte Identidades gerenciadas para recursos do Azure.
Você pode conceder dois tipos de identidades ao seu aplicativo:
- Uma identidade atribuída pelo sistema está vinculada ao aplicativo e será excluída se o aplicativo for excluído. Um aplicativo pode ter apenas uma identidade atribuída pelo sistema.
- Uma identidade atribuída pelo usuário é um recurso independente do Azure que pode ser atribuído ao seu aplicativo. Um aplicativo pode ter várias identidades atribuídas pelo usuário. Uma identidade atribuída pelo usuário pode ser atribuída a vários recursos do Azure, como dois aplicativos do Serviço de Aplicativo.
A configuração da identidade gerenciada é específica para o slot. Para configurar uma identidade gerenciada para um slot de implantação no portal, vá para o slot primeiro. Para encontrar a identidade gerenciada para o aplicativo Web ou slot de implantação no locatário do Microsoft Entra a partir do portal do Azure, procure-a diretamente na página de Visão geral do locatário.
Observação
As identidades gerenciadas não estão disponíveis para aplicativos implantados no Azure Arc.
Como as identidades gerenciadas não dão suporte a cenários entre diretórios, elas não se comportam conforme o esperado se o aplicativo for migrado entre assinaturas ou locatários. Para recriar as identidades gerenciadas após essa movimentação, consulte Se as identidades gerenciadas serão recriadas automaticamente se eu mover uma assinatura para outro diretório?. Os recursos de downstream também precisarão ter políticas de acesso atualizadas para usar a nova identidade.
Pré-requisitos
Para executar as etapas neste artigo, você deve ter um conjunto mínimo de permissões sobre seus recursos do Azure. As permissões específicas de que você precisa variam de acordo com seu cenário. A tabela a seguir resume os cenários mais comuns:
Cenário | Permissão necessária | Exemplo de funções internas |
---|---|---|
Criar uma identidade atribuída pelo sistema |
Microsoft.Web/sites/write sobre o aplicativo, ou Microsoft.Web/sites/slots/write sobre o slot |
Colaborador do Site |
Criar uma identidade atribuída pelo usuário |
Microsoft.ManagedIdentity/userAssignedIdentities/write sobre o grupo de recursos no qual criar a identidade |
Colaborador de Identidade Gerenciada |
Atribuir uma identidade atribuída pelo usuário ao seu aplicativo |
Microsoft.Web/sites/write sobre o aplicativo, Microsoft.Web/sites/slots/write sobre o slot ou Microsoft.ManagedIdentity/userAssignedIdentities/*/assign/action sobre a identidade |
Colaborador do site e Operador de Identidade Gerenciada |
Criar atribuições de função do Azure |
Microsoft.Authorization/roleAssignments/write sobre o escopo do recurso de destino |
Administrador de Controle de Acesso Baseado em Função ou Administrador de Acesso do Usuário |
Adicionar uma identidade atribuída pelo sistema
Para habilitar uma identidade gerenciada atribuída pelo sistema, use as instruções a seguir.
No portal do Azure, vá para a página do aplicativo.
No menu à esquerda, selecione Configurações>Identidade.
Na guia Sistema atribuído, alterne o Status para Ativado. Em seguida, selecione Salvar.
Adicionar uma identidade atribuída pelo usuário
Para criar um aplicativo com uma identidade atribuída pelo usuário, crie a identidade e adicione seu identificador de recurso à configuração do aplicativo.
Crie um recurso de identidade gerenciado atribuído pelo usuário de acordo com estas instruções.
No menu à esquerda da página do aplicativo, selecione Configurações>Identidade.
Selecione Usuário atribuído e, em seguida, selecione Adicionar.
Pesquise a identidade que você criou anteriormente, selecione-a e selecione Adicionar.
Depois de concluir essas etapas, o aplicativo será reiniciado.
Configurar o recurso de destino
Você precisa configurar o recurso de destino para permitir o acesso do seu aplicativo. Para a maioria dos serviços do Azure, você configura o recurso de destino criando uma atribuição de função.
Alguns serviços usam mecanismos diferentes do controle de acesso baseado em função do Azure. Para entender como configurar o acesso usando uma identidade, consulte a documentação de cada recurso de destino. Para saber mais sobre quais recursos dão suporte a tokens do Microsoft Entra, consulte os Serviços do Azure que dão suporte à autenticação do Microsoft Entra.
Por exemplo, se você solicitar um token para acessar um segredo no Azure Key Vault, também deverá criar uma atribuição de função que permita que a identidade gerenciada trabalhe com segredos no cofre de destino. Caso contrário, o Key Vault rejeitará suas chamadas mesmo se você usar um token válido. O mesmo vale para o Banco de Dados SQL do Azure e outros serviços.
Importante
Os serviços de back-end para identidades gerenciadas mantêm um cache por URI de recurso por cerca de 24 horas. Pode levar várias horas para que as alterações em uma associação de grupo ou de função de uma identidade gerenciada entrem em vigor. No momento, não é possível forçar a atualização do token de uma identidade gerenciada antes de sua expiração. Se você alterar o grupo ou a associação de função de uma identidade gerenciada para adicionar ou remover permissões, talvez seja necessário aguardar várias horas para que o recurso do Azure que está usando a identidade tenha o acesso correto.
Para obter alternativas a grupos ou associações de função, consulte Limitação do uso de identidades gerenciadas para autorização.
Conectar-se aos serviços do Azure no código do aplicativo
Com sua identidade gerenciada, um aplicativo pode obter tokens para recursos do Azure que a ID do Microsoft Entra ajuda a proteger, como o Banco de Dados SQL do Azure, o Azure Key Vault e o Armazenamento do Azure. Esses tokens representam o aplicativo que acessa o recurso e não qualquer usuário específico do aplicativo.
O Serviço de Aplicativo e o Azure Functions fornecem um ponto de extremidade REST acessível internamente para recuperação de token. Você pode acessar o ponto de extremidade REST de dentro do aplicativo usando uma solicitação HTTP GET
padrão. Você pode implementar a solicitação com um cliente HTTP genérico em cada idioma.
Para .NET, JavaScript, Java e Python, a biblioteca de clientes da Identidade do Azure fornece uma abstração desse ponto de extremidade REST e simplifica a experiência de desenvolvimento. Conectar-se a outros serviços do Azure é tão simples quanto adicionar um objeto de credencial ao cliente específico a um serviço.
Uma solicitação HTTP GET
bruta usa as duas variáveis de ambiente fornecidas e se parece com o seguinte exemplo:
GET /MSI/token?resource=https://vault.azure.net&api-version=2019-08-01 HTTP/1.1
Host: <ip-address-:-port-in-IDENTITY_ENDPOINT>
X-IDENTITY-HEADER: <value-of-IDENTITY_HEADER>
Uma resposta de exemplo pode ser semelhante ao exemplo a seguir:
HTTP/1.1 200 OK
Content-Type: application/json
{
"access_token": "eyJ0eXAi…",
"expires_on": "1586984735",
"resource": "https://vault.azure.net",
"token_type": "Bearer",
"client_id": "00001111-aaaa-2222-bbbb-3333cccc4444"
}
Essa resposta é igual à resposta para a solicitação de token de acesso de serviço a serviço do Microsoft Entra. Para acessar o Key Vault, adicione o valor de access_token
a uma conexão de cliente com o cofre.
Para obter mais informações sobre o ponto de extremidade REST, consulte a referência de ponto de extremidade REST mais adiante neste artigo.
Remover uma identidade
Ao remover uma identidade atribuída pelo sistema, ela é excluída do Microsoft Entra ID. As identidades atribuídas pelo sistema também são removidas automaticamente do Microsoft Entra ID ao excluir o próprio recurso do aplicativo.
No menu à esquerda da página do aplicativo, selecione Configurações>Identidade.
Siga as etapas com base no tipo de identidade:
- Para uma identidade atribuída pelo sistema: na guia Atribuída pelo sistema , alterne o Status para Desativado. Em seguida, selecione Salvar.
- Para uma identidade atribuída pelo usuário: selecione a guia Atribuída pelo usuário , marque a caixa de seleção da identidade e selecione Remover. Clique em Sim para confirmar.
Observação
Você também pode definir uma configuração de aplicativo que desabilita apenas o serviço de token local: WEBSITE_DISABLE_MSI
. No entanto, ela mantém a identidade intacta. As ferramentas ainda mostram a identidade gerenciada como ativada ou habilitada. Como resultado, não recomendamos que você use essa configuração.
Referência de ponto de extremidade REST
Um aplicativo com uma identidade gerenciada torna esse ponto de extremidade disponível definindo duas variáveis de ambiente:
-
IDENTITY_ENDPOINT
: a URL para o serviço de token local. -
IDENTITY_HEADER
: Um cabeçalho que pode ajudar a mitigar ataques de falsificação de requisição do lado do servidor (SSRF). A plataforma gira o valor.
A IDENTITY_ENDPOINT
variável é uma URL local da qual seu aplicativo pode solicitar tokens. Para obter um token para um recurso, faça uma solicitação HTTP GET
para esse endpoint. Inclua os seguintes parâmetros:
Nome do parâmetro No Descrição resource
Consulta O URI do recurso do Microsoft Entra do recurso para o qual um token deve ser obtido. Esse recurso pode ser um dos serviços do Azure que dão suporte à autenticação do Microsoft Entra ou a qualquer outro URI de recurso. api-version
Consulta A versão da API do token a ser usada. Use 2019-08-01
.X-IDENTITY-HEADER
Cabeçalho O valor da variável de ambiente IDENTITY_HEADER
. Esse cabeçalho é usado para ajudar a atenuar ataques SSRF.client_id
Consulta (Opcional) A ID da identidade atribuída pelo usuário a ser usada. Ele não pode ser usado em uma solicitação que inclua principal_id
,mi_res_id
ouobject_id
. Se todos os parâmetros de ID (client_id
,principal_id
,object_id
emi_res_id
) forem omitidos, será usada a identidade atribuída pelo sistema.principal_id
Consulta (Opcional) A ID principal da identidade atribuída pelo usuário a ser usada. O object_id
parâmetro é um alias que pode ser usado em vez disso. Ele não pode ser usado em uma solicitação que incluaclient_id
,mi_res_id
ouobject_id
. Se todos os parâmetros de ID (client_id
,principal_id
,object_id
emi_res_id
) forem omitidos, será usada a identidade atribuída pelo sistema.mi_res_id
Consulta (Opcional) A ID do recurso do Azure da identidade atribuída pelo usuário a ser usada. Ele não pode ser usado em uma solicitação que inclua principal_id
,client_id
ouobject_id
. Se todos os parâmetros de ID (client_id
,principal_id
,object_id
emi_res_id
) forem omitidos, será usada a identidade atribuída pelo sistema.
Importante
Se você estiver tentando obter tokens para identidades atribuídas pelo usuário, inclua uma das propriedades opcionais. Caso contrário, o serviço de token tenta obter um token para uma identidade atribuída pelo sistema, que pode ou não existir.
Conteúdo relacionado
Considere os seguintes tutoriais:
- Conectar-se ao Banco de Dados SQL do Serviço de Aplicativo .NET sem segredos usando uma identidade gerenciada
- Acessar os serviços do Azure de um aplicativo Web .NET
- Acessar o Microsoft Graph de um aplicativo .NET protegido como o aplicativo
- Conexão Segura do Serviço Cognitivo do Serviço de Aplicativo .NET usando o Key Vault