Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este artigo mostra como criar uma identidade gerenciada para o Serviço de Aplicativo do Azure e aplicativos do Azure Functions e como usá-la para acessar outros recursos.
Uma identidade gerenciada do Microsoft Entra ID permite que seu aplicativo acesse facilmente outros recursos protegidos pelo Microsoft Entra, como o Azure Key Vault. A plataforma Azure gere a identidade, portanto, não precisa de provisionar ou rodar quaisquer segredos. Para obter mais informações sobre identidades gerenciadas no Microsoft Entra ID, consulte Identidades gerenciadas para recursos do Azure.
Você pode conceder dois tipos de identidades ao seu aplicativo:
- Uma identidade atribuída ao sistema é vinculada ao aplicativo e é excluída se o aplicativo for excluído. Um aplicativo pode ter apenas uma identidade atribuída ao sistema.
- Uma identidade atribuída pelo utilizador é um recurso autónomo do Azure que pode ser atribuído à aplicação. 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 de identidade gerenciada é específica para o slot. Para configurar uma identidade gerenciada para um slot de implantação no portal, vá primeiro para o slot. Para localizar a identidade gerenciada para seu aplicativo Web ou slot de implantação em seu locatário do Microsoft Entra no portal do Azure, pesquise-a diretamente na página Visão geral do seu locatário.
Observação
As identidades gerenciadas não estão disponíveis para aplicativos implantados no Azure Arc.
Como as identidades geridas não suportam cenários entre diretórios, elas não se comportam como esperado se a sua aplicação for migrada entre assinaturas ou inquilinos. Para recriar as identidades gerenciadas após essa mudança, consulte As identidades gerenciadas serão recriadas automaticamente se eu mover uma assinatura para outro diretório?. Os recursos a jusante também precisam de ter as políticas de acesso atualizadas para utilizar 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 o 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 ao 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 |
Contribuidor de identidade gerenciada |
| Atribuir uma identidade atribuída pelo utilizador à sua aplicação |
Microsoft.Web/sites/write sobre a aplicação, Microsoft.Web/sites/slots/write sobre a ranhura ou Microsoft.ManagedIdentity/userAssignedIdentities/*/assign/action sobre a identidade |
Colaborador do Sítio Web e Operador de Identidade Gerida |
| 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 de Usuário |
Adicionar uma identidade atribuída ao sistema
Para habilitar uma identidade gerenciada atribuída ao sistema, use as instruções a seguir.
No portal do Azure, vá para a página do seu aplicativo.
No menu à esquerda, selecione Configurações>Identidade.
Na guia Sistema atribuído, alterne Estado para Ativado. Em seguida, selecione Guardar.
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 esquerdo da página do seu aplicativo, selecione Configurações>Identidade.
Selecione Usuário atribuído e, em seguida, selecione Adicionar.
Procure a identidade que criou anteriormente, selecione-a e, em seguida, selecione Adicionar.
Depois de concluir estas etapas, o aplicativo é 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 oferecem suporte a tokens do Microsoft Entra, consulte Serviços do Azure que oferecem suporte à autenticação do Microsoft Entra.
Por exemplo, se você solicitar um token para acessar um segredo no Cofre de Chaves do Azure, 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 Azure Key Vault rejeitará as suas solicitações, mesmo que utilize 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 e podem levar até esse período de tempo para que as alterações na associação de grupo ou função de uma identidade gerenciada entrem em vigor. Atualmente, não é possível forçar a atualização do token de uma identidade gerenciada antes de sua expiração. Se você alterar a associação de grupo ou função de uma identidade gerenciada para adicionar ou remover permissões, talvez seja necessário aguardar até cerca de 24 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 o Microsoft Entra ID ajuda a proteger, 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.
O Serviço de Aplicativo e o Azure Functions fornecem um ponto de extremidade REST acessível internamente para recuperação de tokens. 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 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 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 do serviço.
Uma solicitação HTTP GET bruta usa as duas variáveis de ambiente fornecidas e se parece com o exemplo a seguir:
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>
Um exemplo de resposta 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"
}
Esta resposta é a mesma que a resposta para a solicitação de token de acesso de serviço a serviço do Microsoft Entra. Para aceder ao Cofre de Chaves, adicione o valor de access_token a uma ligação de cliente com o cofre.
Para obter mais informações sobre o ponto de extremidade REST, consulte Referência do ponto de extremidade REST mais adiante neste artigo.
Remover uma identidade
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.
No menu esquerdo da página do seu aplicativo, selecione Configurações>Identidade.
Siga as etapas com base no tipo de identidade:
- Para uma identidade atribuída pelo sistema: na guia Sistema atribuído , alterne Status para Desativado. Em seguida, selecione Guardar.
- Para uma 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.
Observação
Você também pode definir uma configuração de aplicativo que desative apenas o serviço de token local: WEBSITE_DISABLE_MSI. No entanto, deixa a identidade no lugar. As ferramentas ainda mostram a identidade gerenciada como ativada ou habilitada. Como resultado, não recomendamos que você use essa configuração.
Referência do endpoint REST
Um aplicativo com uma identidade gerenciada disponibiliza esse ponto de extremidade 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 solicitação do lado do servidor (SSRF). A plataforma altera o valor.
A IDENTITY_ENDPOINT variável é uma URL local a partir da qual seu aplicativo pode solicitar tokens. Para obter um token para um recurso, faça uma solicitação HTTP GET para esse ponto de extremidade. Inclua os seguintes parâmetros:
Nome do parâmetro Em Descrição resourcePergunta O URI do recurso do Microsoft Entra para o recurso para o qual um token deve ser obtido. Este recurso pode ser um dos serviços do Azure que suportam a autenticação do Microsoft Entra ou qualquer outro URI de recurso. api-versionPergunta A versão da API de token a ser usada. Utilize 2019-08-01.X-IDENTITY-HEADERCabeçalho O valor da variável de ambiente IDENTITY_HEADER. Esse cabeçalho é usado para ajudar a mitigar ataques SSRF.client_idPergunta (Opcional) O ID de cliente da identidade atribuída ao utilizador a ser usada. Ele não pode ser usado em uma solicitação que inclua principal_id,mi_res_idouobject_id. Se todos os parâmetros de ID (client_id,principal_id,object_id, emi_res_id) forem omitidos, a identidade atribuída ao sistema será usada.principal_idPergunta (Opcional) O ID principal da identidade atribuída pelo usuário a ser usada. O object_idparâ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_idouobject_id. Se todos os parâmetros de ID (client_id,principal_id,object_id, emi_res_id) forem omitidos, a identidade atribuída ao sistema será usada.mi_res_idPergunta (Opcional) O identificador de recurso do Azure da identidade atribuída pelo utilizador a ser usada. Ele não pode ser usado em uma solicitação que inclua principal_id,client_idouobject_id. Se todos os parâmetros de ID (client_id,principal_id,object_id, emi_res_id) forem omitidos, a identidade atribuída ao sistema será usada.
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 ao sistema, que pode ou não existir.
Conteúdo relacionado
Considere os seguintes tutoriais:
- Conectar-se ao Banco de Dados SQL a partir do Serviço de Aplicativo .NET sem segredos usando uma identidade gerenciada
- Aceder aos serviços do Azure a partir de uma aplicação Web .NET
- Acesse o Microsoft Graph a partir de um aplicativo .NET seguro como o aplicativo
- Conexão segura do Serviço Cognitivo do App Service .NET usando o Key Vault