Поиск по сайту:

Назначить пользователей для приложения 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. Вы можете найти дополнительную информацию об этом здесь.

Если у вас есть вопросы, просто оставьте комментарий ниже.