Mengatur pengguna aplikasi yang tidak mendukung provisi - Microsoft PowerShell

Ada tiga skenario umum di mana perlu untuk mengisi ID Microsoft Entra dengan pengguna aplikasi yang ada sebelum Anda menggunakan aplikasi dengan fitur Tata Kelola ID Microsoft Entra seperti tinjauan akses.

  • Aplikasi dimigrasikan ke ID Microsoft Entra setelah menggunakan idP-nya sendiri
  • Aplikasi yang tidak menggunakan ID Microsoft Entra sebagai satu-satunya idP
  • Aplikasi tidak menggunakan ID Microsoft Entra sebagai penyedia identitasnya juga tidak mendukung provisi

Untuk informasi selengkapnya tentang dua skenario pertama tersebut, di mana aplikasi mendukung provisi, atau menggunakan direktori LDAP, database SQL, memiliki SOAP atau REST API atau bergantung pada ID Microsoft Entra sebagai penyedia identitasnya, lihat artikel mengatur pengguna aplikasi yang ada. Artikel tersebut membahas cara menggunakan fitur tata kelola identitas untuk pengguna yang ada dari kategori aplikasi tersebut.

Artikel ini membahas skenario ketiga. Untuk beberapa aplikasi warisan, mungkin tidak layak untuk menghapus penyedia identitas lain atau autentikasi kredensial lokal dari aplikasi, atau mengaktifkan dukungan untuk protokol provisi untuk aplikasi tersebut. Untuk aplikasi tersebut, jika Anda ingin menggunakan ID Microsoft Entra untuk meninjau siapa yang memiliki akses ke aplikasi tersebut, atau menghapus akses seseorang dari aplikasi tersebut, Anda harus membuat penugasan di ID Microsoft Entra yang mewakili pengguna aplikasi. Artikel ini membahas bahwa skenario aplikasi yang tidak menggunakan ID Microsoft Entra sebagai penyedia identitasnya dan tidak mendukung provisi.

Persyaratan lisensi

Menggunakan fitur ini memerlukan lisensi Tata Kelola ID Microsoft Entra. Untuk menemukan lisensi yang tepat untuk kebutuhan Anda, lihat Tata Kelola ID Microsoft Entra dasar-dasar lisensi.

Terminologi

Artikel ini mengilustrasikan proses untuk mengelola penetapan peran aplikasi dengan menggunakan cmdlet Microsoft Graph PowerShell. Proses tersebut menggunakan terminologi Microsoft Graph berikut.

Diagram yang menggambarkan terminologi Microsoft Graph.

Di ID Microsoft Entra, perwakilan layanan (ServicePrincipal) mewakili aplikasi dalam direktori organisasi tertentu. ServicePrincipal memiliki properti bernama AppRoles yang mencantumkan peran yang didukung aplikasi, seperti Marketing specialist. AppRoleAssignment menautkan pengguna ke perwakilan layanan dan menentukan peran yang dimiliki pengguna dalam aplikasi tersebut.

Anda mungkin juga menggunakan paket akses pengelolaan pemberian hak Microsoft Entra untuk memberi pengguna akses terbatas waktu ke aplikasi. Dalam pengelolaan pemberian hak, AccessPackage berisi satu atau beberapa peran sumber daya, kemungkinan dari beberapa perwakilan layanan. AccessPackage juga memiliki tugas (Assignment) bagi pengguna untuk paket akses.

Saat Anda membuat penugasan untuk pengguna ke paket akses, pengelolaan pemberian hak Microsoft Entra secara otomatis membuat instans yang diperlukan AppRoleAssignment bagi pengguna ke setiap aplikasi. Untuk informasi selengkapnya, lihat tutorial Mengelola akses ke sumber daya di pengelolaan pemberian hak Microsoft Entra tentang cara membuat paket akses melalui PowerShell.

Sebelum Anda mulai

  • Anda harus memiliki salah satu lisensi berikut di penyewa Anda:

    • Microsoft Entra ID P2 atau Tata Kelola ID Microsoft Entra
    • Lisensi Enterprise Mobility + Keamanan E5
  • Anda harus memiliki peran administratif yang sesuai. Jika ini adalah pertama kalinya Anda melakukan langkah-langkah ini, Anda memerlukan peran Administrator Global untuk mengotorisasi penggunaan Microsoft Graph PowerShell di penyewa Anda.

  • Aplikasi Anda memerlukan perwakilan layanan di penyewa Anda. Jika perwakilan layanan belum ada, maka Anda dapat mendaftarkan aplikasi untuk mewakilinya di ID Microsoft Entra.

Mengumpulkan pengguna yang sudah ada dari aplikasi

Langkah pertama untuk memastikan bahwa semua pengguna direkam di ID Microsoft Entra adalah mengumpulkan daftar pengguna yang ada yang memiliki akses ke aplikasi.

Beberapa aplikasi mungkin memiliki perintah bawaan untuk mengekspor daftar pengguna saat ini dari penyimpanan data. Dalam kasus lain, aplikasi mungkin bergantung pada direktori atau database eksternal.

Di beberapa lingkungan, aplikasi mungkin terletak di segmen atau sistem jaringan yang tidak sesuai untuk mengelola akses ke ID Microsoft Entra. Jadi Anda mungkin perlu mengekstrak daftar pengguna dari aplikasi, direktori, atau database tersebut, lalu mentransfernya sebagai file ke sistem lain yang dapat digunakan untuk interaksi Microsoft Entra.

Jika aplikasi Anda memiliki direktori LDAP atau database SQL, lihat Mengumpulkan pengguna yang ada dari aplikasi untuk rekomendasi tentang cara mengekstrak koleksi pengguna.

Jika tidak, jika aplikasi tidak memiliki direktori atau database, Anda harus menghubungi pemilik aplikasi dan meminta mereka menyediakan daftar pengguna. Ini bisa dalam format seperti file CSV, dengan satu baris per pengguna. Pastikan bahwa satu bidang dari setiap pengguna dalam file berisi pengidentifikasi unik, seperti alamat email, yang juga ada pada pengguna di ID Microsoft Entra.

Jika sistem ini tidak menginstal cmdlet Microsoft Graph PowerShell atau tidak memiliki konektivitas ke MICROSOFT Entra ID, transfer file CSV yang berisi daftar pengguna ke sistem yang telah menginstal cmdlet Microsoft Graph PowerShell.

Mengonfirmasi ID Microsoft Entra memiliki pengguna yang cocok dengan pengguna dari aplikasi

Sekarang setelah Anda memiliki daftar semua pengguna yang diperoleh dari aplikasi, Anda akan mencocokkan pengguna tersebut dari penyimpanan data aplikasi dengan pengguna di ID Microsoft Entra.

Mengambil ID pengguna di ID Microsoft Entra

Bagian ini memperlihatkan cara berinteraksi dengan ID Microsoft Entra dengan menggunakan cmdlet Microsoft Graph PowerShell .

Pertama kali organisasi Anda menggunakan cmdlet ini untuk skenario ini, Anda harus berada dalam peran Administrator Global agar Microsoft Graph PowerShell dapat digunakan di penyewa Anda. Interaksi selanjutnya dapat menggunakan peran dengan hak istimewa yang lebih rendah, seperti:

  • Administrator Pengguna, jika Anda mengantisipasi pembuatan pengguna baru.
  • Administrator Aplikasi atau Administrator Tata Kelola Identitas, jika Anda hanya mengelola penetapan peran aplikasi.
  1. Buka PowerShell.

  2. Jika Anda belum menginstal modul Microsoft Graph PowerShell , instal modul Microsoft.Graph.Users dan lainnya dengan menggunakan perintah ini:

    Install-Module Microsoft.Graph
    

    Jika Anda sudah menginstal modul, pastikan Anda menggunakan versi terbarunya:

    Update-Module microsoft.graph.users,microsoft.graph.identity.governance,microsoft.graph.applications
    
  3. Koneksi ke ID Microsoft Entra:

    $msg = Connect-MgGraph -ContextScope Process -Scopes "User.ReadWrite.All,Application.ReadWrite.All,AppRoleAssignment.ReadWrite.All,EntitlementManagement.ReadWrite.All"
    
  4. Jika ini pertama kalinya Anda menggunakan perintah ini, Anda mungkin perlu menyetujui untuk mengizinkan alat Baris Perintah Microsoft Graph memiliki izin ini.

  5. Baca daftar pengguna yang diperoleh dari penyimpanan data aplikasi ke dalam sesi PowerShell. Jika daftar pengguna berada dalam file CSV, Anda dapat menggunakan cmdlet PowerShell Import-Csv dan memberikan nama file dari bagian sebelumnya sebagai argumen.

    Misalnya, jika file yang diperoleh dari SAP Cloud Identity Services diberi nama Users-exported-from-sap.csv dan terletak di direktori saat ini, masukkan perintah ini.

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

    Untuk contoh lain jika Anda menggunakan database atau direktori, jika file diberi nama users.csv dan terletak di direktori saat ini, masukkan perintah ini:

    $filename = ".\users.csv"
    $dbusers = Import-Csv -Path $filename -Encoding UTF8
    
  6. Pilih kolom file users.csv yang akan cocok dengan atribut pengguna di ID Microsoft Entra.

    Jika Anda menggunakan SAP Cloud Identity Services, maka pemetaan defaultnya adalah atribut userName SAP SCIM dengan atribut userPrincipalNameID Microsoft Entra :

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

    Untuk contoh lain jika Anda menggunakan database atau direktori, Anda mungkin memiliki pengguna dalam database di mana nilai dalam kolom bernama EMail adalah nilai yang sama seperti dalam atribut userPrincipalNameMicrosoft Entra :

    $db_match_column_name = "EMail"
    $azuread_match_attr_name = "userPrincipalName"
    
  7. Ambil ID pengguna tersebut di ID Microsoft Entra.

    Skrip PowerShell berikut menggunakan nilai $dbusers, $db_match_column_name, dan $azuread_match_attr_name yang ditentukan sebelumnya. Ini akan meminta ID Microsoft Entra untuk menemukan pengguna yang memiliki atribut dengan nilai yang cocok untuk setiap rekaman dalam file sumber. Jika ada banyak pengguna dalam file yang diperoleh dari sumber SAP Cloud Identity Services, database, atau direktori, skrip ini mungkin memerlukan waktu beberapa menit untuk menyelesaikannya. Jika Anda tidak memiliki atribut di ID Microsoft Entra yang memiliki nilai, dan perlu menggunakan contains ekspresi filter atau lainnya, maka Anda harus menyesuaikan skrip ini dan bahwa pada langkah 11 di bawah ini untuk menggunakan ekspresi filter yang berbeda.

    $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. Menampilkan hasil kueri sebelumnya. Lihat apakah salah satu pengguna di SAP Cloud Identity Services, database, atau direktori tidak dapat berada di ID Microsoft Entra, karena kesalahan atau kecocokan yang hilang.

    Skrip PowerShell berikut akan menampilkan jumlah catatan yang tidak ditemukan:

    $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. Ketika skrip selesai, skrip akan menunjukkan kesalahan jika ada rekaman dari sumber data yang tidak terletak di ID Microsoft Entra. Jika tidak semua rekaman untuk pengguna dari penyimpanan data aplikasi dapat ditemukan sebagai pengguna di ID Microsoft Entra, Anda harus menyelidiki rekaman mana yang tidak cocok dan mengapa.

    Misalnya, alamat email seseorang dan userPrincipalName mungkin telah diubah di ID Microsoft Entra tanpa properti yang mail sesuai diperbarui di sumber data aplikasi. Atau, pengguna mungkin telah keluar dari organisasi tetapi masih dalam sumber data aplikasi. Atau mungkin ada akun vendor atau super-admin di sumber data aplikasi yang tidak sesuai dengan orang tertentu di ID Microsoft Entra.

  10. Jika ada pengguna yang tidak dapat berada di ID Microsoft Entra, atau tidak aktif dan dapat masuk, tetapi Anda ingin akses mereka ditinjau atau atribut mereka diperbarui di SAP Cloud Identity Services, database, atau direktori, Anda harus memperbarui aplikasi, aturan yang cocok, atau memperbarui atau membuat pengguna Microsoft Entra untuk mereka. Untuk informasi selengkapnya tentang perubahan mana yang akan dilakukan, lihat mengelola pemetaan dan akun pengguna dalam aplikasi yang tidak cocok dengan pengguna di ID Microsoft Entra.

    Jika Anda memilih opsi untuk membuat pengguna di MICROSOFT Entra ID, Anda dapat membuat pengguna secara massal dengan menggunakan:

    Pastikan bahwa pengguna baru ini diisi dengan atribut yang diperlukan untuk ID Microsoft Entra agar nanti cocok dengan pengguna yang ada dalam aplikasi, dan atribut yang diperlukan oleh ID Microsoft Entra, termasuk userPrincipalName, mailNickname dan displayName. userPrincipalName harus unik di antara semua pengguna di direktori.

    Misalnya, Anda mungkin memiliki pengguna dalam database di mana nilai dalam kolom bernama EMail adalah nilai yang ingin Anda gunakan sebagai Nama prinsipal pengguna Microsoft Entra, nilai dalam kolom Alias berisi nama panggilan email ID Microsoft Entra, dan nilai dalam kolom Full name berisi nama tampilan pengguna:

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

    Kemudian Anda dapat menggunakan skrip ini untuk membuat pengguna Microsoft Entra untuk pengguna di SAP Cloud Identity Services, database, atau direktori yang tidak cocok dengan pengguna di ID Microsoft Entra. Perhatikan bahwa Anda mungkin perlu mengubah skrip ini untuk menambahkan atribut Microsoft Entra tambahan yang diperlukan di organisasi Anda, atau jika bukan mailNickname atau userPrincipalName, untuk menyediakan atribut Microsoft Entra tersebut$azuread_match_attr_name.

    $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. Setelah Anda menambahkan pengguna yang hilang ke ID Microsoft Entra, jalankan skrip dari langkah 7 lagi. Kemudian jalankan skrip dari langkah 8. Periksa bahwa tidak ada kesalahan yang dilaporkan.

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

Mendaftarkan aplikasi

Jika aplikasi sudah terdaftar di ID Microsoft Entra, lanjutkan ke langkah berikutnya.

Akun yang Anda gunakan harus memiliki izin untuk mengelola aplikasi di ID Microsoft Entra. Salah satu peran Microsoft Entra berikut ini menyertakan izin yang diperlukan:

  1. Buat aplikasi dan perwakilan layanan.

    Misalnya, jika aplikasi perusahaan diberi nama CORPDB1, maka ketik perintah berikut:

    $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. Tambahkan peran ke aplikasi, dan tandai aplikasi sebagai terintegrasi dengan ID Microsoft Entra sehingga penugasannya dapat ditinjau. Misalnya, jika nama peran adalah General, berikan nilai tersebut dalam perintah PowerShell berikut:

    $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
    

Memeriksa pengguna yang belum ditetapkan ke aplikasi

Langkah-langkah sebelumnya telah mengonfirmasi bahwa semua pengguna di penyimpanan data aplikasi ada sebagai pengguna di ID Microsoft Entra. Namun, mereka mungkin tidak semua saat ini ditetapkan ke peran aplikasi dalam ID Microsoft Entra. Jadi langkah selanjutnya adalah melihat pengguna mana yang tidak memiliki penugasan ke peran aplikasi.

  1. Cari ID perwakilan layanan untuk perwakilan layanan aplikasi.

    Misalnya, jika aplikasi perusahaan diberi nama CORPDB1, maka ketik perintah berikut:

    $azuread_app_name = "CORPDB1"
    $azuread_sp_filter = "displayName eq '" + ($azuread_app_name -replace "'","''") + "'"
    $azuread_sp = Get-MgServicePrincipal -Filter $azuread_sp_filter -All
    
  2. Ambil pengguna yang saat ini memiliki penugasan ke aplikasi di ID Microsoft Entra.

    Ini dibangun berdasarkan variabel yang $azuread_sp ditetapkan dalam perintah sebelumnya.

    $azuread_existing_assignments = @(Get-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $azuread_sp.Id -All)
    
  3. Bandingkan daftar ID pengguna dari bagian sebelumnya dengan pengguna yang saat ini ditetapkan ke aplikasi:

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

    Jika tidak ada pengguna yang tidak ditetapkan ke peran aplikasi, artinya semua pengguna ditetapkan ke peran aplikasi, Anda tidak perlu membuat perubahan lebih lanjut sebelum melakukan tinjauan akses.

    Namun, jika satu atau beberapa pengguna saat ini tidak ditetapkan ke peran aplikasi, Anda harus melanjutkan prosedur dan menambahkannya ke salah satu peran aplikasi.

  4. Pilih peran aplikasi yang akan ditetapkan ke pengguna yang tersisa.

    Satu aplikasi mungkin memiliki lebih dari satu peran. Gunakan perintah ini untuk membuat daftar peran yang tersedia:

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

    Pilih peran yang sesuai dari daftar, dan dapatkan ID perannya. Misalnya, jika nama peran adalah General, berikan nilai tersebut dalam perintah PowerShell berikut:

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

Membuat penetapan peran aplikasi di ID Microsoft Entra

Agar ID Microsoft Entra cocok dengan pengguna dalam aplikasi dengan pengguna di ID Microsoft Entra, Anda perlu membuat penetapan peran aplikasi di ID Microsoft Entra.

Saat penetapan peran aplikasi dibuat di ID Microsoft Entra untuk pengguna ke aplikasi, dan aplikasi tidak mendukung provisi, maka

  • Pengguna akan tetap berada dalam aplikasi tanpa batas waktu kecuali mereka diperbarui di luar ID Microsoft Entra, atau sampai penugasan di ID Microsoft Entra dihapus.
  • Pada tinjauan berikutnya dari penetapan peran aplikasi tersebut, pengguna akan disertakan dalam tinjauan.
  • Jika pengguna ditolak dalam tinjauan akses, penetapan peran aplikasi mereka akan dihapus.
  1. Buat penetapan peran aplikasi untuk pengguna yang saat ini tidak memiliki penetapan peran:

    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. Tunggu satu menit agar perubahan disebarluaskan dalam ID Microsoft Entra.

  3. Kueri ID Microsoft Entra untuk mendapatkan daftar penetapan peran yang diperbarui:

    $azuread_existing_assignments = @(Get-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $azuread_sp.Id -All)
    
  4. Bandingkan daftar ID pengguna dari bagian sebelumnya dengan pengguna yang sekarang ditetapkan ke aplikasi:

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

    Jika ada pengguna yang tidak ditetapkan ke peran aplikasi, periksa log audit Microsoft Entra untuk kesalahan dari langkah sebelumnya.

Pilih peninjau yang sesuai

Saat Anda membuat tinjauan akses, administrator dapat memilih satu atau beberapa peninjau. Semua peninjau dapat melakukan peninjauan dengan memilih pengguna untuk melanjutkan akses ke sumber daya atau menghapusnya.

Biasanya pemilik sumber daya bertanggung jawab untuk melakukan peninjauan. Jika Anda membuat tinjauan grup, sebagai bagian dari meninjau akses untuk aplikasi yang terintegrasi dalam pola B, maka Anda dapat memilih pemilik grup sebagai peninjau. Karena aplikasi di MICROSOFT Entra ID tidak selalu memiliki pemilik, opsi untuk memilih pemilik aplikasi sebagai peninjau tidak dimungkinkan. Sebagai gantinya, saat membuat tinjauan, Anda dapat menyediakan nama pemilik aplikasi untuk menjadi peninjau.

Anda juga dapat memilih, saat membuat tinjauan grup atau aplikasi, untuk memiliki tinjauan multi-tahap. Misalnya, Anda dapat memilih untuk meminta manajer setiap pengguna yang ditetapkan melakukan tahap pertama peninjauan, dan pemilik sumber daya tahap kedua. Dengan begitu pemilik sumber daya dapat fokus pada pengguna yang telah disetujui oleh manajer mereka.

Sebelum membuat ulasan, periksa apakah Anda memiliki kursi Microsoft Entra ID P2 atau Tata Kelola ID Microsoft Entra SKU yang memadai di penyewa Anda. Selain itu, periksa apakah semua peninjau adalah pengguna aktif dengan alamat email. Saat tinjauan akses dimulai, mereka masing-masing meninjau email dari ID Microsoft Entra. Jika peninjau tidak memiliki kotak surat, mereka tidak akan menerima email saat peninjauan dimulai atau pengingat email. Dan, jika mereka diblokir agar tidak dapat masuk ke ID Microsoft Entra, mereka tidak akan dapat melakukan peninjauan.

Membuat tinjauan penetapan peran aplikasi

Setelah pengguna berada dalam peran aplikasi, dan Anda telah mengidentifikasi peninjau, maka Anda dapat mengonfigurasi ID Microsoft Entra untuk memulai tinjauan.

Ikuti instruksi dalam panduan untuk membuat tinjauan akses grup atau aplikasi, untuk membuat tinjauan penetapan peran aplikasi. Konfigurasikan tinjauan untuk menerapkan hasil saat selesai.

Mengambil tugas yang diperbarui saat tinjauan selesai

  1. Setelah peninjauan selesai, Anda dapat mengambil daftar pengguna yang diperbarui dengan penetapan peran aplikasi.

    $res = (Get-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $azuread_sp.Id -All)
    
  2. Kolom PrincipalDisplayName dan PrincipalId berisi nama tampilan dan ID pengguna Microsoft Entra dari setiap pengguna yang mempertahankan penetapan peran aplikasi.

Mengonfigurasi integrasi pengelolaan pemberian izin dengan ServiceNow untuk tiket (opsional)

Jika Anda memiliki ServiceNow, Anda dapat secara opsional mengonfigurasi pembuatan tiket ServiceNow otomatis, menggunakan integrasi pengelolaan pemberian izin melalui Logic Apps. Dalam skenario itu, pengelolaan pemberian hak dapat secara otomatis membuat tiket ServiceNow untuk provisi manual pengguna yang telah menerima penetapan paket akses.

Langkah berikutnya