Назначить пользователей для приложения Azure AD с помощью PowerShell
Приложения Azure AD для предприятий — отличный способ подключить сторонние приложения к вашему Azure Active Directory. В зависимости от вашего плана Azure AD вы можете назначать либо отдельных пользователей приложению, либо целые группы.
С планом Azure AD 1 вы можете назначать только пользователей, а не группы. Поэтому поддерживать актуальность списка пользователей - крайне трудная задача. Каждый раз, когда вы добавляете нового пользователя в свой арендатор Office 365, вам необходимо будет добавить его также в приложение Azure AD.
Например, если вы хотите интегрировать Jira Cloud с Azure AD. Если у вас есть доступ к Jira Cloud (Atlassian Cloud Access), вы можете подключить его к вашей Azure Active Directory, чтобы новые пользователи автоматически добавлялись в Jira.
Добавьте пользователей в приложение Azure AD с помощью PowerShell
Чтобы автоматически назначать новых пользователей на корпоративные приложения, нам нужно знать существующих пользователей и всех лицензированных пользователей в нашей аренде.
Получение лицензированных пользователей проще с услугами Msol, но я хочу запустить этот сценарий в Runbook Azure. Аутентификация Azure AD гораздо проще (и удобнее), чем услуги Msol.
Совет
Если вы хотите узнать больше о том, как начать работу с Azure Runbooks или об аутентификации в Runbooks, обязательно прочитайте эту статью.
Нам понадобится идентификатор объекта Azure AD Enterprise Application, а именно служебный принципал. Чтобы получить это, мы можем просто отфильтровать AzureADServicePrincipal по имени приложения.
Connect to Azure AD
Connect-AzureAD
Get the service principal for the app you want to assign the user to
$servicePrincipal = Get-AzureADServicePrincipal -Filter "Displayname eq 'APPLICATION-NAME'"С помощью servicePrincipal мы можем получить всех пользователей, которым назначена роль для приложения:
Get all users that are already assigned to the application
$existingUsers = Get-AzureADServiceAppRoleAssignment -all $true -ObjectId $servicePrincipal.Objectid | select -ExpandProperty PrincipalIdМы хотим добавить только пользователей Office 365, у которых есть лицензия. Если мы этого не отфильтруем, мы также получим учетные записи гостей, например.
Get all licensedUsers
$licensedUsers = Get-AzureADUser -all $true | Where-Object {$_.AssignedLicenses} | Select displayname,objectidСледующий шаг — сравнить оба списка, которые у нас есть, чтобы получить всех новых пользователей, которых нужно добавить:
Compare lists
$newUsers = $licensedUsers | Where-Object { $_.ObjectId -notin $existingUsers }Теперь у нас есть список новых пользователей, которые не назначены в приложении. Мы можем просто обработать этот список и назначить им новую роль в корпоративном приложении Azure AD:
ForEach ($user in $newUsers) {
Try {
New-AzureADUserAppRoleAssignment -ObjectId $user.ObjectId -PrincipalId $user.ObjectId -ResourceId $servicePrincipal.ObjectId -Id $servicePrincipal.Approles[0].id -ErrorAction Stop
[PSCustomObject]@{
UserPrincipalName = $user.displayname
AppliciationAssigned = $true
}
}
catch {
[PSCustomObject]@{
UserPrincipalName = $user.displayname
AppliciationAssigned = $false
}
}
}Я всегда стараюсь использовать блок try-catch и выводить результаты в пользовательский объект. Так мы можем легко увидеть, что сделала программа.
Завершение
Я использовал этот скрипт в Azure Runbook. Вы можете найти полный скрипт здесь на моем Github, который вы можете использовать в runbook. Аутентификация основана на учётной записи Run As учётной записи Azure Automation. Вы можете найти дополнительную информацию об этом здесь.
Если у вас есть вопросы, просто оставьте комментарий ниже.
