Řízení uživatelů aplikace, která nepodporuje zřizování – Microsoft PowerShell

Existují tři běžné scénáře, ve kterých je nutné naplnit ID Microsoft Entra stávajícími uživateli aplikace před použitím aplikace s funkcí zásad správného řízení Microsoft Entra ID, jako jsou kontroly přístupu.

  • Aplikace migrovaná na Microsoft Entra ID po použití vlastního zprostředkovatele identity
  • Aplikace, která nepoužívá ID Microsoft Entra jako jediného zprostředkovatele identity
  • Aplikace nepoužívá Microsoft Entra ID jako svého zprostředkovatele identity ani nepodporuje zřizování.

Další informace o těchto prvních dvou scénářích, kdy aplikace podporuje zřizování, nebo používá adresář LDAP, databázi SQL, má rozhraní SOAP nebo REST API nebo spoléhá na MICROSOFT Entra ID jako svého zprostředkovatele identity, najdete v článku o řízení stávajících uživatelů aplikace. Tento článek popisuje, jak používat funkce zásad správného řízení identit pro stávající uživatele těchto kategorií aplikací.

Tento článek se zabývá třetím scénářem. U některých starších aplikací nemusí být možné z aplikace odebrat jiné zprostředkovatele identity nebo místní ověřování přihlašovacích údajů nebo povolit podporu zřizování protokolů pro tyto aplikace. Pro tyto aplikace, pokud chcete použít Microsoft Entra ID ke kontrole, kdo má přístup k této aplikaci, nebo odebrat přístup někoho z této aplikace, budete muset vytvořit přiřazení v Microsoft Entra ID, které představují uživatele aplikace. Tento článek popisuje scénář aplikace, která jako zprostředkovatele identity nepoužívá ID Microsoft Entra a nepodporuje zřizování.

Požadavky na licenci

Použití této funkce vyžaduje licence zásad správného řízení Microsoft Entra ID. Informace o tom, jak najít správnou licenci pro vaše požadavky, najdete v tématu Základy licencování zásad správného řízení microsoftu Entra ID.

Terminologie

Tento článek popisuje proces správy přiřazení rolí aplikací pomocí rutin Prostředí Microsoft Graph PowerShell. Používá následující terminologii Microsoft Graphu.

Diagram znázorňující terminologii Microsoft Graphu

In Microsoft Entra ID představuje instanční objekt (ServicePrincipal) aplikaci v adresáři konkrétní organizace. ServicePrincipal má vlastnost s názvem AppRoles , která obsahuje seznam rolí, které aplikace podporuje, například Marketing specialist. AppRoleAssignment propojuje uživatele s instančním objektem a určuje, jakou roli má daný uživatel v dané aplikaci.

K poskytnutí časově omezeného přístupu k aplikaci můžete také použít přístupové balíčky pro správu nároků Microsoft Entra. Ve správě AccessPackage nároků obsahuje jednu nebo více rolí prostředků, potenciálně z více instančních objektů. AccessPackage má také přiřazení (Assignment) pro uživatele k přístupovém balíčku.

Když vytvoříte přiřazení pro uživatele k přístupovém balíčku, správa nároků Microsoft Entra automaticky vytvoří potřebné AppRoleAssignment instance pro uživatele do každé aplikace. Další informace najdete v kurzu Správa přístupu k prostředkům v rámci správy nároků Microsoft Entra o vytváření přístupových balíčků prostřednictvím PowerShellu.

Než začnete

  • Ve svém tenantovi musíte mít jednu z následujících licencí:

    • Zásady správného řízení ID Microsoft Entra ID P2 nebo Microsoft Entra ID
    • Licence Enterprise Mobility + Security E5
  • Musíte mít odpovídající roli správce. Pokud tento postup provádíte poprvé, potřebujete roli globálního Správa istratoru k autorizaci použití Prostředí Microsoft Graph PowerShell ve vašem tenantovi.

  • Vaše aplikace potřebuje instanční objekt ve vašem tenantovi. Pokud instanční objekt ještě neexistuje, můžete zaregistrovat aplikaci, která ji bude reprezentovat v Microsoft Entra ID.

Shromažďování existujících uživatelů z aplikace

Prvním krokem k zajištění toho, aby se všichni uživatelé zaznamenali v Microsoft Entra ID, je shromáždit seznam stávajících uživatelů, kteří mají přístup k aplikaci.

Některé aplikace můžou mít integrovaný příkaz k exportu seznamu aktuálních uživatelů z úložiště dat. V jiných případech může aplikace spoléhat na externí adresář nebo databázi.

V některých prostředích může být aplikace umístěná v síťovém segmentu nebo systému, který není vhodný pro správu přístupu k Microsoft Entra ID. Proto možná budete muset extrahovat seznam uživatelů z této aplikace, adresáře nebo databáze a pak ho přenést jako soubor do jiného systému, který lze použít pro interakce Microsoft Entra.

Pokud má vaše aplikace adresář LDAP nebo databázi SQL, přečtěte si téma Shromažďování existujících uživatelů z aplikace s doporučeními, jak extrahovat kolekci uživatelů.

V opačném případě, pokud aplikace nemá adresář nebo databázi, budete muset kontaktovat vlastníka aplikace a poskytnout mu seznam uživatelů. Může to být ve formátu, jako je soubor CSV s jedním řádkem na uživatele. Ujistěte se, že jedno pole každého uživatele v souboru obsahuje jedinečný identifikátor, například e-mailovou adresu, která se nachází také u uživatelů v Microsoft Entra ID.

Pokud tento systém nemá nainstalované rutiny Microsoft Graph PowerShellu nebo nemá připojení k Microsoft Entra ID, přeneste soubor CSV, který obsahuje seznam uživatelů, do systému s nainstalovanými rutinami Microsoft Graph PowerShellu.

Ověřte, že ID Microsoft Entra obsahuje uživatele, kteří odpovídají uživatelům z aplikace.

Teď, když máte seznam všech uživatelů získaných z aplikace, budete odpovídat těmto uživatelům z úložiště dat aplikace s uživateli v Microsoft Entra ID.

Načtení ID uživatelů v Microsoft Entra ID

Tato část ukazuje, jak pracovat s ID Microsoft Entra pomocí rutin Prostředí Microsoft Graph PowerShell .

Při prvním použití těchto rutin pro tento scénář musíte být v roli globálního Správa istratoru, aby bylo možné používat Prostředí Microsoft Graph PowerShell ve vašem tenantovi. Následné interakce můžou používat roli s nižšími oprávněními, například:

  1. Otevřete PowerShell.

  2. Pokud ještě nemáte nainstalované moduly Microsoft Graph PowerShellu, nainstalujte modul Microsoft.Graph.Users a další pomocí tohoto příkazu:

    Install-Module Microsoft.Graph
    

    Pokud už máte nainstalované moduly, ujistěte se, že používáte nejnovější verzi:

    Update-Module microsoft.graph.users,microsoft.graph.identity.governance,microsoft.graph.applications
    
  3. Připojení do Microsoft Entra ID:

    $msg = Connect-MgGraph -ContextScope Process -Scopes "User.ReadWrite.All,Application.ReadWrite.All,AppRoleAssignment.ReadWrite.All,EntitlementManagement.ReadWrite.All"
    
  4. Pokud jste tento příkaz použili poprvé, možná budete muset udělit souhlas s povolením, aby tyto oprávnění měly nástroje příkazového řádku Microsoft Graphu.

  5. Přečtěte si seznam uživatelů získaných z úložiště dat aplikace do relace PowerShellu. Pokud byl seznam uživatelů v souboru CSV, můžete použít rutinu Import-Csv PowerShellu a jako argument zadat název souboru z předchozí části.

    Pokud je například soubor získaný ze služby SAP Cloud Identity Services pojmenovaný Users-exported-from-sap.csv a nachází se v aktuálním adresáři, zadejte tento příkaz.

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

    Pokud používáte databázi nebo adresář, použijte jiný příklad, pokud se soubor jmenuje users.csv a nachází se v aktuálním adresáři, zadejte tento příkaz:

    $filename = ".\users.csv"
    $dbusers = Import-Csv -Path $filename -Encoding UTF8
    
  6. Zvolte sloupec souboru users.csv , který bude odpovídat atributu uživatele v Microsoft Entra ID.

    Pokud používáte SAP Cloud Identity Services, výchozí mapování je atribut userName SAP SCIM s atributem userPrincipalNameMicrosoft Entra ID:

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

    Jiný příklad, pokud používáte databázi nebo adresář, můžete mít uživatele v databázi, kde hodnota ve sloupci s názvem EMail je stejná hodnota jako v atributu userPrincipalNameMicrosoft Entra:

    $db_match_column_name = "EMail"
    $azuread_match_attr_name = "userPrincipalName"
    
  7. Načtěte ID těchto uživatelů v Microsoft Entra ID.

    Následující skript PowerShellu $dbuserspoužívá hodnotu , $db_match_column_namea $azuread_match_attr_name hodnoty zadané dříve. Bude dotazovat Microsoft Entra ID najít uživatele, který má atribut s odpovídající hodnotou pro každý záznam ve zdrojovém souboru. Pokud soubor získaný ze zdrojové služby SAP Cloud Identity Services, databáze nebo adresáře obsahuje mnoho uživatelů, může dokončení tohoto skriptu trvat několik minut. Pokud nemáte atribut v MICROSOFT Entra ID, který má hodnotu, a potřebujete použít contains nebo jiný filtr výraz, budete muset přizpůsobit tento skript a v kroku 11 níže použít jiný výraz 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. Prohlédněte si výsledky předchozích dotazů. Podívejte se, jestli se některým uživatelům ve službě SAP Cloud Identity Services, databázi nebo adresáři nepodařilo najít v MICROSOFT Entra ID kvůli chybám nebo chybějícím shodám.

    Následující skript PowerShellu zobrazí počty záznamů, které nebyly nalezeny:

    $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 dokončení skriptu se zobrazí chyba, pokud se některé záznamy ze zdroje dat nenachází v ID Microsoft Entra. Pokud nejsou všechny záznamy pro uživatele z úložiště dat aplikace umístěné jako uživatelé v Microsoft Entra ID, budete muset zjistit, které záznamy se neshodovaly a proč.

    Například e-mailová adresa a userPrincipalName můžou být změněny v MICROSOFT Entra ID bez aktualizace odpovídající mail vlastnosti ve zdroji dat aplikace. Nebo uživatel už možná organizaci opustil, ale stále je ve zdroji dat aplikace. Nebo může existovat účet dodavatele nebo supersprávce ve zdroji dat aplikace, který neodpovídá žádné konkrétní osobě v Microsoft Entra ID.

  10. Pokud byli uživatelé, kteří nemohli být umístěni v Microsoft Entra ID nebo nebyli aktivní a nemohli se přihlásit, ale chcete, aby byl jejich přístup zkontrolován nebo jejich atributy aktualizovány ve službě SAP Cloud Identity Services, databázi nebo adresáři, budete muset aktualizovat aplikaci, odpovídající pravidlo nebo aktualizovat nebo pro ně vytvořit uživatele Microsoft Entra. Další informace o tom, kterou změnu provést, naleznete v tématu správa mapování a uživatelských účtů v aplikacích, které se neshodovaly s uživateli v Microsoft Entra ID.

    Pokud zvolíte možnost vytváření uživatelů v Microsoft Entra ID, můžete uživatele vytvářet hromadně pomocí těchto možností:

    Ujistěte se, že jsou tito noví uživatelé naplněni atributy vyžadovanými pro Microsoft Entra ID, aby se později shodovaly se stávajícími uživateli v aplikaci, a atributy vyžadované ID Microsoft Entra, včetně userPrincipalNamemailNickname a displayName. Musí userPrincipalName být jedinečný mezi všemi uživateli v adresáři.

    Můžete mít například uživatele v databázi, kde hodnota ve sloupci s názvem EMail je hodnota, kterou chcete použít jako hlavní název uživatele Microsoft Entra, hodnota ve sloupci Alias obsahuje přezdívku e-mailu Microsoft Entra ID a hodnota ve sloupci Full name obsahuje zobrazované jméno uživatele:

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

    Tento skript pak můžete použít k vytvoření uživatelů Microsoft Entra pro uživatele ve službách SAP Cloud Identity Services, databázi nebo adresáři, které se neshodovaly s uživateli v Microsoft Entra ID. Všimněte si, že možná budete muset tento skript upravit tak, aby přidal další atributy Microsoft Entra potřebné ve vaší organizaci, nebo pokud $azuread_match_attr_name není mailNickname ani userPrincipalName, za účelem poskytnutí tohoto atributu Microsoft Entra.

    $dbu_missing_columns_list = @()
    $dbu_creation_failed_list = @()
    foreach ($dbu in $dbu_not_matched_list) {
       if (($null -ne $dbu.$db_display_name_column_name -and $dbu.$db_display_name_column_name.Length -gt 0) -and
           ($null -ne $dbu.$db_user_principal_name_column_name -and $dbu.$db_user_principal_name_column_name.Length -gt 0) -and
           ($null -ne $dbu.$db_mail_nickname_column_name -and $dbu.$db_mail_nickname_column_name.Length -gt 0)) {
          $params = @{
             accountEnabled = $false
             displayName = $dbu.$db_display_name_column_name
             mailNickname = $dbu.$db_mail_nickname_column_name
             userPrincipalName = $dbu.$db_user_principal_name_column_name
             passwordProfile = @{
               Password = -join (((48..90) + (96..122)) * 16 | Get-Random -Count 16 | % {[char]$_})
             }
          }
          try {
            New-MgUser -BodyParameter $params
          } catch { $dbu_creation_failed_list += $dbu; throw }
       } else {
          $dbu_missing_columns_list += $dbu
       }
    }
    
  11. Po přidání všech chybějících uživatelů do Microsoft Entra ID spusťte skript z kroku 7 znovu. Pak spusťte skript z kroku 8. Zkontrolujte, jestli nejsou hlášeny žádné chyby.

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

Registrace aplikace

Pokud je aplikace již zaregistrovaná v Microsoft Entra ID, pokračujte dalším krokem.

Účet, který používáte, musí mít oprávnění ke správě aplikací v Microsoft Entra ID. Mezi následující role Microsoft Entra patří požadovaná oprávnění:

  1. Vytvořte aplikaci a instanční objekt.

    Pokud je například podniková aplikace pojmenovaná CORPDB1, zadejte následující příkazy:

    $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. Přidejte do aplikace roli a označte ji jako integrovanou s ID Microsoft Entra, aby bylo možné její přiřazení zkontrolovat. Pokud je Generalnázev role například , zadejte tuto hodnotu v následujících příkazech PowerShellu:

    $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
    

Kontrola uživatelů, kteří ještě nejsou přiřazeni k aplikaci

Předchozí kroky potvrdily, že všichni uživatelé v úložišti dat aplikace existují jako uživatelé v Microsoft Entra ID. Nemusí se ale všechny v současné době přiřazovat k rolím aplikace v MICROSOFT Entra ID. V dalších krocích se tedy dozvíte, kteří uživatelé nemají přiřazení k rolím aplikace.

  1. Vyhledejte ID instančního objektu pro instanční objekt aplikace.

    Pokud je například podniková aplikace pojmenovaná CORPDB1, zadejte následující příkazy:

    $azuread_app_name = "CORPDB1"
    $azuread_sp_filter = "displayName eq '" + ($azuread_app_name -replace "'","''") + "'"
    $azuread_sp = Get-MgServicePrincipal -Filter $azuread_sp_filter -All
    
  2. Načtěte uživatele, kteří mají aktuálně přiřazení k aplikaci v Microsoft Entra ID.

    To vychází z $azuread_sp proměnné nastavené v předchozím příkazu.

    $azuread_existing_assignments = @(Get-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $azuread_sp.Id -All)
    
  3. Porovnejte seznam ID uživatelů z předchozí části s uživateli, kteří jsou aktuálně přiřazeni k aplikaci:

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

    Pokud žádné uživatele nejsou přiřazené k aplikačním rolím, což znamená, že všichni uživatelé jsou přiřazeni k rolím aplikace, nemusíte před kontrolou přístupu provádět žádné další změny.

    Pokud ale některé uživatele nejsou aktuálně přiřazené k rolím aplikace, budete muset pokračovat v postupu a přidat je do jedné z rolí aplikace.

  4. Vyberte roli aplikace, ke které chcete přiřadit zbývající uživatele.

    Aplikace může mít více než jednu roli. Pomocí tohoto příkazu zobrazte seznam dostupných rolí:

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

    Ze seznamu vyberte příslušnou roli a získejte JEJÍ ID role. Pokud je Generalnázev role například , zadejte tuto hodnotu v následujících příkazech PowerShellu:

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

Vytvoření přiřazení rolí aplikace v Microsoft Entra ID

Aby id Microsoft Entra odpovídalo uživatelům v aplikaci s uživateli v Microsoft Entra ID, musíte vytvořit přiřazení rolí aplikace v Microsoft Entra ID.

Při vytvoření přiřazení role aplikace v Microsoft Entra ID pro uživatele k aplikaci a aplikace nepodporuje zřizování, pak

  • Uživatel zůstane v aplikaci po neomezenou dobu, dokud nebude aktualizován mimo ID Microsoft Entra nebo dokud se neodebere přiřazení v Microsoft Entra ID.
  • Při další kontrole přiřazení rolí této aplikace bude uživatel zahrnut do kontroly.
  • Pokud se uživateli v kontrole přístupu odepře, přiřazení role aplikace se odebere.
  1. Vytvořte přiřazení rolí aplikace pro uživatele, kteří aktuálně nemají přiřazení rolí:

    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. Počkejte jednu minutu, než se změny rozšíří v rámci ID Microsoft Entra.

  3. Zadejte dotaz na ID Microsoft Entra a získejte aktualizovaný seznam přiřazení rolí:

    $azuread_existing_assignments = @(Get-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $azuread_sp.Id -All)
    
  4. Porovnejte seznam ID uživatelů z předchozí části s těmito uživateli, kteří jsou teď přiřazeni k aplikaci:

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

    Pokud nejsou k rolím aplikace přiřazeni všichni uživatelé, zkontrolujte v protokolu auditu Microsoft Entra chybu z předchozího kroku.

Výběr vhodných revidujících

Při vytváření každé kontroly přístupu můžou správci zvolit jednoho nebo více revidujících. Kontroloři můžou kontrolu provést tak, že vyberou uživatele pro trvalý přístup k prostředku nebo je odeberou.

Vlastník prostředku obvykle zodpovídá za provedení kontroly. Pokud vytváříte kontrolu skupiny v rámci kontroly přístupu pro aplikaci integrovanou ve vzoru B, můžete jako revidující vybrat vlastníky skupiny. Protože aplikace v Microsoft Entra ID nemusí nutně mít vlastníka, možnost výběru vlastníka aplikace jako revidujícího není možná. Místo toho můžete při vytváření kontroly zadat jména vlastníků aplikace, kteří mají být revidujícím.

Při vytváření kontroly skupiny nebo aplikace můžete také zvolit kontrolu vícefázové kontroly. Můžete například vybrat, aby správce každého přiřazeného uživatele provedl první fázi kontroly a vlastníka prostředku druhé fáze. Vlastník prostředku se tak může soustředit na uživatele, kteří už jejich nadřízený schválili.

Před vytvořením kontrol zkontrolujte, jestli máte v tenantovi dostatek licencí Microsoft Entra ID P2 nebo Microsoft Entra ID Governance. Zkontrolujte také, že všichni revidujícím jsou aktivní uživatelé s e-mailovými adresami. Když se kontroly přístupu spustí, každý zkontroluje e-mail z ID Microsoft Entra. Pokud kontrolor nemá poštovní schránku, při spuštění recenze ani e-mailové připomenutí nedostane e-mail. A pokud se jim zablokuje přihlášení k ID Microsoft Entra, nebudou moct provést kontrolu.

Vytvoření kontroly přiřazení rolí aplikace

Jakmile jsou uživatelé v rolích aplikace a máte identifikované revidované, můžete nakonfigurovat ID Microsoft Entra, aby se spustila kontrola.

Postupujte podle pokynů v průvodci pro vytvoření kontroly přístupu skupin nebo aplikací a vytvořte kontrolu přiřazení rolí aplikace. Nakonfigurujte kontrolu tak, aby po dokončení použila výsledky.

Načtení přiřazení, která se aktualizují po dokončení kontrol

  1. Po dokončení kontroly můžete načíst aktualizovaný seznam uživatelů s přiřazením rolí aplikace.

    $res = (Get-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $azuread_sp.Id -All)
    
  2. Sloupce PrincipalDisplayName a PrincipalId obsahují zobrazovaná jména a ID uživatelů Microsoft Entra každého uživatele, který si zachová přiřazení role aplikace.

Konfigurace integrace správy nároků s ServiceNow pro vytváření lístků (volitelné)

Pokud máte ServiceNow, můžete volitelně nakonfigurovat automatizované vytváření lístků ServiceNow pomocí integrace správy nároků prostřednictvím Logic Apps. V tomto scénáři může správa nároků automaticky vytvořit lístky ServiceNow pro ruční zřizování uživatelů, kteří obdrželi přiřazení přístupového balíčku.

Další kroky