Gerir aplicações

Uma aplicação tem de estar registada no Microsoft Entra ID para que a plataforma de identidades da Microsoft a possa autorizar a aceder a dados armazenados em locatários do Microsoft Entra ou do Microsoft 365. Esta condição aplica-se a aplicações que desenvolve por si próprio, que o seu inquilino possui ou que acede através de uma subscrição ativa.

Muitas definições de aplicações são registadas como objetos que podem ser acedidos, atualizados ou eliminados usando o Microsoft Entra PowerShell. Estes objetos incluem aplicações, princípios de serviço e atribuições de papéis de aplicação.

Neste artigo, aprende como gerir registos de aplicações e objetos principais de serviço usando o Microsoft Entra PowerShell. Abrange o registo de aplicações, a configuração de propriedades, a atribuição de permissões e a gestão da propriedade da aplicação.

Pré-requisitos

Para gerir aplicações com o Microsoft Entra PowerShell, precisa de:

Registar uma candidatura

O pedido seguinte cria uma aplicação especificando apenas a propriedade necessária 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

A aplicação recebe um ID único para as aplicações no tenant, e um appID globalmente único no ecossistema Microsoft Entra.

Crie um princípio de serviço para uma aplicação

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

Configure propriedades básicas para a sua aplicação

Pode configurar várias propriedades para a sua aplicação. O exemplo seguinte mostra como atualizar o nome de exibição de uma aplicação.

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

Em alternativa, utilize o encadeamento para atualizar as propriedades de uma aplicação.

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

Para mais informações, consulte Set-EntraApplication.

Limitar o início de sessão da aplicação apenas às identidades atribuídas

Limitar o início de sessão de aplicações apenas a identidades atribuídas usando o Microsoft Entra PowerShell garante que apenas utilizadores autorizados possam aceder às suas aplicações, aumentando a segurança e o controlo.

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

Atribuir permissões a uma aplicação

Atribui permissões a uma aplicação através do centro de administração Microsoft Entra ou usando o Microsoft Entra PowerShell. No PowerShell, atualiza-se a propriedade da requiredResourceAccess aplicação, incluindo as permissões existentes e as novas. Fornecer apenas novas permissões remove quaisquer permissões existentes às quais não tenha sido dado consentimento.

Atribuir permissões não as concede automaticamente à aplicação. Deve ainda assim conceder consentimento de administrador através do centro de administração 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 

Gerir proprietários

Obter o proprietário de um principal de serviço

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'

Em alternativa, utilize o pipeline para recuperar o proprietário do principal do serviço.

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

Atribuir um proprietário a um principal de serviço

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

Este exemplo mostra como adicionar um proprietário a um principal de serviços.

  • -ServicePrincipalId - especifica o identificador único (ObjectId) do principal de serviço ao qual pretende adicionar um proprietário.
  • -OwnerId - especifica o identificador único (ObjectId) do utilizador ou grupo que pretende adicionar como proprietário do principal de serviço especificado.

Obtenha uma lista de todas as aplicações sem atribuição de utilizador

Para obter uma lista de todas as aplicações que não requerem atribuição de utilizador, use o seguinte comando.

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

Recuperação de objetos pertencentes ou criados por um principal de serviço

Objetos criados por um principal de serviço

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

Objetos pertencentes a um principal de serviço

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'

Aplicações com segredos e certificados prestes a expirar

Secretos ou palavras-passe de candidatura a expirar

$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

Certificados a expirar

$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