Apps beheren

Een app moet worden geregistreerd in Microsoft Entra ID voordat de Microsoft identity platform deze kan autoriseren voor toegang tot gegevens die zijn opgeslagen in Microsoft Entra of Microsoft 365 tenants. Deze voorwaarde is van toepassing op apps die u zelf ontwikkelt, die uw tenant bezit of waartoe u toegang hebt via een actief abonnement.

Veel instellingen voor apps worden vastgelegd als objecten die kunnen worden geopend, bijgewerkt of verwijderd met behulp van Microsoft Entra PowerShell. Deze objecten omvatten toepassingen, service-principals en app-roltoewijzingen.

In dit artikel leert u hoe u app-registraties en service-principal-objecten beheert met behulp van Microsoft Entra PowerShell. Het omvat het registreren van toepassingen, het configureren van eigenschappen, het toewijzen van machtigingen en het beheren van app-eigendom.

Prerequisites

Als u apps wilt beheren met Microsoft Entra PowerShell, hebt u het volgende nodig:

Een toepassing registreren

Met de volgende aanvraag wordt een app gemaakt door alleen de vereiste displayName eigenschap op te geven.

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

Aan de toepassing wordt een id toegewezen die uniek is voor apps in de tenant en een appId die wereldwijd uniek is in het Microsoft Entra ecosysteem.

Een service-principal maken voor een toepassing

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

Basiseigenschappen voor uw app configureren

U kunt meerdere eigenschappen voor uw app configureren. In het volgende voorbeeld ziet u hoe u de weergavenaam van een toepassing bijwerkt.

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

U kunt ook pipelining gebruiken om eigenschappen van een toepassing bij te werken.

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

Zie Set-EntraApplication voor meer informatie.

App-aanmelding beperken tot alleen toegewezen identiteiten

Het beperken van app-aanmeldingen tot alleen toegewezen identiteiten met behulp van Microsoft Entra PowerShell zorgt ervoor dat alleen geautoriseerde gebruikers toegang hebben tot uw toepassingen, waardoor de beveiliging en controle worden verbeterd.

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

Machtigingen toewijzen aan een app

U wijst machtigingen toe aan een app via de Microsoft Entra-beheercentrum of met behulp van Microsoft Entra PowerShell. In PowerShell werkt u de eigenschap van requiredResourceAccess de app bij, inclusief zowel bestaande als nieuwe machtigingen. Als u alleen nieuwe machtigingen doorgeeft, worden bestaande machtigingen verwijderd waarvoor geen toestemming is gegeven.

Het toewijzen van machtigingen verleent deze niet automatisch aan de app. U moet nog steeds beheerderstoestemming verlenen met behulp van de Microsoft Entra-beheercentrum.

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 

Eigenaren beheren

De eigenaar van een service-principal ophalen

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'

U kunt ook pipelining gebruiken om de eigenaar van de service-principal op te halen.

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

Een eigenaar toewijzen aan een service-principal

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 dit voorbeeld ziet u hoe u een eigenaar toevoegt aan een service-principal.

  • -ServicePrincipalId - hiermee geeft u de unieke id (ObjectId) op van de service-principal waaraan u een eigenaar wilt toevoegen.
  • -OwnerId - geeft de unieke id (ObjectId) op van de gebruiker of groep die u wilt toevoegen als eigenaar van de opgegeven service-principal.

Een lijst met alle toepassingen zonder gebruikerstoewijzing ophalen

Gebruik de volgende opdracht om een lijst op te halen met alle toepassingen waarvoor geen gebruikerstoewijzing is vereist.

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

Objecten ophalen die eigendom zijn van of zijn gemaakt door een service-principal

Objecten die zijn gemaakt door een service-principal

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

Objecten die eigendom zijn van een service-principal

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'

Toepassingen met verlopende geheimen en certificaten

Verlopende toepassingsgeheimen of wachtwoorden

$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

Verlopende certificaten

$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