Styra ett programs befintliga användare – 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.

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.

Programmet har migrerats till Microsoft Entra-ID när det har använt en egen identitetsprovider

I det första scenariot finns programmet redan i miljön. Tidigare använde programmet sin egen identitetsprovider eller datalager för att spåra vilka användare som hade åtkomst.

När du ändrar programmet så att det förlitar sig på Microsoft Entra-ID kan endast användare som har Microsoft Entra-ID och tillåten åtkomst till programmet komma åt det. Som en del av konfigurationsändringen kan du välja att ta in befintliga användare från programmets datalager i Microsoft Entra-ID. Dessa användare fortsätter sedan att ha åtkomst via Microsoft Entra-ID.

Användare som är associerade med programmet som representeras i Microsoft Entra-ID gör det möjligt för Microsoft Entra-ID att spåra användare som har åtkomst till programmet, även om deras relation till programmet har sitt ursprung någon annanstans. Relationen kan till exempel ha sitt ursprung i ett programs databas eller katalog.

När Microsoft Entra-ID är medvetet om en användares tilldelning kan det skicka uppdateringar till programmets datalager. Uppdateringar inkludera när användarens attribut ändras eller när användaren hamnar utanför programmets omfång.

Program som inte använder Microsoft Entra-ID som enda identitetsprovider

I det andra scenariot förlitar sig ett program inte bara på Microsoft Entra-ID som identitetsprovider.

I vissa fall kan ett program förlita sig på AD-grupper. Det här scenariot beskrivs i Mönster B i Förbereda för en åtkomstgranskning av användarnas åtkomst till ett program. Du behöver inte konfigurera etablering för programmet enligt beskrivningen i den artikeln, utan följ i stället anvisningarna för Mönster B i den artikeln om hur du granskar medlemskapet i AD-grupper.

I andra fall kan ett program ha stöd för flera identitetsprovidrar eller ha en egen inbyggd lagring av autentiseringsuppgifter. Det här scenariot beskrivs som Mönster C i Förbereda för en åtkomstgranskning av användarnas åtkomst till ett program.

Det kanske inte går att ta bort andra identitetsprovidrar eller autentisering med lokala autentiseringsuppgifter från programmet. Om du i så fall 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 som inte förlitar sig på Microsoft Entra-ID för autentisering.

Att ha dessa tilldelningar är nödvändigt om du planerar att granska alla användare med åtkomst till programmet som en del av en åtkomstgranskning.

Anta till exempel att en användare finns i programmets datalager. Microsoft Entra-ID är konfigurerat för att kräva rolltilldelningar till programmet. Användaren har dock ingen programrolltilldelning i Microsoft Entra-ID.

Om användaren uppdateras i Microsoft Entra-ID skickas inga ändringar till programmet. Och om programmets rolltilldelningar granskas tas inte användaren med i granskningen. För att alla användare ska kunna ingå i granskningen är det nödvändigt att ha programrolltilldelningar för alla användare av programmet.

Programmet använder inte Microsoft Entra-ID som identitetsprovider och stöder inte heller etablering

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.

Det scenariot för ett program som inte stöder etableringsprotokoll beskrivs i en separat artikel, som styr befintliga användare av ett program som inte stöder etablering.

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. Ett program kan ha mer än ett huvudnamn för tjänsten, om enkel inloggning till programmet och etablering till programmet hanteras separat.

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 programs tjänsthuvudnamn i åtkomstpaketet. 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

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 den katalogen eller databasen och sedan överföra den som en fil till ett annat system som kan användas för Microsoft Entra-interaktioner.

I det här avsnittet beskrivs fyra metoder för hur du hämtar en lista över användare i en CSV-fil (kommaavgränsade värden):

  • Från en LDAP-katalog
  • Från en SQL Server-databas
  • Från en annan SQL-baserad databas
  • Från SAP Cloud Identity Services

Samla in befintliga användare från ett program som använder en LDAP-katalog

Det här avsnittet gäller för program som använder en LDAP-katalog som underliggande datalager för användare som inte autentiserar mot Microsoft Entra-ID. Många LDAP-kataloger, till exempel Active Directory, innehåller ett kommando som matar ut en lista över användare.

  1. Identifiera vilka av användarna i katalogen som ska vara användare av programmet. Det här valet beror på programmets konfiguration. För vissa program är alla användare som finns i en LDAP-katalog en giltig användare. Andra program kan kräva att användaren har ett visst attribut eller är medlem i en grupp i katalogen.

  2. Kör kommandot som hämtar den delmängden av användare från din katalog. Se till att utdata innehåller attributen för användare som ska användas för matchning med Microsoft Entra-ID. Exempel på dessa attribut är medarbetar-ID, kontonamn och e-postadress.

    Det här kommandot skulle till exempel skapa en CSV-fil i den aktuella filsystemkatalogen userPrincipalName med attributet för varje person i LDAP-katalogen:

    $out_filename = ".\users.csv"
    csvde -f $out_filename -l userPrincipalName,cn -r "(objectclass=person)"
    
  3. Om det behövs överför du CSV-filen som innehåller listan över användare till ett system med Microsoft Graph PowerShell-cmdletarna installerade.

  4. Fortsätt läsa på Bekräfta att Microsoft Entra-ID:t innehåller användare som matchar användare från programavsnittet senare i den här artikeln.

Samla in befintliga användare från ett programs databastabell med hjälp av en SQL Server-guide

Det här avsnittet gäller för program som använder SQL Server som underliggande datalager.

Hämta först en lista över användare från tabellerna. De flesta databaser är ett sätt att exportera innehållet i tabeller till ett standardfilformat, till exempel till en CSV-fil. Om programmet använder en SQL Server-databas kan du använda guiden Importera och exportera SQL Server för att exportera delar av en databas. Om du inte har något verktyg för databasen kan du använda ODBC-drivrutinen med PowerShell, enligt beskrivningen i nästa avsnitt.

  1. Logga in på systemet där SQL Server är installerat.
  2. Öppna SQL Server 2019 Import and Export (64 bitar) eller motsvarande för din databas.
  3. Välj den befintliga databasen som källa.
  4. Välj flat filmål som mål. Ange ett filnamn och ändra värdet för sidan Kod till 65001 (UTF-8).
  5. Slutför guiden och välj alternativet att köra omedelbart.
  6. Vänta tills körningen är klar.
  7. Om det behövs överför du CSV-filen som innehåller listan över användare till ett system med Microsoft Graph PowerShell-cmdletarna installerade.
  8. Fortsätt läsa på Bekräfta att Microsoft Entra-ID:t innehåller användare som matchar användare från programavsnittet senare i den här artikeln.

Samla in befintliga användare från ett programs databastabell med hjälp av PowerShell

Det här avsnittet gäller för program som använder en annan SQL-databas som underliggande datalager, där du använder ECMA-Anslut eller-värden för att etablera användare i programmet. Om du ännu inte har konfigurerat etableringsagenten använder du den guiden för att skapa den DSN-anslutningsfil som du ska använda i det här avsnittet.

  1. Logga in på systemet där etableringsagenten är eller kommer att installeras.

  2. Öppna PowerShell.

  3. Skapa en anslutningssträng för att ansluta till databassystemet.

    Komponenterna i en anslutningssträng beror på databasens krav. Om du använder SQL Server kan du läsa listan över DSN och anslutningssträng nyckelord och attribut.

    Om du använder en annan databas måste du inkludera de obligatoriska nyckelorden för att ansluta till databasen. Om databasen till exempel använder det fullständigt kvalificerade sökvägsnamnet för DSN-filen, ett användar-ID och ett lösenord skapar du anslutningssträng med hjälp av följande kommandon:

    $filedsn = "c:\users\administrator\documents\db.dsn"
    $db_cs = "filedsn=" + $filedsn + ";uid=p;pwd=secret"
    
  4. Öppna en anslutning till databasen och ange anslutningssträng med hjälp av följande kommandon:

    $db_conn = New-Object data.odbc.OdbcConnection
    $db_conn.ConnectionString = $db_cs
    $db_conn.Open()
    
  5. Skapa en SQL-fråga för att hämta användarna från databastabellen. Se till att inkludera de kolumner som ska användas för att matcha användare i programmets databas med dessa användare i Microsoft Entra-ID. Kolumner kan innehålla medarbetar-ID, kontonamn eller e-postadress.

    Om användarna till exempel finns i en databastabell med namnet USERS som har kolumner name och emailanger du följande kommando:

    $db_query = "SELECT name,email from USERS"
    
    
  6. Skicka frågan till databasen via anslutningen:

    $result = (new-object data.odbc.OdbcCommand($db_query,$db_conn)).ExecuteReader()
    $table = new-object System.Data.DataTable
    $table.Load($result)
    

    Resultatet är listan över rader som representerar användare som hämtades från frågan.

  7. Skriv resultatet till en CSV-fil:

    $out_filename = ".\users.csv"
    $table.Rows | Export-Csv -Path $out_filename -NoTypeInformation -Encoding UTF8
    
  8. 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.

Samla in befintliga användare från SAP Cloud Identity Services

Det här avsnittet gäller för SAP-program som använder SAP Cloud Identity Services som den underliggande tjänsten för användaretablering.

  1. Logga in på administratörskonsolen https://<tenantID>.accounts.ondemand.com/admin för SAP Cloud Identity Services eller https://<tenantID>.trial-accounts.ondemand.com/admin om en utvärderingsversion.
  2. Gå till Användare och auktoriseringar > Exportera användare.
  3. Välj alla attribut som krävs för att matcha Microsoft Entra-användare med dem i SAP. Detta inkluderar de SCIM ID, userName, emailsoch andra attribut som du kanske använder i dina SAP-system.
  4. Välj Exportera och vänta tills webbläsaren har laddat ned CSV-filen.
  5. 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.

Innan du fortsätter bör du granska informationen om matchande användare i käll- och målsystemen. Du konfigurerar Microsoft Entra-etablering med motsvarande mappningar efteråt. Det steget gör det möjligt för Microsoft Entra-etablering att köra frågor mot programmets datalager med samma matchande regler.

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.

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 du nyligen har skapat ett huvudnamn för tjänsten för ett program som använder en LDAP-katalog eller en SQL-databas använder du namnet på tjänstens huvudnamn.

    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 och ett huvudnamn för tjänsten kan ha ytterligare roller. Använd det här kommandot om du vill visa en lista över tillgängliga roller för tjänstens huvudnamn:

    $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 Adminanger du det värdet i följande PowerShell-kommandon:

    $azuread_app_role_name = "Admin"
    $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"}
    

Konfigurera programetablering

Om ditt program använder en LDAP-katalog, en SQL-databas, SAP Cloud Identity Services eller stöder SCIM, konfigurerar du etablering av Microsoft Entra-användare till programmet innan du skapar nya tilldelningar. Om du konfigurerar etablering innan tilldelningar skapas kan Microsoft Entra-ID matcha användarna i Microsoft Entra-ID:t med programrolltilldelningarna till de användare som redan finns i programmets datalager. Om ditt program har en lokal katalog eller databas som ska etableras och även stöder federerad enkel inloggning kan du behöva två tjänsthuvudnamn för att representera programmet i din katalog: en för etablering och en för enkel inloggning. Om ditt program inte stöder etablering fortsätter du att läsa i nästa avsnitt.

  1. Se till att programmet är konfigurerat för att kräva att användare har programrolltilldelningar, så att endast valda användare etableras i programmet.

  2. Om etableringen inte har konfigurerats för programmet konfigurerar du det nu (men startar inte etableringen):

  3. Kontrollera fliken Egenskaper för programmet. Kontrollera att alternativet Användartilldelning krävs är inställt på Ja. Om den är inställd på Nej kan alla användare i din katalog, inklusive externa identiteter, komma åt programmet och du kan inte granska åtkomsten till programmet.

  4. Kontrollera attributmappningarna för etablering till programmet. Kontrollera att Matcha objekt med det här attributet har angetts för microsoft entra-attributet och kolumnen som du använde i föregående avsnitt för matchning.

    Om dessa regler inte använder samma attribut som du använde tidigare kan Microsoft Entra-ID:t kanske inte hitta befintliga användare i programmets datalager när tilldelningar av programroll skapas. Microsoft Entra-ID kan sedan oavsiktligt skapa duplicerade användare.

  5. Kontrollera att det finns en attributmappning för isSoftDeleted till ett attribut för programmet.

    När en användare inte har tilldelats från programmet, mjuk tas bort i Microsoft Entra-ID eller blockeras från inloggning, uppdaterar Microsoft Entra-etablering attributet mappat till isSoftDeleted. Om inget attribut mappas kommer användare som senare inte har tilldelats från programrollen att fortsätta att finnas i programmets datalager.

  6. Om etablering redan har aktiverats för programmet kontrollerar du att programetablering inte är i karantän. Lös eventuella problem som orsakar karantänen innan du fortsätter.

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. Varje programrolltilldelning associerar en användare med en programroll för ett huvudnamn för tjänsten.

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

  • Microsoft Entra-ID frågar programmet via SCIM, dess katalog eller databas för att avgöra om användaren redan finns.
  • När efterföljande uppdateringar görs av användarens attribut i Microsoft Entra-ID skickar Microsoft Entra-ID dessa uppdateringar till programmet.
  • 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 åtkomstgranskning av programmets rolltilldelningar inkluderas användaren i åtkomstgranskningen.
  • Om användaren nekas i en åtkomstgranskning tas deras programrolltilldelning bort. Microsoft Entra-ID meddelar programmet att användaren är blockerad från inloggning.

Om programmet inte stöder etablering kan du

  • 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. Användaren kommer inte längre att kunna logga in från Microsoft Entra-ID till programmet.
  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.

Kontrollera att Microsoft Entra-etableringen har matchat befintliga användare

  1. 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)
    
  2. 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.

  3. Om programtjänstens huvudnamn har konfigurerats för etablering och etableringsstatusenför tjänstens huvudnamn är Av aktiverar du den till . Du kan också börja etablera med graph-API:er.

  4. Baserat på vägledningen för hur lång tid det tar att etablera användare väntar du på att Microsoft Entra-etableringen ska matcha de befintliga användarna av programmet med de användare som just har tilldelats.

  5. Övervaka etableringsstatusenvia portalen eller Graph API:er för att säkerställa att alla användare har matchats.

    Om du inte ser användare som etableras kan du läsa felsökningsguiden om inga användare har etablerats. Om du ser ett fel i etableringsstatusen och etablerar till ett lokalt program kontrollerar du felsökningsguiden för etablering av lokala program.

  6. Kontrollera etableringsloggen via administrationscentret för Microsoft Entra eller Graph-API:er. Filtrera loggen till statusfelet. Om det uppstår fel med en ErrorCode av DuplicateTargetEntries indikerar detta en tvetydighet i dina matchningsregler för etablering, och du måste uppdatera Microsoft Entra-användarna eller mappningarna som används för matchning för att säkerställa att varje Microsoft Entra-användare matchar en programanvändare. Filtrera sedan loggen till åtgärden Skapa och status hoppas över. Om användarna hoppades över med SkipReason-koden NotEffectivelyEntitled kan detta tyda på att användarkontona i Microsoft Entra-ID:t inte matchades eftersom användarkontostatusen var Inaktiverad.

När Microsoft Entra-etableringstjänsten har matchat användarna baserat på de programrolltilldelningar som du har skapat skickas efterföljande ändringar till dessa användare till programmet.

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.

Konfigurera åtkomstgranskningar eller berättigandehantering

När användarna är i programrollerna, och du har identifierat granskarna, kan du styra dessa användare och eventuella ytterligare användare som behöver åtkomst, med hjälp av åtkomstgranskningar eller berättigandehantering.

Granska och ta bort befintlig åtkomst med hjälp av en åtkomstgranskning av approlltilldelningar

Om programmet har flera programroller, representeras av flera tjänsthuvudnamn eller om du vill ha en process för användare att begära eller tilldelas åtkomst till programmet, fortsätter du i följande avsnitt i den här artikeln för att styra åtkomst med hjälp av berättigandehantering.

Nu när de befintliga användarna har tilldelningar till en programroll kan du konfigurera Microsoft Entra-ID för att starta en granskning av dessa tilldelningar.

  1. För det här steget måste du vara i Global administrator rollen eller Identity Governance administrator .

  2. 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. Du kan skapa åtkomstgranskningen i PowerShell med cmdleten New-MgIdentityGovernanceAccessReviewDefinitionfrån Microsoft Graph PowerShell-cmdletar för modulen Identitetsstyrning . Mer information finns i exempel.

    Kommentar

    Om du aktiverar granskningsbeslutshjälpare när du skapar åtkomstgranskningen baseras rekommendationerna för beslutshjälpen på 30-dagarsintervallet beroende på när användaren senast loggade in på programmet med hjälp av Microsoft Entra-ID.

  3. När åtkomstgranskningen startar ber du granskarna att ge indata. Som standard får de var och en ett e-postmeddelande från Microsoft Entra-ID med en länk till åtkomstpanelen, där de granskar åtkomsten till programmet.

  4. När granskningarna har startat kan du övervaka deras förlopp och uppdatera godkännarna om det behövs tills åtkomstgranskningen har slutförts. Du kan sedan bekräfta att användarna, vars åtkomst nekades av granskarna, får sin åtkomst borttagen från programmet.

  5. Om automatisk tillämpning inte valdes när granskningen skapades måste du tillämpa granskningsresultaten när den är klar.

  6. Vänta tills status för granskningen har ändrats till Resultat tillämpat. Du bör förvänta dig att se nekade användare, om några, att deras programrolltilldelningar tas bort om några minuter.

  7. När resultatet har tillämpats börjar Microsoft Entra-ID avetablera nekade användare från programmet. Baserat på vägledningen för hur lång tid det tar att etablera användare väntar du på att Microsoft Entra-etableringen ska börja avetablera de nekade användarna. Övervaka etableringsstatusen via portalen eller Graph-API:erna för att säkerställa att alla nekade användare har tagits bort.

    Om du inte ser användare som avetableras kan du läsa felsökningsguiden om inga användare har etablerats. Om du ser ett fel i etableringsstatusen och etablerar till ett lokalt program kontrollerar du felsökningsguiden för etablering av lokala program.

Nu när du har en baslinje som säkerställer att befintlig åtkomst har granskats kan du fortsätta i nästa avsnitt för att konfigurera berättigandehantering för att aktivera nya åtkomstbegäranden.

Styra åtkomst med hjälp av berättigandehantering

I andra situationer, till exempel om du vill ha olika granskare för varje programroll, representeras programmet av flera tjänsthuvudnamn, eller så vill du ha en process för användare att begära eller tilldelas åtkomst till programmet. Sedan kan du konfigurera Microsoft Entra-ID med ett åtkomstpaket för varje programroll. Varje åtkomstpaket kan ha en princip för återkommande granskning av tilldelningar som gjorts till åtkomstpaketet. När åtkomstpaketen och principerna har skapats kan du tilldela de användare som har befintliga programrolltilldelningar till åtkomstpaketen, så att deras tilldelningar kan granskas via åtkomstpaketet.

I det här avsnittet konfigurerar du Microsoft Entra-berättigandehantering för en granskning av tilldelningar av åtkomstpaket som innehåller approlltilldelningarna och konfigurerar även ytterligare principer så att användarna kan begära åtkomst till programmets roller.

  1. För det här steget måste du vara i Global administrator rollen eller Identity Governance administrator eller delegeras som katalogskapare och ägare av programmet.
  2. Om du inte redan har en katalog för ditt programstyrningsscenario skapar du en katalog i Microsoft Entra-berättigandehantering. Du kan använda ett PowerShell-skript för att skapa varje katalog.
  3. Fyll i katalogen med nödvändiga resurser genom att lägga till programmet och alla Microsoft Entra-grupper som programmet förlitar sig på, som resurser i katalogen. Du kan använda ett PowerShell-skript för att lägga till varje resurs i en katalog.
  4. För vart och ett av programmen och för var och en av deras programroller eller grupper skapar du ett åtkomstpaket som innehåller rollen eller gruppen som resurs. I det här skedet av konfigurationen av dessa åtkomstpaket konfigurerar du den första tilldelningsprincipen för åtkomstpaket i varje åtkomstpaket som en princip för direkttilldelning, så att endast administratörer kan skapa tilldelningar för den principen, ange åtkomstgranskningskraven för befintliga användare, om sådana finns, så att de inte behåller åtkomsten på obestämd tid. Om du har många åtkomstpaket kan du använda ett PowerShell-skript för att skapa varje åtkomstpaket i en katalog.
  5. För varje åtkomstpaket tilldelar du befintliga användare av programmet i motsvarande roll, eller medlemmar i den gruppen, åtkomstpaketet och dess direkttilldelningsprincip. Du kan tilldela en användare direkt till ett åtkomstpaket med hjälp av administrationscentret för Microsoft Entra eller massvis via Graph eller PowerShell.
  6. Om du har konfigurerat åtkomstgranskningar i tilldelningsprinciperna för åtkomstpaket ber du granskarna att ge indata när åtkomstgranskningen startar. Som standard får de var och en ett e-postmeddelande från Microsoft Entra-ID med en länk till åtkomstpanelen, där de granskar tilldelningarna av åtkomstpaket. När granskningen är klar bör du förvänta dig att se nekade användare, om några, att deras programrolltilldelningar tas bort om några minuter. Därefter börjar Microsoft Entra-ID avetablera nekade användare från programmet. Baserat på vägledningen för hur lång tid det tar att etablera användare väntar du på att Microsoft Entra-etableringen ska börja avetablera de nekade användarna. Övervaka etableringsstatusen via portalen eller Graph-API:erna för att säkerställa att alla nekade användare har tagits bort.
  7. Om du har ansvarsfördelningskrav konfigurerar du de inkompatibla åtkomstpaketen eller befintliga grupper för ditt åtkomstpaket. Om ditt scenario kräver möjligheten att åsidosätta en ansvarsavgränsningskontroll kan du även konfigurera ytterligare åtkomstpaket för dessa åsidosättningsscenarier.
  8. Om du vill tillåta användare som inte redan har åtkomst att begära åtkomst skapar du ytterligare åtkomstpakettilldelningsprinciper för användare i varje åtkomstpaket för att begära åtkomst. Konfigurera kraven för godkännande och återkommande åtkomstgranskning i den principen.

Nästa steg