Verwalten der Benutzer einer Anwendung ohne Bereitstellungsunterstützung – Microsoft PowerShell

Es gibt drei gängige Szenarien, in denen Microsoft Entra ID mit vorhandenen Benutzer*innen einer Anwendung aufgefüllt werden muss, bevor Sie die Anwendung mit einem Microsoft Entra ID Governance-Feature wie beispielsweise Zugriffsüberprüfungen verwenden.

  • Eine Anwendung, die nach Verwendung eines eigenen Identitätsanbieters zu Microsoft Entra ID migriert wurde
  • Eine Anwendung, die Microsoft Entra ID nicht als einzigen Identitätsanbieter verwendet
  • Anwendung verwendet Microsoft Entra ID nicht als Identitätsanbieter und unterstützt keine Bereitstellung

Weitere Informationen zu den ersten beiden Szenarien, in denen die Anwendung eine Bereitstellung unterstützt, ein LDAP-Verzeichnis oder eine SQL-Datenbank verwendet, über eine SOAP- oder REST-API verfügt oder sich auf Microsoft Entra ID als Identitätsanbieter stützt, finden Sie im Artikel Verwalten und Steuern der vorhandenen Benutzer*innen einer Anwendung. In diesem Artikel erfahren Sie, wie Sie die Identitätsverwaltungsfunktionen für bestehende Benutzer dieser Anwendungskategorien nutzen können.

Der vorliegende Artikel behandelt das dritte Szenario. Bei einigen Legacyanwendungen ist es eventuell nicht möglich, andere Identitätsanbieter oder die lokale Authentifizierung mit Anmeldeinformationen aus der Anwendung zu entfernen oder die Unterstützung von Bereitstellungsprotokollen für diese Anwendungen zu aktivieren. Wenn Sie für diese Anwendungen mithilfe von Microsoft Entra ID überprüfen möchten, wer Zugriff auf die Anwendung hat, oder jemandem den Zugriff auf die Anwendung entziehen möchten, müssen Sie in Microsoft Entra ID Zuweisungen erstellen, die Anwendungsbenutzer*innen repräsentieren. Der vorliegende Artikel befasst sich mit dem Szenario einer Anwendung, die nicht Microsoft Entra ID als Identitätsanbieter verwendet und keine Bereitstellung unterstützt.

Lizenzanforderungen

Für die Verwendung dieses Features sind Microsoft Entra ID Governance- oder Microsoft Entra Suite-Lizenzen erforderlich. Die richtige Lizenz für Ihre Anforderungen finden Sie unter Microsoft Entra ID Governance-Lizenzierungsgrundlagen.

Terminologie

In diesem Artikel wird der Prozess zum Verwalten von Anwendungsrollenzuweisungen mithilfe der Microsoft Graph PowerShell-Cmdlets veranschaulicht. Dabei wird die folgende Microsoft Graph-Terminologie verwendet.

Darstellung zur Microsoft Graph-Terminologie.

In Microsoft Entra ID stellt ein Dienstprinzipal (ServicePrincipal) eine Anwendung im Verzeichnis einer bestimmten Organisation dar. ServicePrincipal weist eine Eigenschaft AppRoles auf, in der die von einer Anwendung unterstützten Rollen aufgeführt werden (z. B. Marketing specialist). AppRoleAssignment verknüpft Benutzer*innen mit einem Dienstprinzipal und gibt an, welche Rolle diesen Benutzer*innen für eine Anwendung zugewiesen ist.

Sie können auch Microsoft Entra-Zugriffspakete für die Berechtigungsverwaltung verwenden, um Benutzern zeitlich begrenzten Zugriff auf die Anwendung zu gewähren. In der Berechtigungsverwaltung enthält AccessPackage eine oder mehrere Ressourcenrollen, die potenziell von mehreren Dienstprinzipalen stammen. AccessPackage verfügt zudem über Zuweisungen (Assignment) für Benutzer*innen für das Zugriffspaket.

Wenn Sie eine Zuweisung für Benutzer*innen für ein Zugriffspaket erstellen, erstellt die Microsoft Entra-Berechtigungsverwaltung für die Benutzer*innen automatisch die erforderlichen AppRoleAssignment-Instanzen für jede Anwendung. Weitere Informationen finden Sie im Tutorial Verwalten des Zugriffs auf Ressourcen in der Microsoft Entra-Berechtigungsverwaltung zum Erstellen von Zugriffspaketen über PowerShell.

Voraussetzungen

  • Sie müssen über eine der folgenden Lizenzen verfügen:

    • Microsoft Entra ID P2 oder Microsoft Entra ID Governance
    • Enterprise Mobility + Security E5-Lizenz
  • Sie müssen über eine entsprechende administrative Rolle verfügen. Wenn Sie diese Schritte zum ersten Mal ausführen, benötigen Sie die Rolle „Globaler Administrator“, um die Verwendung von Microsoft Graph PowerShell in Ihrem Mandanten zu autorisieren.

  • Ihre Anwendung benötigt einen Dienstprinzipal in Ihrem Mandanten. Wenn noch kein Dienstprinzipal vorhanden ist, können Sie eine Anwendung registrieren, die ihn in Microsoft Entra ID repräsentiert.

Sammeln vorhandener Benutzer aus einer Anwendung

Der erste Schritt, um sicherzustellen, dass alle Benutzer*innen in Microsoft Entra ID aufgezeichnet werden, besteht darin, die Liste der vorhandenen Benutzer*innen mit Zugriff auf die Anwendung zu erfassen.

Einige Anwendungen verfügen möglicherweise über einen integrierten Befehl, um eine Liste der aktuellen Benutzer*innen aus dem Datenspeicher zu exportieren. In anderen Fällen basiert die Anwendung möglicherweise auf einem externen Verzeichnis oder einer externen Datenbank.

In einigen Umgebungen befindet sich die Anwendung möglicherweise in einem Netzwerksegment oder System, das nicht für die Verwaltung des Zugriffs auf Microsoft Entra ID geeignet ist. Sie müssen daher ggf. die Liste der Benutzer*innen aus dieser Anwendung, dem Verzeichnis oder der Datenbank extrahieren und sie anschließend als Datei auf ein anderes System übertragen, das für Interaktionen mit Microsoft Entra ID genutzt werden kann.

Wenn Ihre Anwendung ein LDAP-Verzeichnis oder eine SQL-Datenbank umfasst, finden Sie unter Sammeln vorhandener Benutzer aus einer Anwendung Empfehlungen, wie Sie die Benutzersammlung extrahieren können.

Andernfalls, wenn die Anwendung kein Verzeichnis bzw. keine Datenbank umfasst, müssen Sie den Besitzer der Anwendung kontaktieren und ihn um eine Liste der Benutzer bitten. Diese Liste könnte in einem Format wie einer CSV-Datei vorliegen, mit einer Zeile pro Benutzer. Stellen Sie sicher, dass ein Feld aller Benutzer*innen in der Datei einen eindeutigen Bezeichner enthält, z. B. eine E-Mail-Adresse, die auch für die Benutzer*innen in Microsoft Entra ID vorhanden ist.

Wenn die Microsoft Graph PowerShell-Cmdlets nicht auf diesem System installiert sind oder keine Konnektivität mit Microsoft Entra ID besteht, übertragen Sie die CSV-Datei mit der Benutzerliste in ein System, auf dem die Microsoft Graph PowerShell-Cmdlets installiert sind.

Überprüfen, ob Microsoft Entra ID Benutzer*innen enthält, die mit Benutzer*innen in der Anwendung übereinstimmen

Nachdem Sie nun über eine Liste aller Benutzer*innen aus der Anwendung verfügen, führen Sie für diese Benutzer*innen aus dem Datenspeicher der Anwendung einen Abgleich mit den Benutzer*innen in Microsoft Entra ID durch.

Abrufen der IDs der Benutzer*innen in Microsoft Entra ID

In diesem Abschnitt wird gezeigt, wie Sie mithilfe von Microsoft Graph PowerShell-Cmdlets mit Microsoft Entra ID interagieren.

Wenn Ihre Organisation diese Cmdlets zum ersten Mal für dieses Szenario verwendet, müssen Sie über die Rolle „Globaler Administrator“ verfügen, um die Verwendung von Microsoft Graph PowerShell in Ihrem Mandanten zuzulassen. Für nachfolgende Interaktionen können Rollen mit geringerem Berechtigungsumfang verwendet werden. Dazu zählen z. B.:

  • „Benutzeradministrator“, wenn Sie beabsichtigen, neue Benutzer*innen zu erstellen.
  • „Anwendungsadministrator“ oder Identity Governance-Administrator, wenn Sie lediglich Anwendungsrollenzuweisungen verwalten.
  1. Öffnen Sie PowerShell.

  2. Wenn die Microsoft Graph PowerShell-Module noch nicht installiert sind, installieren Sie das Microsoft.Graph.Users-Modul und andere Module mit dem folgenden Befehl:

    Install-Module Microsoft.Graph
    

    Wenn die Module bereits installiert sind, stellen Sie sicher, dass Sie eine aktuelle Version verwenden:

    Update-Module microsoft.graph.users,microsoft.graph.identity.governance,microsoft.graph.applications
    
  3. Herstellen einer Verbindung mit Microsoft Entra ID:

    $msg = Connect-MgGraph -ContextScope Process -Scopes "User.ReadWrite.All,Application.ReadWrite.All,AppRoleAssignment.ReadWrite.All,EntitlementManagement.ReadWrite.All"
    
  4. Wenn Sie diesen Befehl zum ersten Mal verwendet haben, müssen Sie möglicherweise einwilligen, dass die Microsoft Graph-Befehlszeilentools über diese Berechtigungen verfügen.

  5. Lesen Sie die Liste der Benutzer, die vom Datenspeicher der Anwendung in die PowerShell-Sitzung abgerufen wurden. Wenn die Benutzerliste sich in einer CSV-Datei befindet, können Sie das PowerShell-Cmdlet Import-Csv verwenden und den Dateinamen aus dem vorherigen Abschnitt als Argument angeben.

    Wenn die aus SAP Cloud Identity Services abgerufene Datei z. B. Users-exported-from-sap.csv heißt und sich im aktuellen Verzeichnis befindet, geben Sie diesen Befehl ein.

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

    Wenn Sie allerdings beispielsweise eine Datenbank oder ein Verzeichnis verwenden und der Name der Datei users.csv lautet und sich die Datei im aktuellen Verzeichnis befindet, geben Sie diesen Befehl ein:

    $filename = ".\users.csv"
    $dbusers = Import-Csv -Path $filename -Encoding UTF8
    
  6. Wählen Sie die Spalte der Datei users.csv aus, die einem Benutzerattribut in Microsoft Entra ID entspricht.

    Wenn Sie SAP Cloud Identity Services verwenden, ist die Standardzuordnung zwischen dem SAP SCIM-Attribut userName und dem Microsoft Entra ID-Attribut userPrincipalName:

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

    Ein weiteres Beispiel: Wenn Sie eine Datenbank oder ein Verzeichnis verwenden, kann eine Datenbank beispielsweise Benutzer enthalten, deren Wert in der Spalte EMail mit dem Wert des Microsoft Entra ID-Attributs userPrincipalName übereinstimmt:

    $db_match_column_name = "EMail"
    $azuread_match_attr_name = "userPrincipalName"
    
  7. Rufen Sie die IDs dieser Benutzer*innen in Microsoft Entra ID ab.

    Im folgenden PowerShell-Skript werden die zuvor angegebenen Werte $dbusers, $db_match_column_name und $azuread_match_attr_name verwendet. Mit diesem Skript wird Microsoft Entra ID abgefragt, um eine*n Benutzer*in mit Attributen zu ermitteln, deren Werte mit den Datensätzen in der Quelldatei übereinstimmen. Wenn es viele Benutzer in der Datei gibt, die aus SAP Cloud Identity Services, einer Datenbank oder einem Verzeichnis als Quelle abgerufen wurde, kann die Ausführung dieses Skripts einige Minuten dauern. Wenn in Microsoft Entra ID kein Attribut mit dem Wert vorhanden ist und Sie contains oder einen anderen Filterausdruck verwenden müssen, müssen Sie dieses Skript und das Skript in Schritt 11 unten so anpassen, dass ein anderer Filterausdruck verwendet wird.

    $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. Zeigen Sie die Ergebnisse der vorherigen Abfragen an. Sehen Sie nach, ob Benutzer in SAP Cloud Identity Services, in der Datenbank oder im Verzeichnis aufgrund von Fehlern oder fehlenden Übereinstimmungen nicht in Microsoft Entra ID gefunden wurden.

    Mit dem folgenden PowerShell-Skript wird die Anzahl von Datensätzen angezeigt, die nicht gefunden wurden:

    $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. Nach Abschluss des Skripts wird ein Fehler ausgegeben, wenn Datensätze aus der Datenquelle nicht in Microsoft Entra ID gefunden wurden. Sollten nicht alle Datensätze für Benutzer*innen aus dem Datenspeicher der Anwendung als Benutzer*innen in Microsoft Entra ID gefunden werden, müssen Sie untersuchen, welche Datensätze nicht übereinstimmen und warum.

    Möglicherweise wurden z. B. die E-Mail-Adresse und der Benutzerprinzipalname einer Person in Microsoft Entra ID geändert, ohne dass die entsprechende mail-Eigenschaft in der Datenquelle der Anwendung aktualisiert wurde. Oder Benutzer*innen haben die Organisation bereits verlassen, sind aber noch immer in der Datenquelle der Anwendung vorhanden. Eine weitere Möglichkeit für fehlende Übereinstimmungen ist, dass ein Anbieter- oder Superadministratorkonto in der Datenquelle der Anwendung vorhanden ist, die keiner bestimmten Person in Microsoft Entra ID entspricht.

  10. Wenn Benutzer*innen vorhanden sind, die nicht in Microsoft Entra ID gefunden werden konnten oder die nicht aktiv waren und sich nicht anmelden konnten, Sie den Zugriff dieser Benutzer und Benutzerinnen jedoch überprüfen oder ihre Attribute in SAP Cloud Identity Services, in der Datenbank oder im Verzeichnis aktualisieren möchten, müssen Sie die Anwendung oder die Abgleichsregel aktualisieren oder Microsoft Entra ID-Benutzer/-Benutzerinnen dafür aktualisieren oder erstellen. Weitere Informationen dazu, welche Änderung vorgenommen werden sollte, finden Sie unter Verwalten von Zuordnungen und Benutzerkonten in Anwendungen, die nicht mit Benutzern in Microsoft Entra ID übereinstimmen.

    Wenn Sie die Option zum Erstellen von Benutzern in Microsoft Entra ID auswählen, können Sie Benutzer mithilfe einer der folgenden Optionen per Massenvorgang erstellen:

    Stellen Sie sicher, dass für diese neuen Benutzer die für Microsoft Entra ID erforderlichen Attribute aufgefüllt werden, um sie später mit vorhandenen Benutzer*innen in der Anwendung abzugleichen. Außerdem müssen die Attribute aufgefüllt werden, die von Microsoft Entra ID benötigt werden, einschließlich userPrincipalName, mailNickname und displayName. userPrincipalName muss im Vergleich zu allen anderen Benutzern im Verzeichnis eindeutig sein.

    Es kann beispielsweise Benutzer*innen in der Datenbank geben, auf die Folgendes zutrifft: Der Wert in der Spalte EMail ist der Wert, den Sie als Microsoft Entra-Benutzerprinzipalnamen verwenden möchten, der Wert in der Spalte Alias enthält den Microsoft Entra ID-E-Mail-Kontonamen, und der Wert in der Spalte Full name enthält den Benutzeranzeigenamen:

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

    Dann können Sie dieses Skript verwenden, um Microsoft Entra-Benutzer für diejenigen Benutzer in SAP Cloud Identity Services, der Datenbank oder im Verzeichnis zu erstellen, die nicht mit Benutzern in Microsoft Entra ID übereinstimmten. Beachten Sie, dass Sie dieses Skript möglicherweise bearbeiten müssen, um weitere Microsoft Entra-Attribute hinzuzufügen, die in Ihrer Organisation benötigt werden, oder um das entsprechende Microsoft Entra-Attribut bereitzustellen, wenn der $azuread_match_attr_name weder ein mailNickname noch ein userPrincipalName ist.

    $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. Nachdem Sie Microsoft Entra ID fehlende Benutzer hinzugefügt haben, führen Sie das Skript aus Schritt 7 erneut aus. Führen Sie dann das Skript aus Schritt 8 aus. Überprüfen Sie, ob keine Fehler gemeldet werden.

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

Registrieren der Anwendung

Wenn die Anwendung bereits in Microsoft Entra ID registriert ist, fahren Sie mit dem nächsten Schritt fort.

Das verwendete Konto muss über die Berechtigung zum Verwalten von Anwendungen in Microsoft Entra ID verfügen. Die folgenden Microsoft Entra-Rollen verfügen über die erforderlichen Berechtigungen:

  1. Erstellen Sie die Anwendung und den Dienstprinzipal.

    Wenn der Name der Unternehmensanwendung z. B. CORPDB1 lautet, geben Sie die folgenden Befehle ein:

    $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. Fügen Sie der Anwendung eine Rolle hinzu, und kennzeichnen Sie sie als in Microsoft Entra ID integrierte Anwendung, damit ihre Zuweisungen überprüft werden können. Wenn der Rollenname beispielsweise General lautet, geben Sie diesen Wert in den folgenden PowerShell-Befehlen an:

    $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
    

Suchen Sie nach Benutzern, die der Anwendung nicht bereits zugewiesen sind

Die vorherigen Schritte haben bestätigt, dass alle Benutzer*innen im Datenspeicher der Anwendung als Benutzer*innen in Microsoft Entra ID vorhanden sind. Sie sind aktuell jedoch möglicherweise nicht alle den Rollen der Anwendung in Microsoft Entra ID zugewiesen. In den nächsten Schritte wird also zu sehen sein, welche Benutzer keine Zuordnungen zu Anwendungsrollen haben.

  1. Suchen Sie nach der ID für den Dienstprinzipal der Anwendung.

    Wenn der Name der Unternehmensanwendung z. B. CORPDB1 lautet, geben Sie die folgenden Befehle ein:

    $azuread_app_name = "CORPDB1"
    $azuread_sp_filter = "displayName eq '" + ($azuread_app_name -replace "'","''") + "'"
    $azuread_sp = Get-MgServicePrincipal -Filter $azuread_sp_filter -All
    
  2. Rufen Sie die Benutzer*innen ab, die derzeit über Zuweisungen zur Anwendung in Microsoft Entra ID verfügen.

    Hierzu wird die im vorherigen Befehl festgelegte Variable $azuread_sp verwendet.

    $azuread_existing_assignments = @(Get-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $azuread_sp.Id -All)
    
  3. Vergleichen Sie die Liste der Benutzer-IDs aus dem vorherigen Abschnitt mit diesen Benutzer*innen, die der Anwendung zurzeit zugewiesen sind:

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

    Wenn 0 Benutzer*innen keine Anwendungsrollen zugewiesen sind, also allen Benutzer*innen Anwendungsrollen zugewiesen sind, sind keine weiteren Änderungen erforderlich, bevor Sie eine Zugriffsüberprüfung durchführen.

    Wenn jedoch eine*r oder mehrere Benutzer*innen derzeit keinen Anwendungsrollen zugewiesen sind, müssen Sie den Vorgang fortsetzen und die Benutzer*innen einer Rolle der Anwendung zuweisen.

  4. Wählen Sie die Rolle der Anwendung aus, um den verbleibenden Benutzern zuzuweisen.

    Eine Anwendung kann über mehr als eine Rolle verfügen. Verwenden Sie diesen Befehl, um die verfügbaren Rollen aufzulisten:

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

    Wählen Sie die entsprechende Rolle aus der Liste aus und rufen Sie die Rollen-ID ab. Wenn der Rollenname beispielsweise General lautet, geben Sie diesen Wert in den folgenden PowerShell-Befehlen an:

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

Erstellen von App-Rollenzuweisungen in Microsoft Entra ID

Damit Microsoft Entra ID die Benutzer*innen in der Anwendung mit den Benutzer*innen in Microsoft Entra ID abgleichen kann, müssen Sie Anwendungsrollenzuweisungen in Microsoft Entra ID erstellen.

Wenn in Microsoft Entra ID für Benutzer*innen eine Anwendungsrollenzuweisung zu einer Anwendung erstellt wird und die Anwendung keine Bereitstellung unterstützt, dann gilt Folgendes:

  • Sofern die Benutzer*innen nicht außerhalb von Microsoft Entra ID aktualisiert werden oder die Zuweisung in Microsoft Entra ID entfernt wird, verbleiben sie auf unbestimmte Zeit in der Anwendung.
  • Auf der nächsten Überprüfung der Rollenzuweisungen dieser Anwendung wird der Benutzer in die Überprüfung einbezogen.
  • Wenn Benutzer*innen in einer Zugriffsüberprüfung der Zugriff verweigert wird, wird ihre Anwendungsrollenzuweisung entfernt.
  1. Erstellen Sie Anwendungsrollenzuweisungen für Benutzer*innen, die derzeit keine Rollenzuweisungen haben:

    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. Warten Sie eine Minute, bis die Änderungen innerhalb von Microsoft Entra ID übernommen wurden.

  3. Fragen Sie in Microsoft Entra ID eine aktualisierte Liste der Rollenzuweisungen ab:

    $azuread_existing_assignments = @(Get-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $azuread_sp.Id -All)
    
  4. Vergleichen Sie die Liste der Benutzer-IDs aus dem vorherigen Abschnitt mit diesen Benutzer*innen, die der Anwendung jetzt zugewiesen sind:

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

    Wenn Benutzer*innen keine Anwendungsrollen zugewiesen sind, überprüfen Sie das Microsoft Entra-Überwachungsprotokoll auf Fehler aus einem vorherigen Schritt.

Auswählen geeigneter Prüfer

Beim Erstellen jeder Zugriffsüberprüfung können Administratoren einen oder mehrere Prüfer auswählen. Die Prüfer können eine Überprüfung durchführen, wobei sie Benutzer für den weiteren Zugriff auf eine Ressource auswählen oder sie entfernen.

Normalerweise ist ein Ressourcenbesitzer für die Durchführung einer Überprüfung verantwortlich. Wenn Sie eine Überprüfung einer Gruppe im Rahmen der Zugriffsüberprüfung für eine in Muster B integrierte Anwendung erstellen, können Sie die Gruppenbesitzer als Prüfer auswählen. Da Anwendungen in Microsoft Entra ID nicht unbedingt einen Besitzer haben, ist die Option zum Auswählen des Anwendungsbesitzers als Prüfer nicht verfügbar. Stattdessen können Sie beim Erstellen der Überprüfung die Namen der Anwendungsbesitzer angeben, um die Prüfer zu sein.

Wenn Sie eine Überprüfung einer Gruppe oder Anwendung erstellen, können Sie auch eine mehrstufige Überprüfung wählen. Sie können beispielsweise auswählen, dass der Vorgesetzte jedes zugewiesenen Benutzers die erste Phase der Überprüfung ausführt, und der Ressourcenbesitzer die zweite Phase. Auf diese Weise kann sich der Ressourcenbesitzer auf die Benutzer konzentrieren, die bereits von ihrem Vorgesetzten genehmigt wurden.

Bevor Sie die Überprüfungen erstellen, überprüfen Sie, ob Sie genügend Microsoft Entra ID P2- oder Microsoft Entra ID Governance-SKU-Plätze in Ihrem Mandanten haben. Überprüfen Sie außerdem, ob alle Prüfer aktive Benutzer mit E-Mail-Adressen sind. Zu Beginn der Zugriffsüberprüfungen wird jeweils eine E-Mail-Adresse von Microsoft Entra ID überprüft. Wenn der Prüfer kein Postfach hat, erhält er weder die E-Mail, wenn die Prüfung beginnt, noch eine Erinnerungs-E-Mail. Und wenn sie sich aufgrund einer Sperre nicht bei Microsoft Entra ID anmelden können, können sie die Überprüfung nicht durchführen.

Erstellen der Überprüfung von Anwendungsrollenzuweisungen

Sobald den Benutzer*innen die Anwendungsrollen zugewiesen wurden und Sie die Prüfer*innen identifiziert haben, können Sie Microsoft Entra ID so konfigurieren, dass eine Überprüfung gestartet wird.

Befolgen Sie die Anweisungen im Leitfaden zum Erstellen einer Zugriffsüberprüfung von Gruppen oder Anwendungen, um die Überprüfung der Rollenzuweisungen der Anwendung zu erstellen. Konfigurieren Sie die Überprüfung so, dass die Ergebnisse nach Abschluss der Überprüfung angewendet werden.

Abrufen der bei Abschluss der Überprüfungen aktualisierten Zuweisungen

  1. Nach Abschluss der Überprüfung können Sie die aktualisierte Liste der Benutzer mit Anwendungsrollenzuweisungen abrufen.

    $res = (Get-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $azuread_sp.Id -All)
    
  2. Die Spalten PrincipalDisplayName und PrincipalId enthalten die Anzeigenamen und Microsoft Entra-Benutzer-IDs aller Benutzer*innen, denen eine Anwendungsrolle zugewiesen wurde.

Konfigurieren der Integration der Berechtigungsverwaltung mit ServiceNow für Ticketing (optional)

Wenn Sie über ServiceNow verfügen, können Sie optional die automatisierte ServiceNow-Ticketerstellung mithilfe der Berechtigungsverwaltungsintegration über Logic Apps konfigurieren. In diesem Szenario kann die Berechtigungsverwaltung automatisch ServiceNow-Tickets für die manuelle Bereitstellung von Benutzern erstellen, die Zugriffspaketzuweisungen erhalten haben.

Nächste Schritte