Mengelola aplikasi

Aplikasi perlu didaftarkan di Microsoft Entra ID sebelum platform identitas Microsoft dapat mengotorisasinya untuk mengakses data yang disimpan di penyewa Microsoft Entra atau Microsoft 365. Kondisi ini berlaku untuk aplikasi yang Anda kembangkan sendiri, yang dimiliki penyewa Anda, atau yang Anda akses melalui langganan aktif.

Banyak pengaturan untuk aplikasi dicatat sebagai objek yang dapat diakses, diperbarui, atau dihapus menggunakan Microsoft Entra PowerShell. Objek ini mencakup aplikasi, prinsipal layanan, dan penetapan peran aplikasi.

Dalam artikel ini, Anda mempelajari cara mengelola pendaftaran aplikasi dan objek perwakilan layanan menggunakan Microsoft Entra PowerShell. Ini mencakup mendaftarkan aplikasi, mengonfigurasi properti, menetapkan izin, dan mengelola kepemilikan aplikasi.

Prasyarat

Untuk mengelola aplikasi dengan Microsoft Entra PowerShell, Anda memerlukan:

Daftarkan aplikasi

Permintaan berikut membuat aplikasi dengan hanya menentukan properti yang diperlukan displayName .

Connect-Entra -Scopes 'Application.ReadWrite.All'
New-EntraApplication -DisplayName 'My new application'

DisplayName        Id                                   AppId                                SignInAudience PublisherDomain
-----------        --                                   -----                                -------------- -----------
My new application aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb bbbbbbbb-1111-2222-3333-cccccccccccc MyOrg

Aplikasi ini diberi ID yang unik untuk aplikasi dalam tenant tersebut, dan appId yang unik secara global di seluruh ekosistem Microsoft Entra.

Membuat service principal bagi aplikasi

Connect-Entra -Scopes 'Application.ReadWrite.All'
$myApp = Get-EntraApplication -Filter "DisplayName eq 'My new application'"
New-EntraServicePrincipal  -AppId $myApp.AppId -DisplayName 'My new service principal'
DisplayName Id       AppId                                SignInAudience                       ServicePrincipalType
----------- --       -----                                --------------                       --------------------
My new application   bbbbbbbb-1111-2222-3333-cccccccccccc 00001111-aaaa-2222-bbbb-3333cccc4444 MyOrg Application

Mengonfigurasi properti dasar untuk aplikasi Anda

Anda dapat mengonfigurasi beberapa properti untuk aplikasi Anda. Contoh berikut menunjukkan cara memperbarui nama tampilan aplikasi.

Connect-Entra -Scopes 'Application.ReadWrite.All'
$application = Get-EntraApplication -Filter "DisplayName eq 'My new application'"
Set-EntraApplication -ApplicationId $application.Id -DisplayName 'Contoso application'

Atau, gunakan pipelining untuk memperbarui properti aplikasi.

Connect-Entra -Scopes 'Application.ReadWrite.All'
Get-EntraApplication -Filter "DisplayName eq 'My new application'" | Set-EntraApplication -DisplayName 'Contoso application'

Untuk informasi selengkapnya, lihat Set-EntraApplication.

Batasi masuk aplikasi hanya untuk identitas yang ditetapkan

Membatasi rincian masuk aplikasi hanya untuk identitas yang ditetapkan menggunakan Microsoft Entra PowerShell memastikan bahwa hanya pengguna yang berwenang yang dapat mengakses aplikasi Anda, meningkatkan keamanan dan kontrol.

Connect-Entra -Scopes 'Application.ReadWrite.All'
$application = Get-EntraApplication -Filter "DisplayName eq 'My new application'"
Set-EntraServicePrincipal -ServicePrincipalId $application.Id -AppRoleAssignmentRequired $true

Menetapkan izin ke aplikasi

Anda menetapkan izin ke aplikasi melalui pusat admin Microsoft Entra atau dengan menggunakan Microsoft Entra PowerShell. Di PowerShell, Anda memperbarui properti aplikasi requiredResourceAccess , termasuk izin yang sudah ada dan baru. Jika hanya memberikan izin baru, izin yang sudah ada dan belum disetujui akan dihapus.

Memberikan izin tidak secara otomatis memberikannya kepada aplikasi. Anda masih harus memberikan persetujuan admin menggunakan pusat admin Microsoft Entra.

Connect-Entra -Scopes 'Application.ReadWrite.All'
$application = Get-EntraApplication -Filter "DisplayName eq 'My new application'"
$requiredResourceAccess = @(
    @{resourceAppId    = '00000003-0000-0000-c000-000000000000'
        resourceAccess = @(
            @{
                id   = 'c79f8feb-a9db-4090-85f9-90d820caa0eb'
                type = 'Scope'
            }
            @{
                id   = '9a5d68dd-52b0-4cc2-bd40-abcf44ac3a30'
                type = 'Role'
            } )
    })
Set-EntraApplication -ApplicationId $application.Id -RequiredResourceAccess $requiredResourceAccess 

Kelola pemilik

Dapatkan pemilik service principal

Connect-Entra -Scopes 'Application.ReadWrite.All'
$servicePrincipal = Get-EntraServicePrincipal -Filter "displayName eq 'Helpdesk Application'"
Get-EntraServicePrincipalOwner -ServicePrincipalId $servicePrincipal.Id -All | Select-Object Id, DisplayName, '@odata.type'

Atau, gunakan pipelining untuk mengambil pemilik perwakilan layanan.

Get-EntraServicePrincipal -Filter "displayName eq 'Helpdesk Application'" | Get-EntraServicePrincipalOwner | Select-Object Id, DisplayName, '@odata.type'

Menetapkan pemilik ke perwakilan layanan

Connect-Entra -Scopes 'Application.ReadWrite.All', 'Application.ReadWrite.OwnedBy'
$servicePrincipal = Get-EntraServicePrincipal -Filter "displayName eq 'Helpdesk Application'"
$owner = Get-EntraUser -UserId 'SawyerM@contoso.com'
Add-EntraServicePrincipalOwner -ServicePrincipalId $servicePrincipal.Id -OwnerId $owner.Id

Contoh ini menunjukkan cara menambahkan pemilik ke perwakilan layanan.

  • -ServicePrincipalId - menentukan pengidentifikasi unik (ObjectId) dari perwakilan layanan yang ingin Anda tambahkan pemiliknya.
  • -OwnerId - menetapkan pengidentifikasi unik (ObjectId) dari pengguna atau grup yang ingin Anda tambahkan sebagai pemilik prinsipal layanan yang ditentukan.

Mendapatkan daftar semua aplikasi tanpa penetapan pengguna

Untuk mendapatkan daftar semua aplikasi yang tidak memerlukan penetapan pengguna, gunakan perintah berikut.

Connect-Entra -Scopes 'Application.ReadWrite.All'
Get-EntraServicePrincipal -All | Where-Object {$_.appRoleAssignmentRequired -ne 'True'}
DisplayName                          Id                                     AppId                                  SignInAudience       ServicePrincipalType
-----------------------------------  -----------------------------------    ---------------------------------      -----------------    ------------------
Microsoft password reset service     00aa00aa-bb11-cc22-dd33-44ee44ee44ee   93625bc8-bfe2-437a-97e0-3d0060024faa   AzureADMultipleOrgs  Application
Microsoft.Azure.SyncFabric           11bb11bb-cc22-dd33-ee44-55ff55ff55ff   00000014-0000-0000-c000-000000000000   AzureADMultipleOrgs  Application
Azure Security Insights              22cc22cc-dd33-ee44-ff55-66aa66aa66aa   98785600-1bb7-4fb9-b9fa-19afe2c8a360   AzureADMultipleOrgs  Application

Mengambil objek yang dimiliki atau dibuat oleh prinsipal layanan

Objek yang dibuat oleh perwakilan layanan

Connect-Entra -Scopes 'Application.Read.All'
$servicePrincipal = Get-EntraServicePrincipal -Filter "displayName eq 'Helpdesk Application'"
Get-EntraServicePrincipalCreatedObject -ServicePrincipalId $servicePrincipal.Id

Objek yang dimiliki oleh prinsipal layanan

Connect-Entra -Scopes 'Application.Read.All'
$servicePrincipal = Get-EntraServicePrincipal -Filter "displayName eq 'Helpdesk Application'"
Get-EntraServicePrincipalOwnedObject -ServicePrincipalId $servicePrincipal.Id -All | Select-Object Id, DisplayName, '@odata.type'

Aplikasi dengan rahasia dan sertifikat yang akan kedaluwarsa

Rahasia atau kata sandi aplikasi yang kedaluwarsa

$expirationThreshold = (Get-Date).AddDays(30)
$appsWithExpiringPasswords = Get-EntraApplication -All | Where-Object { $_.PasswordCredentials } | 
ForEach-Object {
    $app = $_
    $app.PasswordCredentials | Where-Object { $_.EndDate -le $expirationThreshold } | 
    ForEach-Object {
        [PSCustomObject]@{
            DisplayName       = $app.DisplayName
            AppId             = $app.AppId
            SecretDisplayName = $_.DisplayName
            KeyId             = $_.KeyId
            ExpiringSecret    = $_.EndDate
        }
    }
}
$appsWithExpiringPasswords | Format-Table DisplayName, AppId, SecretDisplayName, KeyId, ExpiringSecret -AutoSize

Sertifikat kedaluwarsa

$expirationThreshold = (Get-Date).AddDays(30)
$appsWithExpiringKeys = Get-EntraApplication -All | Where-Object { $_.KeyCredentials } | 
ForEach-Object {
    $app = $_
    $app.KeyCredentials | Where-Object { $_.EndDate -le $expirationThreshold } | 
    ForEach-Object {
        [PSCustomObject]@{
            DisplayName            = $app.DisplayName
            AppId                  = $app.AppId
            CertificateDisplayName = $_.DisplayName
            KeyId                  = $_.KeyId
            ExpiringKeys           = $_.EndDate
        }
    }
}
$appsWithExpiringKeys | Format-Table DisplayName, AppId, CertificateDisplayName, KeyId, ExpiringKeys -AutoSize