Verwalten von Apps

Eine App muss in Microsoft Entra ID registriert werden, bevor die Microsoft-Identitätsplattform sie zum Zugriff auf Daten autorisieren kann, die in Mandanten von Microsoft Entra oder Microsoft 365 gespeichert sind. Diese Bedingung gilt für Apps, die Sie selbst entwickeln, die Ihr Mandant besitzt oder auf die Sie über ein aktives Abonnement zugreifen.

Viele Einstellungen für Apps werden als Objekte aufgezeichnet, auf die mithilfe von Microsoft Entra PowerShell zugegriffen, aktualisiert oder gelöscht werden kann. Zu diesen Objekten gehören Anwendungen, Dienstprinzipale und App-Rollenzuweisungen.

In diesem Artikel erfahren Sie, wie Sie App-Registrierungen und Dienstprinzipalobjekte mithilfe von Microsoft Entra PowerShell verwalten. Es umfasst das Registrieren von Anwendungen, das Konfigurieren von Eigenschaften, das Zuweisen von Berechtigungen und das Verwalten des App-Besitzes.

Voraussetzungen

Um Apps mit Microsoft Entra PowerShell zu verwalten, benötigen Sie Folgendes:

Registrieren einer Anwendung

Die folgende Anforderung erstellt eine App, indem nur die erforderliche displayName Eigenschaft angegeben wird.

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

Der Anwendung wird eine ID zugewiesen, die innerhalb des Mandanten für Apps eindeutig ist, und eine appId, die im Microsoft-Entra-Ökosystem global eindeutig ist.

Erstellen Sie einen Dienstprinzipal für eine Anwendung

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

Konfigurieren grundlegender Eigenschaften für Ihre App

Sie können mehrere Eigenschaften für Ihre App konfigurieren. Das folgende Beispiel zeigt, wie der Anzeigename einer Anwendung aktualisiert wird.

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

Alternativ können Sie pipelining verwenden, um Die Eigenschaften einer Anwendung zu aktualisieren.

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

Weitere Informationen finden Sie unter Set-EntraApplication.

Beschränken der App-Anmeldung auf nur zugewiesene Identitäten

Durch das Einschränken von App-Anmeldungen auf nur zugewiesene Identitäten mithilfe von Microsoft Entra PowerShell wird sichergestellt, dass nur autorisierte Benutzer auf Ihre Anwendungen zugreifen können, wodurch Sicherheit und Kontrolle verbessert werden.

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

Zuweisen von Berechtigungen zu einer App

Sie weisen einer App Berechtigungen über die Microsoft Entra Admin Center oder mithilfe von Microsoft Entra PowerShell zu. In PowerShell aktualisieren Sie die Eigenschaft der App requiredResourceAccess , einschließlich vorhandener und neuer Berechtigungen. Wenn nur neue Berechtigungen übergeben werden, werden alle bestehenden Berechtigungen entfernt, denen nicht zugestimmt wurde.

Durch das Zuweisen von Berechtigungen werden diese der App nicht automatisch erteilt. Sie müssen weiterhin die Administratorzustimmung über die Microsoft Entra Admin Center erteilen.

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 

Verwalten von Besitzern

Den Besitzer eines Dienstprinzipals abrufen

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'

Alternativ können Sie Pipelining verwenden, um den Besitzer des Dienstprinzipals abzurufen.

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

Zuweisen eines Besitzers zu einem Dienstprinzipal

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

In diesem Beispiel wird gezeigt, wie Sie einem Dienstprinzipal einen Besitzer hinzufügen.

  • -ServicePrincipalId - Gibt den eindeutigen Bezeichner (ObjectId) des Dienstprinzipals an, dem Sie einen Besitzer hinzufügen möchten.
  • -OwnerId - Gibt den eindeutigen Bezeichner (ObjectId) des Benutzers oder der Gruppe an, den Sie als Besitzer des angegebenen Dienstprinzipals hinzufügen möchten.

Abrufen einer Liste aller Anwendungen ohne Benutzerzuweisung

Verwenden Sie den folgenden Befehl, um eine Liste aller Anwendungen abzurufen, die keine Benutzerzuweisung erfordern.

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

Abrufen von Objekten, die sich im Besitz eines Dienstprinzipals befinden oder von diesem erstellt wurden

Von einem Dienstprinzipal erstellte Objekte

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

Objekte, die einem Dienstprinzipal gehören

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'

Anwendungen mit ablaufenden geheimen Schlüsseln und Zertifikaten

Ablaufende Anwendungsgeheimnisse oder Kennwörter

$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

Ablaufende Zertifikate

$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