Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Приложение должно быть зарегистрировано в Microsoft Entra ID, прежде чем платформа идентификации Microsoft сможет авторизовать его для доступа к данным, хранящимся в арендаторах Microsoft Entra или Microsoft 365. Это условие относится к приложениям, которые вы разрабатываете самостоятельно, принадлежащих вашему клиенту или к которым вы обращаетесь через активную подписку.
Многие параметры для приложений записываются как объекты, к которым можно получить доступ, обновить или удалить с помощью Microsoft Entra PowerShell. К этим объектам относятся приложения, субъекты-службы и назначения ролей приложений.
В этой статье вы узнаете, как управлять регистрациями приложений и объектами субъектов-служб с помощью Microsoft Entra PowerShell. В нем рассматриваются регистрация приложений, настройка свойств, назначение разрешений и управление владением приложениями.
Prerequisites
Чтобы управлять приложениями с помощью Microsoft Entra PowerShell, вам потребуется:
- Учетная запись пользователя Microsoft Entra. Если ее нет, можно создать учетную запись бесплатно.
- Одна из следующих ролей:
- Предоставьте себе наименее привилегированное делегированное разрешение, указанное для операции.
- Установлен модуль PowerShell Microsoft Entra. Следуйте инструкциям по установке модуля PowerShell Microsoft Entra, чтобы установить модуль.
Регистрация приложения
Следующий запрос создает приложение, указывая только необходимое 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
Приложению назначается идентификатор, уникальный для приложений в пределах клиента, и appId, глобально уникальный в экосистеме Microsoft Entra.
Создание субъекта-службы для приложения
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
Настройка базовых свойств приложения
Вы можете настроить несколько свойств для приложения. В следующем примере показано, как обновить отображаемое имя приложения.
Connect-Entra -Scopes 'Application.ReadWrite.All'
$application = Get-EntraApplication -Filter "DisplayName eq 'My new application'"
Set-EntraApplication -ApplicationId $application.Id -DisplayName 'Contoso application'
Кроме того, используйте конвейерную структуру для обновления свойств приложения.
Connect-Entra -Scopes 'Application.ReadWrite.All'
Get-EntraApplication -Filter "DisplayName eq 'My new application'" | Set-EntraApplication -DisplayName 'Contoso application'
Дополнительные сведения см. в разделе Set-EntraApplication.
Ограничить вход в приложение только для назначенных учетных записей
Ограничение входа в приложения только для назначенных учетных записей с помощью Microsoft Entra PowerShell гарантирует, что доступ к вашим приложениям смогут получать только авторизованные пользователи, повышая безопасность и управляемость.
Connect-Entra -Scopes 'Application.ReadWrite.All'
$application = Get-EntraApplication -Filter "DisplayName eq 'My new application'"
Set-EntraServicePrincipal -ServicePrincipalId $application.Id -AppRoleAssignmentRequired $true
Назначение разрешений приложению
Вы назначаете разрешения приложению через центр администрирования Microsoft Entra или с помощью Microsoft Entra PowerShell. В PowerShell вы обновляете свойство приложения requiredResourceAccess , включая существующие и новые разрешения. Передача только новых разрешений удаляет все существующие, которым не предоставлено согласие.
Назначение разрешений не означает, что они автоматически предоставляются приложению. Вы по-прежнему должны предоставить согласие администратора с помощью Центр администрирования 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
Управление владельцами
Получение владельца субъекта-службы
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'
В качестве альтернативы используйте конвейер, чтобы получить владельца субъекта-службы.
Get-EntraServicePrincipal -Filter "displayName eq 'Helpdesk Application'" | Get-EntraServicePrincipalOwner | Select-Object Id, DisplayName, '@odata.type'
Назначьте владельца субъекту-службе
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
В этом примере показано, как добавить владельца для субъекта-службы.
-
-ServicePrincipalId— задает уникальный идентификатор (ObjectId) субъекта-службы, к которому требуется добавить владельца. -
-OwnerId— указывает уникальный идентификатор пользователя или группы, которую вы хотите добавить в качестве владельца указанного субъекта-службы.
Получение списка всех приложений без назначения пользователем
Чтобы получить список всех приложений, которые не требуют назначения пользователей, используйте следующую команду.
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
Извлечение объектов, принадлежащих субъекту службы или созданных им
Объекты, созданные субъектом-службой
Connect-Entra -Scopes 'Application.Read.All'
$servicePrincipal = Get-EntraServicePrincipal -Filter "displayName eq 'Helpdesk Application'"
Get-EntraServicePrincipalCreatedObject -ServicePrincipalId $servicePrincipal.Id
Объекты, принадлежащие сервисному субъекту
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'
Приложения с истекающим сроком действия секретов и сертификатов
Срок действия секретов приложения или паролей
$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
Срок действия сертификатов
$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