Uygulamaları yönetme

Microsoft kimlik platformunun, Microsoft Entra veya Microsoft 365 kiracılarında depolanan verilere erişmesine yetki verebilmesi için, bir uygulamanın önce Microsoft Entra ID’ye kaydedilmesi gerekir. Bu koşul, kendi geliştirdiğiniz, kiracınızın sahip olduğu veya etkin bir abonelik üzerinden eriştiğiniz uygulamalar için geçerlidir.

Uygulamaların birçok ayarı, PowerShell Microsoft Entra kullanılarak erişilebilen, güncelleştirilebilen veya silinebilen nesneler olarak kaydedilir. Bu nesneler arasında uygulamalar, hizmet sorumluları ve uygulama rolü atamaları bulunur.

Bu makalede, Microsoft Entra PowerShell kullanarak uygulama kayıtlarını ve hizmet sorumlusu nesnelerini yönetmeyi öğreneceksiniz. Uygulama kaydetmeyi, özellikleri yapılandırmayı, izinleri atamayı ve uygulama sahipliğini yönetmeyi kapsar.

Prerequisites

Microsoft Entra PowerShell ile uygulamaları yönetmek için şunları yapmanız gerekir:

Bir uygulamayı kaydetme

Aşağıdaki istek, yalnızca gerekli displayName özelliği belirterek bir uygulama oluşturur.

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

Uygulamaya kiracıdaki uygulamalar için benzersiz bir kimlik ve Microsoft Entra ekosisteminde genel olarak benzersiz olan bir appId atanır.

Uygulama için hizmet sorumlusu oluşturma

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

Uygulamanız için temel özellikleri yapılandırma

Uygulamanız için birden çok özellik yapılandırabilirsiniz. Aşağıdaki örnekte, bir uygulamanın görünen adını güncelleştirme gösterilmektedir.

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

Alternatif olarak, bir uygulamanın özelliklerini güncelleştirmek için kanal çizgisini kullanın.

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

Daha fazla bilgi için bkz. Set-EntraApplication.

Uygulama oturum açmayı yalnızca atanan kimlikler ile sınırlandırma

Uygulama oturum açma işlemleri yalnızca Microsoft Entra PowerShell kullanılarak atanan kimliklerle sınırlanması, uygulamalarınıza yalnızca yetkili kullanıcıların erişebilmesini sağlayarak güvenlik ve denetimi geliştirir.

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

Uygulamaya izin atama

Microsoft Entra yönetim merkezi aracılığıyla veya Microsoft Entra PowerShell kullanarak bir uygulamaya izinler atarsınız. PowerShell'de, hem mevcut hem de yeni izinler dahil olmak üzere uygulamanın requiredResourceAccess özelliğini güncelleştirirsiniz. Yalnızca yeni izinlerin geçirilmesi, onaylanmayan mevcut izinleri kaldırır.

İzinlerin atanması, bu izinleri uygulamaya otomatik olarak vermez. yine de Microsoft Entra yönetim merkezi kullanarak yönetici onayı vermelisiniz.

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 

Sahipleri yönetin

Bir hizmet asıl öğesinin sahibini alma

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'

Alternatif olarak, hizmet asıl sorumlusunun sahibini almak için ardışık düzen kullanarak ilerleyin.

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

Hizmet sorumlusuna sahip atama

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

Bu örnek, bir hizmet asıl öğesine nasıl sahip ekleneceğini gösterir.

  • -ServicePrincipalId - Sahip eklemek istediğiniz hizmet sorumlusunun benzersiz tanımlayıcısını (ObjectId) belirtir.
  • -OwnerId - Belirtilen hizmet sorumlusunun sahibi olarak eklemek istediğiniz kullanıcı veya grubun benzersiz tanımlayıcısını (ObjectId) belirtir.

Kullanıcı ataması olmayan tüm uygulamaların listesini alma

Kullanıcı ataması gerektirmeyen tüm uygulamaların listesini almak için aşağıdaki komutu kullanın.

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

Hizmet sorumlusu tarafından sahip olunan veya oluşturulan nesneleri alma

Hizmet sorumlusu tarafından oluşturulan nesneler

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

Hizmet sorumlusuna ait nesneler

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'

Süresi dolan gizli anahtarlara ve sertifikalara sahip uygulamalar

Süresi dolan uygulama gizli anahtarları veya parolaları

$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

Süresi dolan sertifikalar

$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