Compartilhar via


Controlar os usuários de um aplicativo que não dá suporte ao provisionamento – Microsoft PowerShell

Há três cenários comuns em que é necessário preencher o Microsoft Entra ID (Azure Active Directory) com usuários existentes de um aplicativo antes de usar o aplicativo com um recurso de governança de identidade do Microsoft Entra, como as revisões de acesso.

  • Aplicativo migrado para o Microsoft Entra ID depois de usar seu próprio provedor de identidade
  • Aplicativo que não usa o Microsoft Entra ID como seu único provedor de identidade
  • O aplicativo não usa o Microsoft Entra ID como seu provedor de identidade nem dá suporte ao provisionamento

Para obter mais informações sobre esses dois primeiros cenários, em que o aplicativo dá suporte ao provisionamento ou usa um diretório do LDAP, um banco de dados SQL, tem um SOAP ou API REST ou conta com o Microsoft Entra ID como seu provedor de identidade, consulte o artigo controlar os usuários existentes de um aplicativo. Esse artigo aborda como usar recursos de governança de identidade para usuários existentes dessas categorias de aplicativos.

Este artigo aborda a terceiro cenário. Para alguns aplicativos herdados, talvez não seja viável remover outros provedores de identidade ou autenticação de credencial local do aplicativo ou habilitar o suporte para protocolos de provisionamento para esses aplicativos. Para esses aplicativos, caso queira usar o Microsoft Entra ID para revisar quem tem acesso ao aplicativo ou para remover o acesso de alguém desse aplicativo, precisará criar atribuições no Microsoft Entra ID que representam usuários do aplicativo. Este artigo aborda esse cenário de um aplicativo que não usa o Microsoft Entra ID como seu provedor de identidade e não dá suporte ao provisionamento.

Requisitos de licença

O uso desse recurso requer licenças do Microsoft Entra ID Governance. Para encontrar a licença certa para seus requisitos, confira Conceitos básicos de licenciamento do Microsoft Entra ID Governance.

Terminologia

Este artigo ilustra o processo de gerenciamento de atribuições de função de aplicativo usando os cmdlets do PowerShell do Microsoft Graph. Eles usam a terminologia do Microsoft Graph a seguir.

Diagrama que ilustra a terminologia do Microsoft Graph.

No Microsoft Entra ID, uma entidade de serviço (ServicePrincipal) representa um aplicativo em um diretório de uma determinada organização. ServicePrincipal tem uma propriedade AppRoles que lista as funções compatíveis com um aplicativo, como Marketing specialist. AppRoleAssignment vincula um usuário a uma entidade de serviço e especifica qual função o usuário tem nesse aplicativo.

Você também pode usar os pacotes de acesso do gerenciamento de direitos do Microsoft Entra para dar aos usuários acesso por tempo limitado ao aplicativo. No gerenciamento de direitos, um AccessPackage contém uma ou mais funções de recurso, potencialmente de várias entidades de serviço. AccessPackage também tem atribuições (Assignment) para usuários ao pacote de acesso.

Quando você cria uma atribuição para um usuário a um pacote de acesso, o gerenciamento de direitos do Microsoft Entra cria automaticamente as instâncias AppRoleAssignment necessárias para o usuário em cada aplicativo. Para obter mais informações, consulte o tutorial Gerenciar acesso a recursos no gerenciamento de direitos do Microsoft Entra sobre como criar pacotes de acesso por meio do PowerShell.

Antes de começar

  • Você precisa ter uma das seguintes licenças no locatário:

    • Governança do Microsoft Entra ID P2 ou Microsoft Entra ID
    • Licença do Enterprise Mobility + Security E5
  • Você precisa ter uma função administrativa adequada. Se for a primeira vez que você estiver executando essas etapas, precisará da função de Administrador global para autorizar o uso do PowerShell do Microsoft Graph em seu locatário.

  • Seu aplicativo precisa de uma entidade de serviço no locatário. Se uma entidade de serviço ainda não existir, você poderá registrar um aplicativo para representá-lo em Microsoft Entra ID.

Coletar usuários existentes em um aplicativo

A primeira etapa para garantir que todos os usuários estejam registrados no Microsoft Entra ID é coletar a lista de usuários existentes que têm acesso ao aplicativo.

Alguns aplicativos podem ter um comando interno para exportar uma lista de usuários atuais do armazenamento de dados. Em outros casos, o aplicativo pode depender de um diretório ou banco de dados externo.

Em alguns ambientes, o aplicativo pode estar localizado em um segmento da rede ou do sistema que não seja apropriado para gerenciar o acesso a Microsoft Entra ID. Portanto, talvez seja necessário extrair a lista de usuários desse aplicativo, diretório ou banco de dados e, em seguida, transferi-la como um arquivo para outro sistema que possa ser usado para interações do Microsoft Entra.

Se o aplicativo tiver um diretório do LDAP ou um banco de dados SQL, consulte Coletar usuários existentes de um aplicativo para obter recomendações sobre como extrair a coleção de usuários.

Caso contrário, se o aplicativo não tiver um diretório ou banco de dados, você precisará entrar em contato com o proprietário do aplicativo e fazer com que ele forneça uma lista de usuários. Isso pode estar em um formato como um arquivo CSV, com uma linha por usuário. Verifique se um campo de cada usuário no arquivo contém um identificador exclusivo, como um endereço de email, que também está presente em usuários no Microsoft Entra ID.

Se esse sistema não tiver os cmdlets do PowerShell do Microsoft Graph instalados ou não tiver conectividade com o Microsoft Entra ID, transfira o arquivo CSV que contém a lista de usuários para um sistema que tenha os cmdlets do PowerShell do Microsoft Graph instalados.

Confirmar se o Microsoft Entra ID tem usuários que correspondem aos usuários do aplicativo

Agora que você tem uma lista de todos os usuários obtidos do aplicativo, você poderá fazer a correspondência desses usuários do armazenamento de dados do aplicativo com os usuários no Microsoft Entra ID.

Recuperar as IDs dos usuários no Microsoft Entra ID

Esta seção mostra como interagir com o Microsoft Entra ID usando cmdlets do PowerShell do Microsoft Graph.

Na primeira vez que sua organização usar esses cmdlets nesse cenário, você precisará ter a função de Administrador global para permitir que o PowerShell do Microsoft Graph seja usado no seu locatário. As interações subsequentes podem usar uma função com privilégios inferiores, como:

  • Administrador de Usuário, caso preveja a criação de usuários.
  • Administrador de aplicativos ou Administrador de governança de identidade, caso esteja apenas gerenciando atribuições de função de aplicativos.
  1. Abra o PowerShell.

  2. Se você ainda não tiver os módulos do PowerShell do Microsoft Graph instalados, instale o módulo Microsoft.Graph.Users e os demais usando este comando:

    Install-Module Microsoft.Graph
    

    Se você já tiver os módulos instalados, verifique se está usando uma versão recente:

    Update-Module microsoft.graph.users,microsoft.graph.identity.governance,microsoft.graph.applications
    
  3. Conecte-se ao Microsoft Entra ID:

    $msg = Connect-MgGraph -ContextScope Process -Scopes "User.ReadWrite.All,Application.ReadWrite.All,AppRoleAssignment.ReadWrite.All,EntitlementManagement.ReadWrite.All"
    
  4. Se esta for a primeira vez que você usa este comando, talvez seja necessário dar consentimento para que as ferramentas de linha de comando do Microsoft Graph acessem essas permissões.

  5. Leia a lista de usuários obtida do armazenamento de dados do aplicativo na sessão do PowerShell. Se a lista de usuários estiver em um arquivo CSV, você poderá usar o cmdlet Import-Csv do PowerShell e fornecer o nome do arquivo da seção anterior como argumento.

    Por exemplo, se você tiver um arquivo chamado Users-exported-from-sap.csv que foi obtido do SAP Cloud Identity Services e ele estiver localizado no diretório atual, insira este comando.

    $filename = ".\Users-exported-from-sap.csv"
    $dbusers = Import-Csv -Path $filename -Encoding UTF8
    

    Nesse outro exemplo: se você estiver usando um banco de dados ou diretório e o arquivo se chamar users.csv e também estiver localizado no diretório atual, insira este comando:

    $filename = ".\users.csv"
    $dbusers = Import-Csv -Path $filename -Encoding UTF8
    
  6. Escolha a coluna do arquivo users.csv que corresponderá a um atributo de um usuário no Microsoft Entra ID.

    E se você estiver usando o SAP Cloud Identity Services, o mapeamento padrão será o atributo userName do SAP SCIM com o atributo userPrincipalName do Microsoft Entra ID:

    $db_match_column_name = "userName"
    $azuread_match_attr_name = "userPrincipalName"
    

    Outro exemplo seria se você estiver usando um banco de dados ou diretório, pode haver usuários em um banco de dados em que o valor na coluna denominada EMail é o mesmo valor do atributo userPrincipalName do Microsoft Entra:

    $db_match_column_name = "EMail"
    $azuread_match_attr_name = "userPrincipalName"
    
  7. Recupere as IDs desses usuários no Microsoft Entra ID.

    O script do PowerShell a seguir usa os valores $dbusers, $db_match_column_name e $azuread_match_attr_name especificados anteriormente. Ele consultará o Microsoft Entra ID para localizar um usuário que tenha um atributo com um valor correspondente para cada registro no arquivo de origem. Se o arquivo obtido do SAP Cloud Identity Services, do banco de dados ou do diretório tiver muitos usuários, prepare-se para aguardar alguns minutos até que o script seja concluído. Se você não tiver um atributo no Microsoft Entra ID que tenha o valor e precisar usar contains ou outra expressão de filtro, será necessário personalizar esse script e o da etapa 11 abaixo para usar uma expressão de filtro diferente.

    $dbu_not_queried_list = @()
    $dbu_not_matched_list = @()
    $dbu_match_ambiguous_list = @()
    $dbu_query_failed_list = @()
    $azuread_match_id_list = @()
    $azuread_not_enabled_list = @()
    $dbu_values = @()
    $dbu_duplicate_list = @()
    
    foreach ($dbu in $dbusers) { 
       if ($null -ne $dbu.$db_match_column_name -and $dbu.$db_match_column_name.Length -gt 0) { 
          $val = $dbu.$db_match_column_name
          $escval = $val -replace "'","''"
          if ($dbu_values -contains $escval) { $dbu_duplicate_list += $dbu; continue } else { $dbu_values += $escval }
          $filter = $azuread_match_attr_name + " eq '" + $escval + "'"
          try {
             $ul = @(Get-MgUser -Filter $filter -All -Property Id,accountEnabled -ErrorAction Stop)
             if ($ul.length -eq 0) { $dbu_not_matched_list += $dbu; } elseif ($ul.length -gt 1) {$dbu_match_ambiguous_list += $dbu } else {
                $id = $ul[0].id; 
                $azuread_match_id_list += $id;
                if ($ul[0].accountEnabled -eq $false) {$azuread_not_enabled_list += $id }
             } 
          } catch { $dbu_query_failed_list += $dbu } 
        } else { $dbu_not_queried_list += $dbu }
    }
    
    
  8. Exiba os resultados das consultas anteriores. Veja se algum do usuário que está no SAP Cloud Identity Services, no banco de dados ou no diretório não pôde ser encontrado no Microsoft Entra ID, devido a erros ou correspondências faltando.

    O seguinte script do PowerShell exibirá as contagens de registros que não foram localizados:

    $dbu_not_queried_count = $dbu_not_queried_list.Count
    if ($dbu_not_queried_count -ne 0) {
      Write-Error "Unable to query for $dbu_not_queried_count records as rows lacked values for $db_match_column_name."
    }
    $dbu_duplicate_count = $dbu_duplicate_list.Count
    if ($dbu_duplicate_count -ne 0) {
      Write-Error "Unable to locate Microsoft Entra ID users for $dbu_duplicate_count rows as multiple rows have the same value"
    }
    $dbu_not_matched_count = $dbu_not_matched_list.Count
    if ($dbu_not_matched_count -ne 0) {
      Write-Error "Unable to locate $dbu_not_matched_count records in Microsoft Entra ID by querying for $db_match_column_name values in $azuread_match_attr_name."
    }
    $dbu_match_ambiguous_count = $dbu_match_ambiguous_list.Count
    if ($dbu_match_ambiguous_count -ne 0) {
      Write-Error "Unable to locate $dbu_match_ambiguous_count records in Microsoft Entra ID as attribute match ambiguous."
    }
    $dbu_query_failed_count = $dbu_query_failed_list.Count
    if ($dbu_query_failed_count -ne 0) {
      Write-Error "Unable to locate $dbu_query_failed_count records in Microsoft Entra ID as queries returned errors."
    }
    $azuread_not_enabled_count = $azuread_not_enabled_list.Count
    if ($azuread_not_enabled_count -ne 0) {
     Write-Error "$azuread_not_enabled_count users in Microsoft Entra ID are blocked from sign-in."
    }
    if ($dbu_not_queried_count -ne 0 -or $dbu_duplicate_count -ne 0 -or $dbu_not_matched_count -ne 0 -or $dbu_match_ambiguous_count -ne 0 -or $dbu_query_failed_count -ne 0 -or $azuread_not_enabled_count) {
     Write-Output "You will need to resolve those issues before access of all existing users can be reviewed."
    }
    $azuread_match_count = $azuread_match_id_list.Count
    Write-Output "Users corresponding to $azuread_match_count records were located in Microsoft Entra ID." 
    
  9. Quando o script for concluído, ele indicará um erro se houver registros da fonte de dados não localizados no Microsoft Entra ID. Se nem todos os registros de usuários do armazenamento de dados do aplicativo puderem ser localizados no Microsoft Entra ID, será necessário investigar os registros que não corresponderam e por quê.

    Por exemplo, o endereço de email e o userPrincipalName de alguém podem ter sido alterados no Microsoft Entra ID sem que a propriedade mail correspondente tenha sido atualizada na fonte de dados do aplicativo. Ou talvez o usuário já tenha deixado a organização, mas ainda continue na fonte de dados do aplicativo. Ou pode haver uma conta de fornecedor ou de superadministrador na fonte de dados do aplicativo que não corresponda a nenhuma pessoa específica no Microsoft Entra ID.

  10. Se houver usuários que não foram localizados no Microsoft Entra ID ou que não estavam ativos e prontos para entrar, mas você quer que eles tenham o acesso revisado ou seus atributos atualizados no SAP Cloud Identity Services, no banco de dados ou no diretório, você precisará atualizar o aplicativo ou a regra de correspondência, ou então atualizar ou criar usuários do Microsoft Entra para eles. Para mais informações sobre quais alterações fazer, confira gerenciar mapeamentos e contas de usuário em aplicativos que encontraram correspondência com os usuários no Microsoft Entra ID.

    Se você optar por criar usuários no Microsoft Entra ID, poderá criar usuários em massa usando:

    Verifique se os novos usuários foram preenchidos com os atributos necessários para que o Microsoft Entra ID combine-os posteriormente com os usuários existentes no aplicativo e com os atributos exigidos pelo Microsoft Entra ID, incluindo userPrincipalName, mailNickname e displayName. O userPrincipalName deve ser único entre todos os usuários no diretório.

    Por exemplo, é possível ter usuários em um banco de dados em que o valor na coluna EMail é o valor que você quer usar como o nome UPN do Microsoft Entra, o valor na coluna Alias contém o apelido de email do Microsoft Entra ID e o valor na coluna Full name contém o nome de exibição do usuário:

    $db_display_name_column_name = "Full name"
    $db_user_principal_name_column_name = "Email"
    $db_mail_nickname_column_name = "Alias"
    

    Depois, você pode usar este script para criar usuários do Microsoft Entra para aqueles que estão no SAP Cloud Identity Services, no banco de dados ou no diretório que não correspondem aos usuários no Microsoft Entra ID. Observe que talvez seja necessário modificar esse script para adicionar outros atributos do Microsoft Entra necessários em sua organização ou, se $azuread_match_attr_name não for mailNickname nem userPrincipalName, para fornecer esse atributo do Microsoft Entra.

    $dbu_missing_columns_list = @()
    $dbu_creation_failed_list = @()
    foreach ($dbu in $dbu_not_matched_list) {
       if (($null -ne $dbu.$db_display_name_column_name -and $dbu.$db_display_name_column_name.Length -gt 0) -and
           ($null -ne $dbu.$db_user_principal_name_column_name -and $dbu.$db_user_principal_name_column_name.Length -gt 0) -and
           ($null -ne $dbu.$db_mail_nickname_column_name -and $dbu.$db_mail_nickname_column_name.Length -gt 0)) {
          $params = @{
             accountEnabled = $false
             displayName = $dbu.$db_display_name_column_name
             mailNickname = $dbu.$db_mail_nickname_column_name
             userPrincipalName = $dbu.$db_user_principal_name_column_name
             passwordProfile = @{
               Password = -join (((48..90) + (96..122)) * 16 | Get-Random -Count 16 | % {[char]$_})
             }
          }
          try {
            New-MgUser -BodyParameter $params
          } catch { $dbu_creation_failed_list += $dbu; throw }
       } else {
          $dbu_missing_columns_list += $dbu
       }
    }
    
  11. Quando adicionar os usuários ausentes ao Microsoft Entra ID, execute o script da etapa 7 novamente. Em seguida, execute o script da etapa 8. Verifique se não há nenhum erro relatado.

    $dbu_not_queried_list = @()
    $dbu_not_matched_list = @()
    $dbu_match_ambiguous_list = @()
    $dbu_query_failed_list = @()
    $azuread_match_id_list = @()
    $azuread_not_enabled_list = @()
    $dbu_values = @()
    $dbu_duplicate_list = @()
    
    foreach ($dbu in $dbusers) { 
       if ($null -ne $dbu.$db_match_column_name -and $dbu.$db_match_column_name.Length -gt 0) { 
          $val = $dbu.$db_match_column_name
          $escval = $val -replace "'","''"
          if ($dbu_values -contains $escval) { $dbu_duplicate_list += $dbu; continue } else { $dbu_values += $escval }
          $filter = $azuread_match_attr_name + " eq '" + $escval + "'"
          try {
             $ul = @(Get-MgUser -Filter $filter -All -Property Id,accountEnabled -ErrorAction Stop)
             if ($ul.length -eq 0) { $dbu_not_matched_list += $dbu; } elseif ($ul.length -gt 1) {$dbu_match_ambiguous_list += $dbu } else {
                $id = $ul[0].id; 
                $azuread_match_id_list += $id;
                if ($ul[0].accountEnabled -eq $false) {$azuread_not_enabled_list += $id }
             } 
          } catch { $dbu_query_failed_list += $dbu } 
        } else { $dbu_not_queried_list += $dbu }
    }
    
    $dbu_not_queried_count = $dbu_not_queried_list.Count
    if ($dbu_not_queried_count -ne 0) {
      Write-Error "Unable to query for $dbu_not_queried_count records as rows lacked values for $db_match_column_name."
    }
    $dbu_duplicate_count = $dbu_duplicate_list.Count
    if ($dbu_duplicate_count -ne 0) {
      Write-Error "Unable to locate Microsoft Entra ID users for $dbu_duplicate_count rows as multiple rows have the same value"
    }
    $dbu_not_matched_count = $dbu_not_matched_list.Count
    if ($dbu_not_matched_count -ne 0) {
      Write-Error "Unable to locate $dbu_not_matched_count records in Microsoft Entra ID by querying for $db_match_column_name values in $azuread_match_attr_name."
    }
    $dbu_match_ambiguous_count = $dbu_match_ambiguous_list.Count
    if ($dbu_match_ambiguous_count -ne 0) {
      Write-Error "Unable to locate $dbu_match_ambiguous_count records in Microsoft Entra ID as attribute match ambiguous."
    }
    $dbu_query_failed_count = $dbu_query_failed_list.Count
    if ($dbu_query_failed_count -ne 0) {
      Write-Error "Unable to locate $dbu_query_failed_count records in Microsoft Entra ID as queries returned errors."
    }
    $azuread_not_enabled_count = $azuread_not_enabled_list.Count
    if ($azuread_not_enabled_count -ne 0) {
     Write-Warning "$azuread_not_enabled_count users in Microsoft Entra ID are blocked from sign-in."
    }
    if ($dbu_not_queried_count -ne 0 -or $dbu_duplicate_count -ne 0 -or $dbu_not_matched_count -ne 0 -or $dbu_match_ambiguous_count -ne 0 -or $dbu_query_failed_count -ne 0 -or $azuread_not_enabled_count -ne 0) {
     Write-Output "You will need to resolve those issues before access of all existing users can be reviewed."
    }
    $azuread_match_count = $azuread_match_id_list.Count
    Write-Output "Users corresponding to $azuread_match_count records were located in Microsoft Entra ID." 
    

Registrar o aplicativo

Se o aplicativo já estiver registrado no Microsoft Entra ID, continue para a próxima etapa.

A conta que você está usando deve ter permissão para gerenciar aplicativos no Microsoft Entra ID. Qualquer uma das seguintes funções do Microsoft Entra inclui as permissões necessárias:

  1. Crie o aplicativo e uma entidade de serviço.

    Por exemplo, se o nome do aplicativo empresarial for CORPDB1, digite os seguintes comandos:

    $azuread_app_name = "CORPDB1"
    $azuread_app = New-MgApplication -DisplayName $azuread_app_name
    $azuread_sp = New-MgServicePrincipal -DisplayName $azuread_app_name -AppId $azuread_app.AppId
    
  2. Adicione uma função ao aplicativo e marque o aplicativo como integrado ao Microsoft Entra ID para que suas atribuições possam ser revisadas. Por exemplo, se o nome da função for General, forneça esse valor nos seguintes comandos do PowerShell:

    $ar0 = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphAppRole
    $ar0.AllowedMemberTypes += "User"
    $ar0.Description = "General role"
    $ar0.DisplayName = "General"
    $ar0.id = New-Guid
    $ar0.IsEnabled = $true
    $ar0.Value = "General"
    $ara = @()
    $ara += $ar0
    
    $azuread_app_tags = @()
    $azuread_app_tags += "WindowsAzureActiveDirectoryIntegratedApp"
    
    $azuread_app_update = Update-MgApplication -ApplicationId $azuread_app.Id -AppRoles $ara -Tags $azuread_app_tags
    

Verificar se há usuários que ainda não estão atribuídos ao aplicativo

As etapas anteriores confirmaram que todos os usuários no armazenamento de dados do aplicativo existem como usuários no Microsoft Entra ID. No entanto, pode ser que nem todos tenham as funções do aplicativo atribuídas no Microsoft Entra ID. Portanto, as próximas etapas se destinam a ver os usuários que não têm atribuições de funções de aplicativo.

  1. Procure a ID da entidade de serviço para a entidade de serviço do aplicativo.

    Por exemplo, se o nome do aplicativo empresarial for CORPDB1, digite os seguintes comandos:

    $azuread_app_name = "CORPDB1"
    $azuread_sp_filter = "displayName eq '" + ($azuread_app_name -replace "'","''") + "'"
    $azuread_sp = Get-MgServicePrincipal -Filter $azuread_sp_filter -All
    
  2. Recupere os usuários que atualmente têm atribuições para o aplicativo no Microsoft Entra ID.

    Isso se baseia na variável $azuread_sp definida no comando anterior.

    $azuread_existing_assignments = @(Get-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $azuread_sp.Id -All)
    
  3. Compare a lista de IDs de usuário da seção anterior com os usuários atribuídos atualmente ao aplicativo:

    $azuread_not_in_role_list = @()
    foreach ($id in $azuread_match_id_list) {
       $found = $false
       foreach ($existing in $azuread_existing_assignments) {
          if ($existing.principalId -eq $id) {
             $found = $true; break;
          }
       }
       if ($found -eq $false) { $azuread_not_in_role_list += $id }
    }
    $azuread_not_in_role_count = $azuread_not_in_role_list.Count
    Write-Output "$azuread_not_in_role_count users in the application's data store are not assigned to the application roles."
    

    Se nenhum usuário estiver atribuído a funções do aplicativo, indicando que todos os usuários estão atribuídos a funções do aplicativo, você não precisará fazer mais alterações antes de realizar uma revisão de acesso.

    No entanto, se houver um ou mais usuários sem a atribuição de funções do aplicativo, será preciso continuar o procedimento e adicioná-los a uma das funções do aplicativo.

  4. Selecione a função do aplicativo a ser atribuída aos usuários restantes.

    Um aplicativo pode ter mais de uma função. Use este comando para listar as funções disponíveis:

    $azuread_sp.AppRoles | where-object {$_.AllowedMemberTypes -contains "User"} | ft DisplayName,Id
    

    Selecione a função apropriada na lista e obtenha sua ID de função. Por exemplo, se o nome da função for General, forneça esse valor nos seguintes comandos do PowerShell:

    $azuread_app_role_name = "General"
    $azuread_app_role_id = ($azuread_sp.AppRoles | where-object {$_.AllowedMemberTypes -contains "User" -and $_.DisplayName -eq $azuread_app_role_name}).Id
    if ($null -eq $azuread_app_role_id) { write-error "role $azuread_app_role_name not located in application manifest"}
    

Criar atribuições de função de aplicativo no Microsoft Entra ID

Para que o Microsoft Entra ID corresponda os usuários no aplicativo com os usuários do Microsoft Entra ID, você precisa criar atribuições de função de aplicativo no Microsoft Entra ID.

Quando uma atribuição de função de aplicativo é criada no Microsoft Entra ID para um usuário a um aplicativo e o aplicativo não dá suporte ao provisionamento, então

  • O usuário permanecerá no aplicativo indefinidamente, a não ser que haja atualização fora do Microsoft Entra ID ou a atribuição seja removida do Microsoft Entra ID.
  • Na próxima revisão das atribuições de função desse aplicativo, o usuário será incluído na revisão.
  • Se o usuário for negado em uma revisão de acesso, a atribuição de função de aplicativo dele será removida.
  1. Crie atribuições de função de aplicativo para usuários que não têm atribuições de função no momento:

    foreach ($u in $azuread_not_in_role_list) {
       $res = New-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $azuread_sp.Id -AppRoleId $azuread_app_role_id -PrincipalId $u -ResourceId $azuread_sp.Id 
    }
    
  2. Aguarde um minuto para que as alterações sejam propagadas no Microsoft Entra ID.

  3. Consulte novamente o Microsoft Entra ID para obter a lista atualizada de atribuições de função:

    $azuread_existing_assignments = @(Get-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $azuread_sp.Id -All)
    
  4. Compare a lista de IDs de usuário da seção anterior com os usuários atribuídos atualmente ao aplicativo:

    $azuread_still_not_in_role_list = @()
    foreach ($id in $azuread_match_id_list) {
       $found = $false
       foreach ($existing in $azuread_existing_assignments) {
          if ($existing.principalId -eq $id) {
             $found = $true; break;
          }
       }
       if ($found -eq $false) { $azuread_still_not_in_role_list += $id }
    }
    $azuread_still_not_in_role_count = $azuread_still_not_in_role_list.Count
    if ($azuread_still_not_in_role_count -gt 0) {
       Write-Output "$azuread_still_not_in_role_count users in the application's data store are not assigned to the application roles."
    }
    

    Se algum usuário não tiver funções do aplicativo atribuídas, verifique o log de auditoria do Microsoft Entra para obter um erro de uma etapa anterior.

Selecionar os revisores apropriados

Quando você cria uma revisão de acesso, os administradores podem escolher um ou mais revisores. Todos os revisores podem iniciar e executar uma revisão escolhendo usuários para acesso contínuo a um recurso ou removendo-os.

Normalmente, um proprietário de recurso é responsável por executar uma revisão. Ao criar uma revisão de grupo durante a revisão do acesso de um aplicativo integrado ao padrão B, você poderá selecionar os proprietários do grupo como revisores. Como os aplicativos no Microsoft Entra ID não têm necessariamente um proprietário, não é possível selecionar o proprietário do aplicativo como revisor. Nesse caso, ao criar a revisão, você pode fornecer os nomes dos proprietários do aplicativo para serem os revisores.

Ao criar uma revisão de um grupo ou de um aplicativo, você também pode optar por fazer uma revisão em várias fases. Por exemplo, você pode selecionar que o gerente de cada usuário atribuído execute a primeira fase da revisão e o proprietário do recurso execute a segunda fase. Dessa forma, o proprietário do recurso pode se concentrar nos usuários que já foram aprovados pelo gerente.

Antes de criar as revisões, verifique se você tem estações suficientes do Microsoft Entra ID P2 ou do SKU do Microsoft Entra ID Governance em seu locatário. Além disso, verifique se todos os revisores são usuários ativos com endereços de email. Quando as revisões de acesso começarem, cada um deles revisará um email do Microsoft Entra ID. Se o revisor não tiver uma caixa de correio, ele não receberá o email quando a revisão for iniciada nem um lembrete por email. E, se eles forem impedidos de entrar no Microsoft Entra ID, não poderão executar a revisão.

Crie a revisão das atribuições de função de aplicativo

Depois que os usuários estiverem nas funções do aplicativo e você tiver os revisores identificados, você poderá configurar Microsoft Entra ID para iniciar uma revisão.

Siga as instruções na guia para criar uma revisão de acesso de grupos ou aplicativos, para criar a revisão das atribuições de função de aplicativo. Configure a revisão para aplicar resultados quando ela for concluída.

Recupere as atribuições que são atualizadas quando as revisões são concluídas

  1. Quando a revisão for concluída, você poderá recuperar a lista atualizada de usuários com atribuições de função de aplicativo.

    $res = (Get-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $azuread_sp.Id -All)
    
  2. As colunas PrincipalDisplayName e PrincipalId contêm os nomes de exibição e as IDs de usuário do Microsoft Entra de cada usuário que mantém uma atribuição de função de aplicativo.

Configurar a integração do gerenciamento de direitos com o ServiceNow para tíquetes (opcional)

Se você tiver o ServiceNow, opcionalmente, poderá configurar a criação automatizada de tíquetes do ServiceNow, usando a integração de gerenciamento de direitos por meio de Aplicativos Lógicos. Nesse cenário, o gerenciamento de direitos pode criar automaticamente tíquetes do ServiceNow para provisionamento manual de usuários que receberam atribuições de pacote de acesso.

Próximas etapas