Styra användare av ett program som inte stöder etablering – Microsoft PowerShell

Det finns tre vanliga scenarier där det är nödvändigt att fylla i Microsoft Entra-ID med befintliga användare av ett program innan du använder programmet med en Styrningsfunktion för Microsoft Entra-ID, till exempel åtkomstgranskningar.

  • Programmet har migrerats till Microsoft Entra-ID när det har använt en egen identitetsprovider
  • Program som inte använder Microsoft Entra-ID som enda identitetsprovider
  • Programmet använder inte Microsoft Entra-ID som identitetsprovider och stöder inte heller etablering

Mer information om de två första scenarierna, där programmet stöder etablering, eller använder en LDAP-katalog, SQL-databas, har ett SOAP- eller REST-API eller förlitar sig på Microsoft Entra-ID som identitetsprovider finns i artikeln som styr ett programs befintliga användare. Den här artikeln beskriver hur du använder funktioner för identitetsstyrning för befintliga användare av dessa programkategorier.

Den här artikeln beskriver det tredje scenariot. För vissa äldre program är det kanske inte möjligt att ta bort andra identitetsprovidrar eller lokal autentisering med autentiseringsuppgifter från programmet, eller aktivera stöd för etableringsprotokoll för dessa program. Om du vill använda Microsoft Entra-ID för att granska vem som har åtkomst till programmet, eller ta bort någons åtkomst från programmet, måste du skapa tilldelningar i Microsoft Entra-ID som representerar programanvändare. Den här artikeln beskriver det scenariot för ett program som inte använder Microsoft Entra-ID som identitetsprovider och inte stöder etablering.

Licenskrav

För att kunna använda den här funktionen krävs Microsoft Entra ID-styrningslicenser. Information om hur du hittar rätt licens för dina krav finns i Grunderna för Microsoft Entra ID-styrningslicensiering.

Terminologi

Den här artikeln illustrerar processen för att hantera programrolltilldelningar med hjälp av Microsoft Graph PowerShell-cmdletar. Den använder följande Microsoft Graph-terminologi.

Diagram som illustrerar Microsoft Graph-terminologi.

I Microsoft Entra-ID representerar ett huvudnamn för tjänsten (ServicePrincipal) ett program i en viss organisations katalog. ServicePrincipal har en egenskap med namnet AppRoles som visar de roller som ett program stöder, till exempel Marketing specialist. AppRoleAssignment länkar en användare till ett huvudnamn för tjänsten och anger vilken roll användaren har i programmet.

Du kanske också använder Åtkomstpaket för Microsoft Entra-berättigandehantering för att ge användarna tidsbegränsad åtkomst till programmet. I berättigandehantering AccessPackage innehåller en eller flera resursroller, eventuellt från flera tjänsthuvudnamn. AccessPackage har också tilldelningar (Assignment) för användare till åtkomstpaketet.

När du skapar en tilldelning för en användare till ett åtkomstpaket skapar Microsoft Entra-rättighetshantering automatiskt de nödvändiga AppRoleAssignment instanserna för användaren till varje program. Mer information finns i självstudien Hantera åtkomst till resurser i Microsoft Entra-berättigandehantering om hur du skapar åtkomstpaket via PowerShell.

Innan du börjar

  • Du måste ha någon av följande licenser i klientorganisationen:

    • Microsoft Entra ID P2 eller Microsoft Entra ID-styrning
    • Enterprise Mobility + Security E5-licens
  • Du måste ha en lämplig administrativ roll. Om det är första gången du utför de här stegen behöver du rollen Global administratör för att auktorisera användningen av Microsoft Graph PowerShell i din klientorganisation.

  • Ditt program behöver ett huvudnamn för tjänsten i klientorganisationen. Om det inte redan finns ett huvudnamn för tjänsten kan du registrera ett program som representerar det i Microsoft Entra-ID.

Samla in befintliga användare från ett program

Det första steget mot att se till att alla användare registreras i Microsoft Entra-ID är att samla in listan över befintliga användare som har åtkomst till programmet.

Vissa program kan ha ett inbyggt kommando för att exportera en lista över aktuella användare från datalagret. I andra fall kan programmet förlita sig på en extern katalog eller databas.

I vissa miljöer kan programmet finnas i ett nätverkssegment eller system som inte är lämpligt för att hantera åtkomst till Microsoft Entra-ID. Du kan därför behöva extrahera listan över användare från programmet, katalogen eller databasen och sedan överföra den som en fil till ett annat system som kan användas för Microsoft Entra-interaktioner.

Om ditt program har en LDAP-katalog eller SQL-databas kan du läsa Samla in befintliga användare från ett program för rekommendationer om hur du extraherar användarsamlingen.

Om programmet inte har någon katalog eller databas måste du annars kontakta programmets ägare och låta dem ange en lista över användare. Detta kan vara i ett format som en CSV-fil, med en rad per användare. Se till att ett fält för varje användare i filen innehåller en unik identifierare, till exempel en e-postadress, som också finns på användare i Microsoft Entra-ID.

Om det här systemet inte har Microsoft Graph PowerShell-cmdletar installerade eller inte har anslutning till Microsoft Entra-ID överför du CSV-filen som innehåller listan över användare till ett system som har Microsoft Graph PowerShell-cmdletar installerade.

Bekräfta att Microsoft Entra ID har användare som matchar användare från programmet

Nu när du har en lista över alla användare som hämtats från programmet matchar du dessa användare från programmets datalager med användare i Microsoft Entra-ID.

Hämta ID:t för användarna i Microsoft Entra-ID

Det här avsnittet visar hur du interagerar med Microsoft Entra-ID med hjälp av Microsoft Graph PowerShell-cmdletar .

Första gången din organisation använder dessa cmdletar för det här scenariot måste du ha en global administratörsroll så att Microsoft Graph PowerShell kan användas i din klientorganisation. Efterföljande interaktioner kan använda en lägre privilegierad roll, till exempel:

  • Användaradministratör, om du förväntar dig att skapa nya användare.
  • Programadministratör eller identitetsstyrningsadministratör om du bara hanterar programrolltilldelningar.
  1. Öppna PowerShell.

  2. Om du inte redan har installerat Microsoft Graph PowerShell-modulerna installerar du modulen Microsoft.Graph.Users och andra med hjälp av det här kommandot:

    Install-Module Microsoft.Graph
    

    Om du redan har installerat modulerna kontrollerar du att du använder en ny version:

    Update-Module microsoft.graph.users,microsoft.graph.identity.governance,microsoft.graph.applications
    
  3. Anslut till Microsoft Entra-ID:

    $msg = Connect-MgGraph -ContextScope Process -Scopes "User.ReadWrite.All,Application.ReadWrite.All,AppRoleAssignment.ReadWrite.All,EntitlementManagement.ReadWrite.All"
    
  4. Om det är första gången du använder det här kommandot kan du behöva godkänna att Microsoft Graph-kommandoradsverktygen har dessa behörigheter.

  5. Läs listan över användare som hämtats från programmets datalager i PowerShell-sessionen. Om listan över användare fanns i en CSV-fil kan du använda PowerShell-cmdleten Import-Csv och ange namnet på filen från föregående avsnitt som ett argument.

    Om filen som hämtas från SAP Cloud Identity Services till exempel heter Users-exported-from-sap.csv och finns i den aktuella katalogen anger du det här kommandot.

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

    Om du till exempel använder en databas eller katalog, om filen heter users.csv och finns i den aktuella katalogen, anger du följande kommando:

    $filename = ".\users.csv"
    $dbusers = Import-Csv -Path $filename -Encoding UTF8
    
  6. Välj kolumnen i den users.csv fil som ska matcha med ett attribut för en användare i Microsoft Entra-ID.

    Om du använder SAP Cloud Identity Services är standardmappningen SAP SCIM-attributet userName med Microsoft Entra ID-attributet userPrincipalName:

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

    Om du till exempel använder en databas eller katalog kan du ha användare i en databas där värdet i kolumnen med namnet EMail är samma värde som i Microsoft Entra-attributet userPrincipalName:

    $db_match_column_name = "EMail"
    $azuread_match_attr_name = "userPrincipalName"
    
  7. Hämta ID:t för dessa användare i Microsoft Entra-ID.

    Följande PowerShell-skript använder värdena $dbusers, $db_match_column_nameoch som $azuread_match_attr_name angavs tidigare. Den frågar Microsoft Entra-ID för att hitta en användare som har ett attribut med ett matchande värde för varje post i källfilen. Om det finns många användare i filen som hämtas från SAP Cloud Identity Services, databasen eller katalogen för källan kan det ta flera minuter att slutföra det här skriptet. Om du inte har ett attribut i Microsoft Entra-ID som har värdet och behöver använda ett contains eller annat filteruttryck måste du anpassa skriptet och det i steg 11 nedan för att använda ett annat filteruttryck.

    $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. Visa resultatet av tidigare frågor. Se om någon av användarna i SAP Cloud Identity Services, databasen eller katalogen inte kunde finnas i Microsoft Entra-ID på grund av fel eller saknade matchningar.

    Följande PowerShell-skript visar antalet poster som inte fanns:

    $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. När skriptet är klart anger det ett fel om några poster från datakällan inte fanns i Microsoft Entra-ID. Om inte alla poster för användare från programmets datalager kunde finnas som användare i Microsoft Entra-ID måste du undersöka vilka poster som inte matchade och varför.

    Till exempel kan någons e-postadress och userPrincipalName ha ändrats i Microsoft Entra-ID utan att deras motsvarande mail egenskap uppdaterades i programmets datakälla. Eller så kanske användaren redan har lämnat organisationen men fortfarande finns i programmets datakälla. Eller så kan det finnas ett leverantörs- eller superadministratörskonto i programmets datakälla som inte motsvarar någon specifik person i Microsoft Entra-ID.

  10. Om det fanns användare som inte kunde hittas i Microsoft Entra-ID eller inte var aktiva och kunde logga in, men du vill att deras åtkomst ska granskas eller deras attribut uppdateras i SAP Cloud Identity Services, databasen eller katalogen, måste du uppdatera programmet, matchningsregeln eller uppdatera eller skapa Microsoft Entra-användare åt dem. Mer information om vilka ändringar som ska utföras finns i Hantera mappningar och användarkonton i program som inte matchade användare i Microsoft Entra-ID.

    Om du väljer alternativet att skapa användare i Microsoft Entra-ID kan du skapa användare i grupp med hjälp av antingen:

    Se till att dessa nya användare är ifyllda med de attribut som krävs för att Microsoft Entra-ID ska matcha dem senare med de befintliga användarna i programmet och de attribut som krävs av Microsoft Entra-ID, inklusive userPrincipalName, mailNickname och displayName. userPrincipalName Måste vara unikt bland alla användare i katalogen.

    Du kan till exempel ha användare i en databas där värdet i kolumnen med namnet EMail är det värde som du vill använda som Microsoft Entra-användarens huvudnamn, värdet i kolumnen Alias innehåller e-postnamnet Microsoft Entra och värdet i kolumnen Full name innehåller användarens visningsnamn:

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

    Sedan kan du använda det här skriptet för att skapa Microsoft Entra-användare för användare i SAP Cloud Identity Services, databasen eller katalogen som inte matchade med användare i Microsoft Entra-ID. Observera att du kan behöva ändra det här skriptet för att lägga till ytterligare Microsoft Entra-attribut som behövs i din organisation, eller om $azuread_match_attr_name varken är mailNickname eller userPrincipalName, för att kunna ange det Microsoft Entra-attributet.

    $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. När du har lagt till användare som saknas i Microsoft Entra-ID kör du skriptet från steg 7 igen. Kör sedan skriptet från steg 8. Kontrollera att inga fel rapporteras.

    $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." 
    

Registrera programmet

Om programmet redan är registrerat i Microsoft Entra-ID fortsätter du till nästa steg.

Kontot du använder måste ha behörighet att hantera program i Microsoft Entra-ID. Någon av följande Microsoft Entra-roller innehåller de behörigheter som krävs:

  1. Skapa programmet och tjänstens huvudnamn.

    Om företagsprogrammet till exempel heter CORPDB1anger du följande kommandon:

    $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. Lägg till en roll i programmet och tagga programmet som integrerat med Microsoft Entra-ID så att dess tilldelningar kan granskas. Om rollnamnet till exempel är Generalanger du det värdet i följande PowerShell-kommandon:

    $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
    

Sök efter användare som inte redan har tilldelats till programmet

Föregående steg har bekräftat att alla användare i programmets datalager finns som användare i Microsoft Entra-ID. De kanske dock inte alla för närvarande tilldelas till programmets roller i Microsoft Entra-ID. Nästa steg är därför att se vilka användare som inte har tilldelningar till programroller.

  1. Leta upp tjänstens huvudnamns-ID för programmets tjänsthuvudnamn.

    Om företagsprogrammet till exempel heter CORPDB1anger du följande kommandon:

    $azuread_app_name = "CORPDB1"
    $azuread_sp_filter = "displayName eq '" + ($azuread_app_name -replace "'","''") + "'"
    $azuread_sp = Get-MgServicePrincipal -Filter $azuread_sp_filter -All
    
  2. Hämta de användare som för närvarande har tilldelningar till programmet i Microsoft Entra-ID.

    Detta bygger på variabeluppsättningen $azuread_sp i föregående kommando.

    $azuread_existing_assignments = @(Get-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $azuread_sp.Id -All)
    
  3. Jämför listan över användar-ID:n från föregående avsnitt med de användare som för närvarande är tilldelade till programmet:

    $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."
    

    Om noll användare inte har tilldelats till programroller, vilket anger att alla användare har tilldelats till programroller, behöver du inte göra några ytterligare ändringar innan du utför en åtkomstgranskning.

    Men om en eller flera användare för närvarande inte är tilldelade till programrollerna måste du fortsätta proceduren och lägga till dem i en av programmets roller.

  4. Välj den roll som programmet ska tilldelas till de återstående användarna.

    Ett program kan ha mer än en roll. Använd det här kommandot om du vill visa en lista över tillgängliga roller:

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

    Välj lämplig roll i listan och hämta dess roll-ID. Om rollnamnet till exempel är Generalanger du det värdet i följande PowerShell-kommandon:

    $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"}
    

Skapa approlltilldelningar i Microsoft Entra-ID

För att Microsoft Entra-ID ska matcha användarna i programmet med användarna i Microsoft Entra-ID måste du skapa programrolltilldelningar i Microsoft Entra-ID.

När en programrolltilldelning skapas i Microsoft Entra-ID för en användare till ett program, och programmet inte stöder etablering, så

  • Användaren blir kvar i programmet på obestämd tid om de inte uppdateras utanför Microsoft Entra-ID eller tills tilldelningen i Microsoft Entra-ID har tagits bort.
  • Vid nästa granskning av programmets rolltilldelningar tas användaren med i granskningen.
  • Om användaren nekas i en åtkomstgranskning tas deras programrolltilldelning bort.
  1. Skapa programrolltilldelningar för användare som för närvarande inte har rolltilldelningar:

    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. Vänta en minut på att ändringarna ska spridas inom Microsoft Entra-ID.

  3. Fråga Microsoft Entra-ID för att hämta den uppdaterade listan över rolltilldelningar:

    $azuread_existing_assignments = @(Get-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $azuread_sp.Id -All)
    
  4. Jämför listan över användar-ID:n från föregående avsnitt med de användare som nu har tilldelats till programmet:

    $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."
    }
    

    Om några användare inte har tilldelats till programroller kontrollerar du microsoft Entra-granskningsloggen efter ett fel från ett tidigare steg.

Välj lämpliga granskare

När du skapar varje åtkomstgranskning kan administratörer välja en eller flera granskare. Granskarna kan utföra en granskning genom att välja användare för fortsatt åtkomst till en resurs eller ta bort dem.

Vanligtvis ansvarar en resursägare för att utföra en granskning. Om du skapar en granskning av en grupp, som en del av granskningsåtkomsten för ett program integrerat i mönster B, kan du välja gruppägare som granskare. Eftersom program i Microsoft Entra-ID inte nödvändigtvis har en ägare är det inte möjligt att välja programägare som granskare. När du skapar granskningen kan du i stället ange namnen på programägarna som granskare.

Du kan också välja att ha en granskning i flera steg när du skapar en granskning av en grupp eller ett program. Du kan till exempel välja att låta chefen för varje tilldelad användare utföra den första fasen av granskningen och resursägaren den andra fasen. På så sätt kan resursägaren fokusera på de användare som redan har godkänts av sin chef.

Innan du skapar granskningarna kontrollerar du att du har tillräckligt med Microsoft Entra ID P2- eller Microsoft Entra ID Governance SKU-platser i din klientorganisation. Kontrollera också att alla granskare är aktiva användare med e-postadresser. När åtkomstgranskningarna börjar granskar de var och en ett av dem ett e-postmeddelande från Microsoft Entra-ID. Om granskaren inte har någon postlåda får de inte e-postmeddelandet när granskningen startar eller en e-postpåminnelse. Och om de blockeras från att kunna logga in på Microsoft Entra-ID kan de inte utföra granskningen.

Skapa granskning av programrolltilldelningar

När användarna är i programrollerna och granskarna har identifierats kan du konfigurera Microsoft Entra-ID för att starta en granskning.

Följ anvisningarna i guiden för att skapa en åtkomstgranskning av grupper eller program för att skapa granskning av programmets rolltilldelningar. Konfigurera granskningen så att den tillämpar resultat när den är klar.

Hämta de tilldelningar som uppdateras när granskningarna har slutförts

  1. När granskningen är klar kan du hämta den uppdaterade listan över användare med programrolltilldelningar.

    $res = (Get-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $azuread_sp.Id -All)
    
  2. Kolumnerna PrincipalDisplayName och PrincipalId innehåller visningsnamnen och Microsoft Entra-användar-ID:t för varje användare som behåller en programrolltilldelning.

Konfigurera integrering av berättigandehantering med ServiceNow för biljetthantering (valfritt)

Om du har ServiceNow kan du välja att konfigurera automatisk skapande av ServiceNow-biljetter med hjälp av integreringen av berättigandehantering via Logic Apps. I det scenariot kan berättigandehantering automatiskt skapa ServiceNow-biljetter för manuell etablering av användare som har fått åtkomstpakettilldelningar.

Nästa steg