Zarządzanie użytkownikami aplikacji, która nie obsługuje aprowizacji — Microsoft PowerShell

Istnieją trzy typowe scenariusze, w których konieczne jest wypełnienie identyfikatora Entra firmy Microsoft istniejącymi użytkownikami aplikacji przed użyciem aplikacji z funkcją Zarządzanie tożsamością Microsoft Entra, taką jak przeglądy dostępu.

  • Aplikacja zmigrowana do identyfikatora Entra firmy Microsoft po użyciu własnego dostawcy tożsamości
  • Aplikacja, która nie używa identyfikatora Entra firmy Microsoft jako jedynego dostawcy tożsamości
  • Aplikacja nie używa identyfikatora Entra firmy Microsoft jako dostawcy tożsamości ani nie obsługuje aprowizacji

Aby uzyskać więcej informacji na temat tych dwóch pierwszych scenariuszy, w których aplikacja obsługuje aprowizację lub używa katalogu LDAP, bazy danych SQL, ma interfejs API SOAP lub REST lub korzysta z identyfikatora Microsoft Entra jako dostawcy tożsamości, zobacz artykuł rządzący istniejącymi użytkownikami aplikacji. W tym artykule opisano sposób używania funkcji zapewniania ładu tożsamości dla istniejących użytkowników tych kategorii aplikacji.

W tym artykule opisano trzeci scenariusz. W przypadku niektórych starszych aplikacji może nie być możliwe usunięcie innych dostawców tożsamości lub lokalnego uwierzytelniania poświadczeń z aplikacji lub włączenie obsługi protokołów aprowizacji dla tych aplikacji. W przypadku tych aplikacji, jeśli chcesz użyć identyfikatora Entra firmy Microsoft, aby sprawdzić, kto ma dostęp do tej aplikacji, lub usunąć dostęp kogoś z tej aplikacji, musisz utworzyć przypisania w identyfikatorze Entra firmy Microsoft reprezentującym użytkowników aplikacji. W tym artykule opisano ten scenariusz aplikacji, która nie używa identyfikatora Entra firmy Microsoft jako dostawcy tożsamości i nie obsługuje aprowizacji.

Wymagania dotyczące licencji

Korzystanie z tej funkcji wymaga licencji Zarządzanie tożsamością Microsoft Entra. Aby znaleźć odpowiednią licencję dla wymagań, zobacz Zarządzanie tożsamością Microsoft Entra podstawy licencjonowania.

Terminologia

W tym artykule przedstawiono proces zarządzania przypisaniami ról aplikacji przy użyciu poleceń cmdlet programu PowerShell programu Microsoft Graph. Używa on następującej terminologii programu Microsoft Graph.

Diagram ilustrujący terminologię programu Microsoft Graph.

W identyfikatorze Entra firmy Microsoft jednostka usługi (ServicePrincipal) reprezentuje aplikację w katalogu określonej organizacji. ServicePrincipal ma właściwość o nazwie AppRoles , która wyświetla listę ról, które obsługuje aplikacja, takich jak Marketing specialist. AppRoleAssignment łączy użytkownika z jednostką usługi i określa, która rola użytkownika ma w tej aplikacji.

Możesz również używać pakietów dostępu do zarządzania upoważnieniami firmy Microsoft w celu udzielenia użytkownikom ograniczonego czasowo dostępu do aplikacji. W zarządzaniu upoważnieniami AccessPackage zawiera co najmniej jedną rolę zasobu, potencjalnie z wielu jednostek usługi. AccessPackage Ma również przypisania (Assignment) dla użytkowników do pakietu dostępu.

Podczas tworzenia przypisania dla użytkownika do pakietu dostępu zarządzanie upoważnieniami firmy Microsoft Entra automatycznie tworzy niezbędne AppRoleAssignment wystąpienia dla użytkownika dla każdej aplikacji. Aby uzyskać więcej informacji, zobacz samouczek Zarządzanie dostępem do zasobów w usłudze Microsoft Entra entitlement management dotyczący tworzenia pakietów dostępu za pomocą programu PowerShell.

Zanim rozpoczniesz

  • Musisz mieć jedną z następujących licencji w dzierżawie:

    • Microsoft Entra ID P2 lub Zarządzanie tożsamością Microsoft Entra
    • Licencja enterprise Mobility + Security E5
  • Musisz mieć odpowiednią rolę administracyjną. Jeśli po raz pierwszy wykonujesz te kroki, musisz mieć rolę globalnego Administracja istratora, aby autoryzować korzystanie z programu Microsoft Graph PowerShell w dzierżawie.

  • Aplikacja wymaga jednostki usługi w dzierżawie. Jeśli jednostka usługi jeszcze nie istnieje, możesz zarejestrować aplikację w celu reprezentowania jej w identyfikatorze Entra firmy Microsoft.

Zbieranie istniejących użytkowników z aplikacji

Pierwszym krokiem w kierunku upewnienia się, że wszyscy użytkownicy są zarejestrowani w usłudze Microsoft Entra ID, jest zebranie listy istniejących użytkowników, którzy mają dostęp do aplikacji.

Niektóre aplikacje mogą mieć wbudowane polecenie umożliwiające wyeksportowanie listy bieżących użytkowników z magazynu danych. W innych przypadkach aplikacja może polegać na zewnętrznym katalogu lub bazie danych.

W niektórych środowiskach aplikacja może znajdować się w segmencie sieci lub systemie, który nie jest odpowiedni do zarządzania dostępem do identyfikatora Entra firmy Microsoft. Dlatego może być konieczne wyodrębnienie listy użytkowników z tej aplikacji, katalogu lub bazy danych, a następnie przeniesienie jej jako pliku do innego systemu, który może być używany na potrzeby interakcji firmy Microsoft Entra.

Jeśli aplikacja ma katalog LDAP lub bazę danych SQL, zobacz Zbieranie istniejących użytkowników z aplikacji , aby uzyskać zalecenia dotyczące sposobu wyodrębniania kolekcji użytkowników.

W przeciwnym razie, jeśli aplikacja nie ma katalogu lub bazy danych, musisz skontaktować się z właścicielem aplikacji i podać listę użytkowników. Może to być w formacie, takim jak plik CSV, z jednym wierszem na użytkownika. Upewnij się, że jedno pole każdego użytkownika w pliku zawiera unikatowy identyfikator, taki jak adres e-mail, który jest również obecny dla użytkowników w usłudze Microsoft Entra ID.

Jeśli ten system nie ma zainstalowanych poleceń cmdlet programu PowerShell programu Microsoft Graph lub nie ma łączności z identyfikatorem Entra firmy Microsoft, przenieś plik CSV zawierający listę użytkowników do systemu z zainstalowanymi poleceniami cmdlet programu Microsoft Graph PowerShell.

Potwierdź, że identyfikator Entra firmy Microsoft ma użytkowników, którzy są zgodni z użytkownikami z aplikacji

Teraz, gdy masz listę wszystkich użytkowników uzyskanych z aplikacji, dopasujesz tych użytkowników z magazynu danych aplikacji z użytkownikami w usłudze Microsoft Entra ID.

Pobieranie identyfikatorów użytkowników w identyfikatorze entra firmy Microsoft

W tej sekcji przedstawiono sposób interakcji z identyfikatorem Entra firmy Microsoft przy użyciu poleceń cmdlet programu PowerShell programu Microsoft Graph.

Przy pierwszym użyciu tych poleceń cmdlet w organizacji w tym scenariuszu musisz mieć rolę globalnego Administracja istratora, aby umożliwić programowi Microsoft Graph używanie programu PowerShell w dzierżawie. Kolejne interakcje mogą używać roli o niższych uprawnieniach, takich jak:

  • Użytkownik Administracja istrator, jeśli przewidujesz tworzenie nowych użytkowników.
  • Administracja istrator aplikacji lub Administracja istrator zarządzania tożsamościami, jeśli zarządzasz przypisaniami ról aplikacji.
  1. Otwórz program PowerShell.

  2. Jeśli nie masz już zainstalowanych modułów programu PowerShell programu Microsoft Graph, zainstaluj Microsoft.Graph.Users moduł i inne za pomocą tego polecenia:

    Install-Module Microsoft.Graph
    

    Jeśli masz już zainstalowane moduły, upewnij się, że używasz najnowszej wersji:

    Update-Module microsoft.graph.users,microsoft.graph.identity.governance,microsoft.graph.applications
    
  3. Połączenie do identyfikatora Entra firmy Microsoft:

    $msg = Connect-MgGraph -ContextScope Process -Scopes "User.ReadWrite.All,Application.ReadWrite.All,AppRoleAssignment.ReadWrite.All,EntitlementManagement.ReadWrite.All"
    
  4. Jeśli używasz tego polecenia po raz pierwszy, może być konieczne wyrażenie zgody na zezwolenie narzędziom wiersza polecenia programu Microsoft Graph na te uprawnienia.

  5. Przeczytaj listę użytkowników uzyskanych z magazynu danych aplikacji do sesji programu PowerShell. Jeśli lista użytkowników znajdowała się w pliku CSV, możesz użyć polecenia cmdlet Import-Csv programu PowerShell i podać nazwę pliku z poprzedniej sekcji jako argument.

    Jeśli na przykład plik uzyskany z usług SAP Cloud Identity Services nosi nazwę Users-exported-from-sap.csv i znajduje się w bieżącym katalogu, wprowadź to polecenie.

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

    W innym przykładzie, jeśli używasz bazy danych lub katalogu, jeśli plik ma nazwę users.csv i znajduje się w bieżącym katalogu, wprowadź następujące polecenie:

    $filename = ".\users.csv"
    $dbusers = Import-Csv -Path $filename -Encoding UTF8
    
  6. Wybierz kolumnę pliku users.csv , który będzie zgodny z atrybutem użytkownika w usłudze Microsoft Entra ID.

    Jeśli używasz usług SAP Cloud Identity Services, domyślne mapowanie to atrybut SAP SCIM z atrybutem userNameuserPrincipalNameMicrosoft Entra ID :

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

    W innym przykładzie, jeśli używasz bazy danych lub katalogu, być może użytkownicy w bazie danych, w której wartość w kolumnie o nazwie EMail jest taka sama jak w atrybucie userPrincipalNameMicrosoft Entra :

    $db_match_column_name = "EMail"
    $azuread_match_attr_name = "userPrincipalName"
    
  7. Pobierz identyfikatory tych użytkowników w identyfikatorze Entra firmy Microsoft.

    Poniższy skrypt programu PowerShell używa $dbusersokreślonych wcześniej wartości , $db_match_column_namei $azuread_match_attr_name . Spowoduje to wysłanie zapytania do identyfikatora Entra firmy Microsoft w celu zlokalizowania użytkownika, który ma atrybut z pasującą wartością dla każdego rekordu w pliku źródłowym. Jeśli w pliku uzyskanym ze źródłowej usługi SAP Cloud Identity Services, bazy danych lub katalogu istnieje wiele użytkowników, ten skrypt może potrwać kilka minut. Jeśli nie masz atrybutu w identyfikatorze Entra firmy Microsoft, który ma wartość i musisz użyć contains lub innego wyrażenia filtru, musisz dostosować ten skrypt i to w kroku 11 poniżej, aby użyć innego wyrażenia filtru.

    $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. Wyświetl wyniki poprzednich zapytań. Sprawdź, czy którykolwiek z użytkowników w usługach SAP Cloud Identity Services, bazie danych lub katalogu nie może znajdować się w identyfikatorze Entra firmy Microsoft z powodu błędów lub brakujących dopasowań.

    Poniższy skrypt programu PowerShell wyświetli liczbę rekordów, które nie zostały zlokalizowane:

    $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. Po zakończeniu działania skryptu będzie on wskazywać błąd, jeśli jakiekolwiek rekordy ze źródła danych nie znajdowały się w identyfikatorze Entra firmy Microsoft. Jeśli nie wszystkie rekordy użytkowników z magazynu danych aplikacji mogą znajdować się jako użytkownicy w usłudze Microsoft Entra ID, należy zbadać, które rekordy nie są zgodne i dlaczego.

    Na przykład adres e-mail użytkownika i userPrincipalName mogły zostać zmienione w identyfikatorze Entra firmy Microsoft bez aktualizowania odpowiedniej mail właściwości w źródle danych aplikacji. Lub użytkownik mógł już opuścił organizację, ale nadal znajduje się w źródle danych aplikacji. Może też istnieć konto dostawcy lub administratora w źródle danych aplikacji, które nie odpowiada żadnej konkretnej osobie w identyfikatorze Entra firmy Microsoft.

  10. Jeśli nie było użytkowników, którzy nie mogli znajdować się w identyfikatorze Entra firmy Microsoft lub nie byli aktywni i mogli się zalogować, ale chcesz mieć przeglądany dostęp lub ich atrybuty zaktualizowane w usługach SAP Cloud Identity Services, bazie danych lub katalogu, musisz zaktualizować aplikację, regułę dopasowania lub zaktualizować lub utworzyć dla nich użytkowników firmy Microsoft Entra. Aby uzyskać więcej informacji na temat wprowadzania zmian, zobacz Zarządzanie mapowaniami i kontami użytkowników w aplikacjach, które nie są zgodne z użytkownikami w identyfikatorze Entra firmy Microsoft.

    Jeśli wybierzesz opcję tworzenia użytkowników w usłudze Microsoft Entra ID, możesz utworzyć użytkowników zbiorczo przy użyciu jednego z następujących elementów:

    Upewnij się, że ci nowi użytkownicy są wypełniani atrybutami wymaganymi przez identyfikator Entra firmy Microsoft, aby później dopasować je do istniejących użytkowników w aplikacji, oraz atrybuty wymagane przez identyfikator Entra firmy Microsoft, w tym userPrincipalNamemailNickname , i displayName. Element userPrincipalName musi być unikatowy dla wszystkich użytkowników w katalogu.

    Możesz na przykład mieć użytkowników w bazie danych, w której wartość w kolumnie o nazwie EMail jest wartością, której chcesz użyć jako głównej nazwy użytkownika Microsoft Entra, wartość w kolumnie Alias zawiera pseudonim poczty Microsoft Entra ID, a wartość w kolumnie Full name zawiera nazwę wyświetlaną użytkownika:

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

    Następnie możesz użyć tego skryptu, aby utworzyć użytkowników usługi Microsoft Entra dla użytkowników w usługach SAP Cloud Identity Services, bazie danych lub katalogu, który nie był zgodny z użytkownikami w usłudze Microsoft Entra ID. Należy pamiętać, że może być konieczne zmodyfikowanie tego skryptu w celu dodania dodatkowych atrybutów firmy Microsoft Entra wymaganych w organizacji lub jeśli $azuread_match_attr_name parametr nie mailNickname jest ani userPrincipalName, aby podać ten atrybut Entra firmy Microsoft.

    $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. Po dodaniu wszystkich brakujących użytkowników do identyfikatora Entra firmy Microsoft ponownie uruchom skrypt z kroku 7. Następnie uruchom skrypt z kroku 8. Sprawdź, czy nie zgłoszono żadnych błędów.

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

Rejestrowanie aplikacji

Jeśli aplikacja jest już zarejestrowana w identyfikatorze Entra firmy Microsoft, przejdź do następnego kroku.

Konto, którego używasz, musi mieć uprawnienia do zarządzania aplikacjami w usłudze Microsoft Entra ID. Każda z następujących ról firmy Microsoft Entra obejmuje wymagane uprawnienia:

  1. Utwórz aplikację i jednostkę usługi.

    Jeśli na przykład aplikacja dla przedsiębiorstw ma nazwę CORPDB1, wprowadź następujące polecenia:

    $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. Dodaj rolę do aplikacji i oznacz aplikację jako zintegrowaną z identyfikatorem Entra firmy Microsoft, aby można było przejrzeć jej przypisania. Jeśli na przykład nazwa roli to General, podaj tę wartość w następujących poleceniach programu PowerShell:

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

Sprawdzanie użytkowników, którzy nie są jeszcze przypisani do aplikacji

Poprzednie kroki potwierdziły, że wszyscy użytkownicy w magazynie danych aplikacji istnieją jako użytkownicy w identyfikatorze Entra firmy Microsoft. Jednak mogą one nie być obecnie przypisane do ról aplikacji w identyfikatorze Entra firmy Microsoft. Następnym krokiem jest sprawdzenie, którzy użytkownicy nie mają przypisań do ról aplikacji.

  1. Wyszukaj identyfikator jednostki usługi dla jednostki usługi aplikacji.

    Jeśli na przykład aplikacja dla przedsiębiorstw ma nazwę CORPDB1, wprowadź następujące polecenia:

    $azuread_app_name = "CORPDB1"
    $azuread_sp_filter = "displayName eq '" + ($azuread_app_name -replace "'","''") + "'"
    $azuread_sp = Get-MgServicePrincipal -Filter $azuread_sp_filter -All
    
  2. Pobierz użytkowników, którzy mają obecnie przypisania do aplikacji w identyfikatorze Entra firmy Microsoft.

    Opiera się to na zmiennej $azuread_sp ustawionej w poprzednim poleceniu.

    $azuread_existing_assignments = @(Get-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $azuread_sp.Id -All)
    
  3. Porównaj listę identyfikatorów użytkowników z poprzedniej sekcji z tymi użytkownikami aktualnie przypisanymi do aplikacji:

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

    Jeśli zero użytkowników nie jest przypisanych do ról aplikacji, co oznacza, że wszyscy użytkownicy przypisani do ról aplikacji, nie musisz wprowadzać żadnych dalszych zmian przed przeprowadzeniem przeglądu dostępu.

    Jeśli jednak co najmniej jeden użytkownik nie jest obecnie przypisany do ról aplikacji, musisz kontynuować procedurę i dodać je do jednej z ról aplikacji.

  4. Wybierz rolę aplikacji, aby przypisać pozostałych użytkowników.

    Aplikacja może mieć więcej niż jedną rolę. Użyj tego polecenia, aby wyświetlić listę dostępnych ról:

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

    Wybierz odpowiednią rolę z listy i uzyskaj jej identyfikator roli. Jeśli na przykład nazwa roli to General, podaj tę wartość w następujących poleceniach programu PowerShell:

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

Tworzenie przypisań ról aplikacji w identyfikatorze Entra firmy Microsoft

Aby identyfikator Entra firmy Microsoft był zgodny z użytkownikami w aplikacji z użytkownikami w usłudze Microsoft Entra ID, należy utworzyć przypisania ról aplikacji w identyfikatorze Entra firmy Microsoft.

Po utworzeniu przypisania roli aplikacji w identyfikatorze Entra firmy Microsoft dla użytkownika do aplikacji, a aplikacja nie obsługuje aprowizacji, wówczas

  • Użytkownik pozostanie w aplikacji na czas nieokreślony, chyba że zostanie zaktualizowany poza identyfikatorem Entra firmy Microsoft lub dopóki przypisanie w identyfikatorze Entra firmy Microsoft nie zostanie usunięte.
  • Podczas następnej przeglądu przypisań ról tej aplikacji użytkownik zostanie uwzględniony w przeglądzie.
  • Jeśli użytkownik zostanie odrzucony w przeglądzie dostępu, przypisanie roli aplikacji zostanie usunięte.
  1. Utwórz przypisania ról aplikacji dla użytkowników, którzy obecnie nie mają przypisań ról:

    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. Poczekaj minutę na propagację zmian w identyfikatorze Entra firmy Microsoft.

  3. Wykonaj zapytanie o identyfikator entra firmy Microsoft, aby uzyskać zaktualizowaną listę przypisań ról:

    $azuread_existing_assignments = @(Get-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $azuread_sp.Id -All)
    
  4. Porównaj listę identyfikatorów użytkowników z poprzedniej sekcji z tymi użytkownikami przypisanymi teraz do aplikacji:

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

    Jeśli do ról aplikacji nie przypisano żadnych użytkowników, sprawdź dziennik inspekcji firmy Microsoft Entra pod kątem błędu z poprzedniego kroku.

Wybieranie odpowiednich recenzentów

Podczas tworzenia każdego przeglądu dostępu administratorzy mogą wybrać co najmniej jednego recenzenta. Recenzenci mogą przeprowadzić przegląd, wybierając użytkowników w celu dalszego dostępu do zasobu lub usuwania ich.

Zazwyczaj właściciel zasobu jest odpowiedzialny za przeprowadzenie przeglądu. Jeśli tworzysz przegląd grupy, w ramach przeglądania dostępu do aplikacji zintegrowanej ze wzorcem B, możesz wybrać właścicieli grup jako recenzentów. Ponieważ aplikacje w identyfikatorze Entra firmy Microsoft nie muszą mieć właściciela, opcja wybierania właściciela aplikacji jako recenzenta nie jest możliwa. Zamiast tego podczas tworzenia przeglądu można podać nazwy właścicieli aplikacji jako recenzentów.

Możesz również wybrać podczas tworzenia przeglądu grupy lub aplikacji, aby mieć przegląd wieloetapowy. Na przykład można wybrać, aby menedżer każdego przypisanego użytkownika wykonał pierwszy etap przeglądu, a właściciel zasobu drugi etap. Dzięki temu właściciel zasobu może skupić się na użytkownikach, którzy zostali już zatwierdzeni przez menedżera.

Przed utworzeniem recenzji sprawdź, czy masz wystarczającą liczbę stanowisk jednostek SKU microsoft Entra ID P2 lub Zarządzanie tożsamością Microsoft Entra w dzierżawie. Sprawdź również, czy wszyscy recenzenci są aktywnymi użytkownikami z adresami e-mail. Po rozpoczęciu przeglądów dostępu każda z nich przegląda wiadomość e-mail z identyfikatora Entra firmy Microsoft. Jeśli recenzent nie ma skrzynki pocztowej, nie otrzyma wiadomości e-mail po rozpoczęciu przeglądu lub przypomnieniu e-mail. Jeśli nie będą oni mogli zalogować się do identyfikatora Entra firmy Microsoft, nie będą mogli wykonać przeglądu.

Tworzenie przeglądu przypisań ról aplikacji

Gdy użytkownicy znajdują się w rolach aplikacji i masz zidentyfikowanych recenzentów, możesz skonfigurować identyfikator Entra firmy Microsoft, aby rozpocząć przegląd.

Postępuj zgodnie z instrukcjami w przewodniku dotyczącym tworzenia przeglądu dostępu grup lub aplikacji, aby utworzyć przegląd przypisań ról aplikacji. Skonfiguruj przegląd, aby zastosować wyniki po zakończeniu.

Pobieranie przypisań, które są aktualizowane po zakończeniu przeglądów

  1. Po zakończeniu przeglądu można pobrać zaktualizowaną listę użytkowników z przypisaniami ról aplikacji.

    $res = (Get-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $azuread_sp.Id -All)
    
  2. Kolumny PrincipalDisplayName i PrincipalId zawierają nazwy wyświetlane i identyfikatory użytkowników firmy Microsoft Entra dla każdego użytkownika, który zachowuje przypisanie roli aplikacji.

Konfigurowanie integracji zarządzania upoważnieniami z usługą ServiceNow na potrzeby obsługi biletów (opcjonalnie)

Jeśli masz usługę ServiceNow, możesz opcjonalnie skonfigurować automatyczne tworzenie biletów usługi ServiceNow przy użyciu integracji zarządzania upoważnieniami za pośrednictwem usługi Logic Apps. W tym scenariuszu zarządzanie upoważnieniami może automatycznie tworzyć bilety usługi ServiceNow na potrzeby ręcznej aprowizacji użytkowników, którzy otrzymali przypisania pakietów dostępu.

Następne kroki