Aracılığıyla paylaş


Sağlamayı desteklemeyen bir uygulamanın kullanıcılarını yönetme - Microsoft PowerShell

Uygulamayı erişim gözden geçirmeleri gibi bir Microsoft Entra Kimlik Yönetimi özelliğiyle kullanmadan önce Microsoft Entra Id'yi bir uygulamanın mevcut kullanıcılarıyla doldurmanın gerekli olduğu üç yaygın senaryo vardır.

  • Uygulama kendi kimlik sağlayıcısını kullanıldıktan sonra Microsoft Entra Id'ye geçirildi
  • Tek kimlik sağlayıcısı olarak Microsoft Entra Id kullanmayan uygulama
  • Uygulama, kimlik sağlayıcısı olarak Microsoft Entra Id kullanmaz veya sağlamayı desteklemez

Uygulamanın sağlamayı desteklediği veya LDAP dizini, SQL veritabanı kullandığı, SOAP veya REST API'sine sahip olduğu veya kimlik sağlayıcısı olarak Microsoft Entra Id'ye dayandığı bu ilk iki senaryo hakkında daha fazla bilgi için uygulamanın mevcut kullanıcılarını yönetme makalesine bakın. Bu makale, bu uygulama kategorilerinin mevcut kullanıcıları için kimlik idaresi özelliklerinin nasıl kullanılacağını kapsar.

Bu makale üçüncü senaryoyu kapsar. Bazı eski uygulamalarda, diğer kimlik sağlayıcılarını veya yerel kimlik bilgileri kimlik doğrulamasını uygulamadan kaldırmak veya bu uygulamalar için sağlama protokolleri desteğini etkinleştirmek mümkün olmayabilir. Bu uygulamalar için, söz konusu uygulamaya kimlerin erişimi olduğunu gözden geçirmek veya bir kişinin erişimini kaldırmak için Microsoft Entra Id kullanmak istiyorsanız, Microsoft Entra Id'de uygulama kullanıcılarını temsil eden atamalar oluşturmanız gerekir. Bu makale, kimlik sağlayıcısı olarak Microsoft Entra Id kullanmayan ve sağlamayı desteklemeyen bir uygulamanın senaryosunu kapsar.

Lisans gereksinimleri

Bu özelliğin kullanılması için Microsoft Entra Kimlik Yönetimi lisansları gerekir. Gereksinimleriniz için doğru lisansı bulmak için bkz. lisanslamayla ilgili temel bilgileri Microsoft Entra Kimlik Yönetimi.

Terminoloji

Bu makalede, Microsoft Graph PowerShell cmdlet'lerini kullanarak uygulama rolü atamalarını yönetme işlemi gösterilmektedir. Aşağıdaki Microsoft Graph terminolojisini kullanır.

Microsoft Graph terminolojisini gösteren diyagram.

Microsoft Entra Id'de hizmet sorumlusu (ServicePrincipal), belirli bir kuruluşun dizinindeki bir uygulamayı temsil eder. ServicePrincipalgibi bir uygulamanın desteklediği Marketing specialistrolleri listeleyen adlı AppRoles bir özelliği vardır. AppRoleAssignment bir kullanıcıyı hizmet sorumlusuna bağlar ve kullanıcının bu uygulamada hangi rolü olduğunu belirtir.

Kullanıcılara uygulamaya sınırlı süreyle erişim vermek için Microsoft Entra yetkilendirme yönetimi erişim paketlerini de kullanıyor olabilirsiniz. Yetkilendirme yönetiminde, AccessPackage birden çok hizmet sorumlusuna ait olabilecek bir veya daha fazla kaynak rolü içerir. AccessPackage ayrıca erişim paketine kullanıcılar için atamaları (Assignment) vardır.

Bir kullanıcı için erişim paketine atama oluşturduğunuzda, Microsoft Entra yetkilendirme yönetimi her uygulamaya kullanıcı için gerekli AppRoleAssignment örnekleri otomatik olarak oluşturur. Daha fazla bilgi için PowerShell aracılığıyla erişim paketleri oluşturma hakkında Microsoft Entra yetkilendirme yönetimindeki kaynaklara erişimi yönetme öğreticisine bakın.

Başlamadan önce

  • Kiracınızda aşağıdaki lisanslardan birine sahip olmanız gerekir:

    • Microsoft Entra Id P2 veya Microsoft Entra Kimlik Yönetimi
    • Enterprise Mobility + Security E5 lisansı
  • Uygun bir yönetim rolüne sahip olmanız gerekir. Bu adımları ilk kez gerçekleştiriyorsanız, kiracınızda Microsoft Graph PowerShell kullanımını yetkilendirmek için Genel Yönetici istrator rolüne ihtiyacınız vardır.

  • Uygulamanızın kiracınızda bir hizmet sorumlusu olması gerekir. Hizmet sorumlusu yoksa, uygulamayı Microsoft Entra Kimliği'nde temsil etmek üzere kaydedebilirsiniz.

Bir uygulamadan mevcut kullanıcıları toplama

Tüm kullanıcıların Microsoft Entra Id'ye kaydedilmesini sağlamanın ilk adımı, uygulamaya erişimi olan mevcut kullanıcıların listesini toplamaktır.

Bazı uygulamaların, veri deposundan geçerli kullanıcıların listesini dışarı aktarmak için yerleşik bir komutu olabilir. Diğer durumlarda, uygulama bir dış dizine veya veritabanına bağımlı olabilir.

Bazı ortamlarda uygulama, Microsoft Entra Id'ye erişimi yönetmek için uygun olmayan bir ağ kesiminde veya sistemde bulunabilir. Bu nedenle bu uygulamadan, dizinden veya veritabanından kullanıcı listesini ayıklamanız ve microsoft Entra etkileşimleri için kullanılabilecek başka bir sisteme dosya olarak aktarmanız gerekebilir.

Uygulamanızın LDAP dizini veya SQL veritabanı varsa, kullanıcı koleksiyonunu ayıklama hakkında öneriler için bkz . Bir uygulamadan mevcut kullanıcıları toplama.

Aksi takdirde, uygulamanın bir dizini veya veritabanı yoksa, uygulamanın sahibine başvurmanız ve bir kullanıcı listesi sağlamasını sağlamanız gerekir. Bu, kullanıcı başına bir satır içeren CSV dosyası gibi bir biçimde olabilir. Dosyadaki her kullanıcının bir alanında, Microsoft Entra Id'deki kullanıcılarda da bulunan e-posta adresi gibi benzersiz bir tanımlayıcı bulunduğundan emin olun.

Bu sistemde Microsoft Graph PowerShell cmdlet'leri yüklü değilse veya Microsoft Entra Id bağlantısı yoksa, kullanıcı listesini içeren CSV dosyasını Microsoft Graph PowerShell cmdlet'lerinin yüklü olduğu bir sisteme aktarın.

Microsoft Entra Id'de uygulamadaki kullanıcılarla eşleşen kullanıcılar olduğunu onaylayın

Artık uygulamadan elde edilen tüm kullanıcıların listesini edindiğinize göre, uygulamanın veri deposundaki bu kullanıcıları Microsoft Entra ID'deki kullanıcılarla eşleştireceksiniz.

Microsoft Entra Id'de kullanıcıların kimliklerini alma

Bu bölümde, Microsoft Graph PowerShell cmdlet'lerini kullanarak Microsoft Entra ID ile nasıl etkileşim kurulacak gösterilmektedir.

Kuruluşunuz bu senaryo için bu cmdlet'leri ilk kez kullandığında, Microsoft Graph PowerShell'in kiracınızda kullanılmasına izin vermek için Genel Yönetici istrator rolünde olmanız gerekir. Sonraki etkileşimler aşağıdakiler gibi daha düşük ayrıcalıklı bir rol kullanabilir:

  • Yeni kullanıcılar oluşturmayı düşünüyorsanız kullanıcı Yönetici istrator.
  • Uygulama rolü atamalarını yalnızca yönetiyorsanız, Uygulama Yönetici istrator veya Kimlik İdaresi Yönetici istrator.
  1. PowerShell’i açın.

  2. Microsoft Graph PowerShell modülleri henüz yüklü değilse, şu komutu kullanarak modülü ve diğerlerini yükleyinMicrosoft.Graph.Users:

    Install-Module Microsoft.Graph
    

    Modülleri zaten yüklediyseniz son sürümü kullandığınızdan emin olun:

    Update-Module microsoft.graph.users,microsoft.graph.identity.governance,microsoft.graph.applications
    
  3. Microsoft Entra Id'ye Bağlan:

    $msg = Connect-MgGraph -ContextScope Process -Scopes "User.ReadWrite.All,Application.ReadWrite.All,AppRoleAssignment.ReadWrite.All,EntitlementManagement.ReadWrite.All"
    
  4. Bu komutu ilk kez kullanıyorsanız, Microsoft Graph Komut Satırı araçlarının bu izinlere sahip olmasını onaylamanız gerekebilir.

  5. Uygulamanın veri deposundan edinilen kullanıcıların listesini PowerShell oturumuna okuyun. Kullanıcı listesi bir CSV dosyasındaysa PowerShell cmdlet'ini Import-Csv kullanabilir ve önceki bölümdeki dosyanın adını bağımsız değişken olarak belirtebilirsiniz.

    Örneğin, SAP Cloud Identity Services'ten alınan dosya Users-exported-from-sap.csv olarak adlandırılmışsa ve geçerli dizinde bulunuyorsa, bu komutu girin.

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

    Veritabanı veya dizin kullanıyorsanız başka bir örnek için, dosya users.csv olarak adlandırılıyorsa ve geçerli dizinde bulunuyorsa şu komutu girin:

    $filename = ".\users.csv"
    $dbusers = Import-Csv -Path $filename -Encoding UTF8
    
  6. users.csv dosyasının Microsoft Entra Id'deki bir kullanıcının özniteliğiyle eşleşecek sütununu seçin.

    SAP Cloud Identity Services kullanıyorsanız varsayılan eşleme, Microsoft Entra ID özniteliğine sahip SAP SCIM özniteliğidir userNameuserPrincipalName:

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

    Bir veritabanı veya dizin kullanıyorsanız başka bir örnek için, adlı EMail sütundaki değerin Microsoft Entra özniteliğindeki userPrincipalNamedeğerle aynı olduğu bir veritabanında kullanıcılarınız olabilir:

    $db_match_column_name = "EMail"
    $azuread_match_attr_name = "userPrincipalName"
    
  7. Bu kullanıcıların kimliklerini Microsoft Entra Id'de alın.

    Aşağıdaki PowerShell betiği, daha önce belirtilen , $db_match_column_nameve $azuread_match_attr_name değerlerini kullanır$dbusers. Kaynak dosyadaki her kayıt için eşleşen değere sahip bir özniteliği olan bir kullanıcıyı bulmak için Microsoft Entra Kimliğini sorgular. Dosyada kaynak SAP Cloud Identity Services, veritabanı veya dizinden alınan çok sayıda kullanıcı varsa, bu betiğin tamamlanması birkaç dakika sürebilir. Microsoft Entra ID'de değeri olan bir özniteliğiniz yoksa ve bir veya başka bir contains filtre ifadesi kullanmanız gerekiyorsa, farklı bir filtre ifadesi kullanmak için bu betiği ve aşağıdaki 11. adımda bunu özelleştirmeniz gerekir.

    $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. Önceki sorguların sonuçlarını görüntüleyin. HATALAR veya eksik eşleşmeler nedeniyle SAP Cloud Identity Services, veritabanı veya dizindeki kullanıcılardan herhangi birinin Microsoft Entra Id'de bulunamadığını görün.

    Aşağıdaki PowerShell betiği, bulunamamış kayıtların sayısını görüntüler:

    $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. Betik tamamlandığında, veri kaynağındaki herhangi bir kayıt Microsoft Entra Kimliği'nde bulunmadıysa bir hata gösterir. Uygulamanın veri deposundaki kullanıcıların tüm kayıtları Microsoft Entra Id'de kullanıcı olarak bulunamıyorsa, hangi kayıtların neden eşleşmediğini araştırmanız gerekir.

    Örneğin, bir kişinin e-posta adresi ve userPrincipalName, ilgili özelliği uygulamanın veri kaynağında güncelleştirilmeden mail Microsoft Entra Kimliği'nde değiştirilmiş olabilir. Ya da kullanıcı kuruluşta zaten ayrılmış olabilir ancak uygulamanın veri kaynağındadır. Ya da uygulamanın veri kaynağında Microsoft Entra Id'deki belirli bir kişiye karşılık olmayan bir satıcı veya süper yönetici hesabı olabilir.

  10. Microsoft Entra Id'de bulunamayan veya etkin olmayan ve oturum açamayan kullanıcılar varsa ancak bunların erişiminin gözden geçirilmesini veya özniteliklerinin SAP Cloud Identity Services, veritabanı veya dizinde güncelleştirilmesini istiyorsanız, uygulamayı, eşleşen kuralı güncelleştirmeniz veya onlar için Microsoft Entra kullanıcıları oluşturmanız gerekir. Hangi değişikliğin yapacağı hakkında daha fazla bilgi için bkz . Microsoft Entra Id'deki kullanıcılarla eşleşmeyen uygulamalarda eşlemeleri ve kullanıcı hesaplarını yönetme.

    Microsoft Entra Id'de kullanıcı oluşturma seçeneğini belirlerseniz, aşağıdakilerden birini kullanarak kullanıcıları toplu olarak oluşturabilirsiniz:

    Bu yeni kullanıcıların, daha sonra bunları uygulamadaki mevcut kullanıcılarla eşleştirmek için Microsoft Entra Id için gereken özniteliklerle ve ve dahil olmak üzere userPrincipalNamemailNicknamedisplayNameMicrosoft Entra Id için gereken özniteliklerle dolduruldığından emin olun. userPrincipalName dizinindeki tüm kullanıcılar arasında benzersiz olmalıdır.

    Örneğin, adlı EMail sütundaki değerin Microsoft Entra kullanıcı asıl Adı olarak kullanmak istediğiniz değer olduğu, sütundaki değerin Microsoft Entra Id posta takma adını ve sütundaki AliasFull name değerin kullanıcının görünen adını içerdiği bir veritabanında kullanıcılarınız olabilir:

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

    Daha sonra BU betiği kullanarak SAP Cloud Identity Services, veritabanı veya dizinde bulunan ve Microsoft Entra Id'deki kullanıcılarla eşleşmeyen kullanıcılar için Microsoft Entra kullanıcıları oluşturabilirsiniz. Kuruluşunuzda gereken ek Microsoft Entra özniteliklerini eklemek için veya $azuread_match_attr_name bu Microsoft Entra özniteliğini sağlamak için ne ne mailNickname de userPrincipalNameise, bu betiği değiştirmeniz gerekebileceğini unutmayın.

    $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. Eksik kullanıcıları Microsoft Entra Id'ye ekledikten sonra 7. adımdaki betiği yeniden çalıştırın. Ardından 8. adımdaki betiği çalıştırın. Hata bildirilmemiş olup olmadığını denetleyin.

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

Uygulamayı kaydetme

Uygulama Zaten Microsoft Entra Id'de kayıtlıysa sonraki adıma geçin.

Kullandığınız hesabın Microsoft Entra Id'deki uygulamaları yönetme izni olmalıdır. Aşağıdaki Microsoft Entra rollerinden herhangi biri gerekli izinleri içerir:

  1. Uygulamayı ve hizmet sorumlusunu oluşturun.

    Örneğin, kurumsal uygulamanın adı CORPDB1ise aşağıdaki komutları girin:

    $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. Uygulamaya bir rol ekleyin ve atamalarının gözden geçirilebilmesi için uygulamayı Microsoft Entra Id ile tümleşik olarak etiketleyin. Örneğin, rol adı ise General, aşağıdaki PowerShell komutlarında bu değeri sağlayın:

    $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
    

Uygulamaya henüz atanmamış kullanıcıları denetleme

Önceki adımlar, uygulamanın veri deposundaki tüm kullanıcıların Microsoft Entra Id'de kullanıcı olarak mevcut olduğunu doğruladı. Ancak, bunların tümü şu anda Microsoft Entra Id'de uygulamanın rollerine atanmayabilir. Bu nedenle, sonraki adımlar hangi kullanıcıların uygulama rollerine atamaları olmadığını görmektir.

  1. Uygulamanın hizmet sorumlusu için hizmet sorumlusu kimliğini arayın.

    Örneğin, kurumsal uygulamanın adı CORPDB1ise aşağıdaki komutları girin:

    $azuread_app_name = "CORPDB1"
    $azuread_sp_filter = "displayName eq '" + ($azuread_app_name -replace "'","''") + "'"
    $azuread_sp = Get-MgServicePrincipal -Filter $azuread_sp_filter -All
    
  2. Microsoft Entra Id'de uygulamaya atamaları olan kullanıcıları alın.

    Bu, önceki komutta $azuread_sp ayarlanan değişkene dayalıdır.

    $azuread_existing_assignments = @(Get-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $azuread_sp.Id -All)
    
  3. Önceki bölümde yer alan kullanıcı kimliklerinin listesini şu anda uygulamaya atanmış olan kullanıcılarla karşılaştırın:

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

    Uygulama rollerine, tüm kullanıcıların uygulama rollerine atandığını belirten sıfır kullanıcı atanmazsa, erişim gözden geçirmesi yapmadan önce başka değişiklik yapmanız gerekmez.

    Ancak, şu anda uygulama rollerine bir veya daha fazla kullanıcı atanmamışsa, yordama devam etmeniz ve bunları uygulamanın rollerinden birine eklemeniz gerekir.

  4. Kalan kullanıcıları atamak için uygulamanın rolünü seçin.

    Bir uygulamanın birden fazla rolü olabilir. Kullanılabilir rolleri listelemek için şu komutu kullanın:

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

    Listeden uygun rolü seçin ve rol kimliğini alın. Örneğin, rol adı ise General, aşağıdaki PowerShell komutlarında bu değeri sağlayın:

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

Microsoft Entra Id'de uygulama rolü atamaları oluşturma

Microsoft Entra Id'nin uygulamadaki kullanıcıları Microsoft Entra Id'deki kullanıcılarla eşleştirmesi için Microsoft Entra Id'de uygulama rolü atamaları oluşturmanız gerekir.

Bir uygulamaya kullanıcı için Microsoft Entra Id'de bir uygulama rolü ataması oluşturulduğunda ve uygulama sağlamayı desteklemediğinde,

  • Kullanıcı, Microsoft Entra Id dışında güncelleştirilmediği sürece veya Microsoft Entra Id'deki atama kaldırılana kadar süresiz olarak uygulamada kalır.
  • Bu uygulamanın rol atamalarının bir sonraki gözden geçirmesinde kullanıcı incelemeye dahil edilecek.
  • Erişim gözden geçirmesinde kullanıcı reddedilirse, uygulama rolü ataması kaldırılır.
  1. Şu anda rol atamaları olmayan kullanıcılar için uygulama rolü atamaları oluşturun:

    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. Değişikliklerin Microsoft Entra Id içinde yayılması için bir dakika bekleyin.

  3. Güncelleştirilmiş rol atamaları listesini almak için Microsoft Entra Kimliğini sorgula:

    $azuread_existing_assignments = @(Get-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $azuread_sp.Id -All)
    
  4. Önceki bölümde yer alan kullanıcı kimliklerinin listesini uygulamaya atanmış kullanıcılarla karşılaştırın:

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

    Uygulama rollerine herhangi bir kullanıcı atanmamışsa, önceki adımlardan bir hata için Microsoft Entra denetim günlüğünü denetleyin.

Uygun gözden geçirenleri seçin

Her erişim gözden geçirmesini oluşturduğunuzda, yöneticiler bir veya daha fazla gözden geçiren seçebilir. Gözden geçirenler, bir kaynağa sürekli erişim için kullanıcıları seçerek veya bunları kaldırarak bir gözden geçirme gerçekleştirebilir.

Genellikle bir kaynak sahibi gözden geçirme gerçekleştirmekle sorumludur. B deseni ile tümleştirilmiş bir uygulamanın erişimini gözden geçirmenin bir parçası olarak bir grubun gözden geçirmesini oluşturuyorsanız, grup sahiplerini gözden geçiren olarak seçebilirsiniz. Microsoft Entra Id'deki uygulamaların mutlaka sahibi olmadığından, uygulama sahibini gözden geçiren olarak seçme seçeneği mümkün değildir. Bunun yerine, gözden geçirmeyi oluştururken, gözden geçirenler olmak üzere uygulama sahiplerinin adlarını sağlayabilirsiniz.

Ayrıca, bir grup veya uygulamanın gözden geçirmesini oluştururken çok aşamalı bir gözden geçirme yapmayı da seçebilirsiniz. Örneğin, atanan her kullanıcının yöneticisinin incelemenin ilk aşamasını, kaynak sahibinin de ikinci aşamayı gerçekleştirmesini seçebilirsiniz. Bu şekilde kaynak sahibi, yöneticisi tarafından onaylanmış kullanıcılara odaklanabilir.

İncelemeleri oluşturmadan önce kiracınızda yeterli Microsoft Entra ID P2 veya Microsoft Entra Kimlik Yönetimi SKU lisansına sahip olup olmadığınızı denetleyin. Ayrıca, tüm gözden geçirenlerin e-posta adresleri olan etkin kullanıcılar olup olmadığını denetleyin. Erişim gözden geçirmeleri başladığında, her bir kullanıcı Microsoft Entra Id'den bir e-postayı gözden geçirir. Gözden geçirenin posta kutusu yoksa, gözden geçirme başladığında e-postayı veya e-posta anımsatıcısını almaz. Ayrıca, Microsoft Entra Id'de oturum açabilmeleri engellenirse gözden geçirmeyi gerçekleştiremezler.

Uygulama rolü atamalarının gözden geçirmesini oluşturma

Kullanıcılar uygulama rollerine girdikten ve gözden geçirenleri belirledikten sonra, gözden geçirme başlatmak için Microsoft Entra Id'yi yapılandırabilirsiniz.

Uygulama rol atamalarının gözden geçirilmesini oluşturmak için gruplar veya uygulamalar için erişim gözden geçirmesi oluşturma kılavuzundaki yönergeleri izleyin. Tamamlandığında sonuçları uygulamak için gözden geçirmeyi yapılandırın.

Gözden geçirmeler tamamlandığında güncelleştirilen atamaları alma

  1. Gözden geçirme tamamlandığında, uygulama rolü atamalarına sahip kullanıcıların güncelleştirilmiş listesini alabilirsiniz.

    $res = (Get-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $azuread_sp.Id -All)
    
  2. Ve sütunları PrincipalDisplayNamePrincipalId , bir uygulama rolü atamasını koruyan her kullanıcının görünen adlarını ve Microsoft Entra kullanıcı kimliklerini içerir.

Bilet oluşturma için ServiceNow ile yetkilendirme yönetimi tümleştirmesini yapılandırma (isteğe bağlı)

ServiceNow kullanıyorsanız Logic Apps aracılığıyla yetkilendirme yönetimi tümleştirmesini kullanarak isteğe bağlı olarak otomatik ServiceNow bileti oluşturmayı yapılandırabilirsiniz. Bu senaryoda yetkilendirme yönetimi, erişim paketi atamaları alan kullanıcıların el ile sağlanması için ServiceNow biletlerini otomatik olarak oluşturabilir.

Sonraki adımlar