Spravovat aplikace

Aby ji platforma Microsoft identity mohla autorizovat pro přístup k datům uloženým v Microsoft Entra nebo tenantech Microsoft 365, musí být aplikace předtím zaregistrována v Microsoft Entra ID. Tato podmínka platí pro aplikace, které vyvíjíte sami, které vlastní váš tenant nebo ke kterým přistupujete prostřednictvím aktivního předplatného.

Mnoho nastavení pro aplikace se zaznamenává jako objekty, ke kterým se dá přistupovat, aktualizovat nebo odstranit pomocí Microsoft Entra PowerShellu. Mezi tyto objekty patří aplikace, instanční objekty a přiřazení rolí aplikací.

V tomto článku se dozvíte, jak spravovat registrace aplikací a instanční objekty pomocí Microsoft Entra PowerShellu. Popisuje registraci aplikací, konfiguraci vlastností, přiřazování oprávnění a správu vlastnictví aplikace.

Předpoklady

Pokud chcete spravovat aplikace pomocí Microsoft Entra PowerShellu, potřebujete:

Registrace aplikace

Následující požadavek vytvoří aplikaci zadáním pouze požadované displayName vlastnosti.

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

Aplikace má přiřazené ID, které je jedinečné pro aplikace v tenantovi, a id aplikace, které je globálně jedinečné v ekosystému Microsoft Entra.

Vytvořte instanční objekt pro aplikaci

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

Konfigurace základních vlastností aplikace

Pro aplikaci můžete nakonfigurovat více vlastností. Následující příklad ukazuje, jak aktualizovat zobrazovaný název aplikace.

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

Alternativně můžete k aktualizaci vlastností aplikace použít pipelining.

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

Další informace naleznete v tématu Set-EntraApplication.

Omezení přihlašování aplikací jenom na přiřazené identity

Omezení přihlašování aplikací jenom na přiřazené identity pomocí Microsoft Entra PowerShellu zajišťuje, aby k vašim aplikacím mohli přistupovat jenom oprávnění uživatelé, což zvyšuje zabezpečení a kontrolu.

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

Přiřazení oprávnění k aplikaci

Oprávnění aplikaci přiřadíte prostřednictvím centra pro správu Microsoft Entra nebo pomocí Microsoft Entra PowerShellu. V PowerShellu aktualizujete vlastnost aplikace requiredResourceAccess , včetně existujících i nových oprávnění. Předáním pouze nových oprávnění se odeberou všechny existující, se kterými nesouhlasíte.

Přiřazení oprávnění je aplikaci automaticky neudělí. Souhlas správce musíte přesto udělit pomocí Centrum pro správu 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 

Správa vlastníků

Získat vlastníka instančního objektu služby

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'

Alternativně můžete k načtení vlastníka instančního objektu použít pipelining.

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

Přiřaďte vlastníka instančnímu objektu služby

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

Tento příklad ukazuje, jak přiřadit vlastníka k instančnímu objektu služby.

  • -ServicePrincipalId – určuje jedinečný identifikátor (ObjectId) instančního objektu služby, kterému chcete přidat vlastníka.
  • -OwnerId – určuje jedinečný identifikátor (ObjectId) uživatele nebo skupiny, které chcete přidat mezi vlastníky zadaného instančního objektu služby.

Získání seznamu všech aplikací bez přiřazení uživatele

Pokud chcete získat seznam všech aplikací, které nevyžadují přiřazení uživatele, použijte následující příkaz.

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

Načítání objektů, které instanční objekt vlastní nebo vytvořil

Objekty vytvořené instančním objektem služby

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

Objekty vlastněné objektem služby

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'

Aplikace s prošlými tajnými kódy a certifikáty

Vypršení platnosti tajných kódů nebo hesel aplikací

$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

Vypršení platnosti certifikátů

$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