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.
As identidades gerenciadas para recursos do Azure fornecem aos serviços do Azure uma identidade no Microsoft Entra ID. Elas funcionam sem a necessidade de credenciais em seu código. Os serviços do Azure usam esta identidade para autenticar os serviços que dão suporte à autenticação do Microsoft Entra. As funções de aplicativo oferecem uma forma de controle de acesso baseado em função e permitem que um serviço implemente regras de autorização.
Observação
Os tokens recebidos pelo aplicativo são armazenados em cache pela infraestrutura subjacente. Isso significa que qualquer alteração nas funções da identidade gerenciada pode levar um tempo significativo para ser processada. Para obter mais informações, consulte Limitação do uso de identidades gerenciadas para autorização.
Neste artigo, você aprenderá a atribuir uma identidade gerenciada a uma função de aplicativo exposta por outro aplicativo usando o SDK do Microsoft Graph PowerShell ou a CLI do Azure.
Pré-requisitos
- Se você não estiver familiarizado com as identidades gerenciadas dos recursos do Azure, confira Identidades gerenciadas dos recursos do Azure?.
- Revise a diferença entre uma identidade gerenciada atribuída ao sistema e atribuída pelo usuário.
- Se você ainda não tiver uma conta do Azure, inscreva-se em uma conta gratuita antes de continuar.
Atribuir um acesso de identidade gerenciada à função de aplicativo de outro aplicativo usando a CLI
Utilize o ambiente Bash no Azure Cloud Shell. Para obter mais informações, confira Introdução ao Azure Cloud Shell.
Se você preferir executar comandos de referência da CLI localmente, instale a CLI do Azure. Se você estiver executando no Windows ou no macOS, considere executar a CLI do Azure em um contêiner do Docker. Para obter mais informações, confira Como executar a CLI do Azure em um contêiner do Docker.
Se você estiver usando uma instalação local, entre na CLI do Azure usando o comando az login . Para concluir o processo de autenticação, siga as etapas exibidas em seu terminal. Para obter outras opções de entrada, consulte Autenticar no Azure usando a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure no primeiro uso. Para obter mais informações sobre extensões, confira Usar e gerenciar extensões com a CLI do Azure.
Execute o comando az version para localizar a versão e as bibliotecas dependentes que estão instaladas. Para atualizar para a versão mais recente, execute az upgrade.
Habilite a identidade gerenciada em um recurso do Azure, como uma máquina virtual do Azure.
Localize a ID de objeto da entidade de serviço da identidade gerenciada.
Para uma identidade gerenciada atribuída pelo sistema, você pode encontrar a ID de objeto no portal do Azure na página Identidade do recurso. Você também pode usar o script a seguir para localizar a ID do objeto. Você precisará da ID do recurso criado na etapa anterior, que está disponível no portal do Azure na página Propriedades do recurso.
resourceIdWithManagedIdentity="/subscriptions/{my subscription ID}/resourceGroups/{my resource group name}/providers/Microsoft.Compute/virtualMachines/{my virtual machine name}" oidForMI=$(az resource show --ids $resourceIdWithManagedIdentity --query "identity.principalId" -o tsv | tr -d '[:space:]') echo "object id for managed identity is: $oidForMI"Para uma identidade gerenciada atribuída pelo usuário, você pode encontrar a ID do objeto da identidade gerenciada no portal do Azure na página Visão geral do recurso. Você também pode usar o script a seguir para localizar a ID do objeto. Você precisará da ID do recurso da identidade gerenciada atribuída pelo usuário.
userManagedIdentityResourceId="/subscriptions/{my subscription ID}/resourceGroups/{my resource group name}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{my managed identity name}" oidForMI=$(az resource show --id $userManagedIdentityResourceId --query "properties.principalId" -o tsv | tr -d '[:space:]') echo "object id for managed identity is: $oidForMI"
Crie um novo registro de aplicativo para representar o serviço para o qual sua identidade gerenciada envia uma solicitação.
- Se a API ou o serviço que expõe a concessão da função de aplicativo para a identidade gerenciada já tiver uma entidade de serviço em seu locatário do Microsoft Entra, ignore esta etapa.
Localize a ID do objeto da entidade de serviço do aplicativo de serviço. Você pode encontrar isso usando o Centro de administração do Microsoft Entra.
Na folha de navegação à esquerda, selecione Entra ID>Aplicativos empresariais. Em seguida, localize o aplicativo e procure a ID do objeto.
Você também pode encontrar a ID do objeto da entidade de serviço pelo nome de exibição dela usando o seguinte script:
appName="{name for your application}" serverSPOID=$(az ad sp list --filter "displayName eq '$appName'" --query '[0].id' -o tsv | tr -d '[:space:]') echo "object id for server service principal is: $serverSPOID"Observação
Nomes de exibição para aplicativos não são exclusivos. Portanto, você deve verificar se obteve a entidade de serviço do aplicativo correto.
Ou você pode encontrar a ID do objeto pela ID de aplicativo exclusiva para o registro do seu aplicativo:
appID="{application id for your application}" serverSPOID=$(az ad sp list --filter "appId eq '$appID'" --query '[0].id' -o tsv | tr -d '[:space:]') echo "object id for server service principal is: $serverSPOID"
Adicione uma função de aplicativo ao aplicativo que você criou na etapa anterior. Você pode criar a função usando o portal do Azure ou o Microsoft Graph. Por exemplo, você pode adicionar uma função de aplicativo como esta:
{ "allowedMemberTypes": [ "Application" ], "displayName": "Read data from MyApi", "id": "00001111-aaaa-2222-bbbb-3333cccc4444", "isEnabled": true, "description": "Allow the application to read data as itself.", "value": "MyApi.Read.All" }Atribua a função de aplicativo à identidade gerenciada. Você precisará das seguintes informações para atribuir a função de aplicativo:
-
managedIdentityObjectId: a ID do objeto da entidade de serviço da identidade gerenciada, que você encontrou na etapa 2. -
serverServicePrincipalObjectId: a ID do objeto da entidade de serviço do aplicativo do servidor, que você encontrou na etapa 4. -
appRoleId: a ID da função de aplicativo exposta pelo aplicativo do servidor, que você gerou na etapa 5 – no exemplo, a ID da função do aplicativo é00000000-0000-0000-0000-000000000000.
-
Execute o script a seguir para adicionar a atribuição de função. Essa funcionalidade não é exposta diretamente na CLI do Azure e que, em vez disso, um comando REST é usado aqui:
roleguid="00000000-0000-0000-0000-000000000000" az rest -m POST -u https://graph.microsoft.com/v1.0/servicePrincipals/$oidForMI/appRoleAssignments -b "{\"principalId\": \"$oidForMI\", \"resourceId\": \"$serverSPOID\",\"appRoleId\": \"$roleguid\"}"