Управление группами в Azure AD и Microsoft 365 с помощью PowerShell

Управление группами в Azure AD и Microsoft 365 с помощью PowerShell

Для управления группами в Azure можно использовать графические порталы управления Azure Portal или Microsoft 365 Admin Center. В этой статье мы покажем, как создавать, изменять, обновлять и удалять группы в Azure AD и Microsoft 365 с помощью PowerShell.

Прежде всего нужно отменить, что в Azure (M365) есть несколько типов групп:

  • Группы безопасности Azure AD — используются для управления доступом к приложениям, ресурсам Azure. Такие группы можно предоставить доступ к приложению Azure, назначить политики или привязать лицензии (group-based licensing);
  • Группы Microsoft 365 (ранее назывались группы Office 365) – используются как универсальное средство организации доступа к различным продуктам Microsoft 365 (Teams, Yammer, PowerBI, SharePoint, общий ящик в Outlook). По сути, под группами M365 подразумеваются общая рабочая область для участников (команды). При добавлении пользователя в группу M365 он получает доступ ко всему контенту, опубликованному с момента создания группы. Пользователям в такой группе могут удобно обмениваться файлами, документами, рассылками, календарями и т.д.
  • Группы рассылки – используются для email рассылок;
  • Mail-enabled security groups – группы используются как для предоставления доступа, так и для почтовых рассылок.

Вы можете добавлять пользователей в группу Azure AD и Microsoft 365 вручную (assigned membership) или динамически (автоматическое добавление на основании атрибутов пользователя/устройства).

Создать группу безопасности Azure AD с помощью PowerShell

Группы безопасности Azure AD можно создать вручную или синхронизировать из on-prem AD. Рассмотрим, как создать группы безопасности Azure AD и добавить в них пользователей с помощью PowerShell.

Подключитесь к вашему тенанту Azure с помощью PowerShell модуля AzureAD:

Connect-AzureAD

Чтобы создать новую группу безопасности Azure, выполните команду:

New-AzureADGroup –DisplayName grVMadmins -SecurityEnabled $true -Description "Security Group for global VM admins" -MailEnabled $false -MailNickName "NotSet"

создать группу безопасности в Azure New-AzureADGroup

Чтобы получить информацию о группе, выполните:

Get-AzureADGroup -SearchString grVMadmins

Чтобы добавить пользователя в группу Azure AD, используйте команду Add-AzureADGroupMember.

Сначала необходимо получить ID пользователя и группы:

$GroupObj = Get-AzureADGroup -SearchString grVMadmins
$UserObj = Get-AzureADUser -SearchString [email protected]

И потом добавить ID пользователя в группу:

Add-AzureADGroupMember -ObjectId $GroupObj.ObjectId -RefObjectId $UserObj.ObjectId

Вывести состав членов группы:

$GroupObj = Get-AzureADGroup -SearchString grVMadmins
Get-AzureADGroupMember -ObjectId $GroupObj.ObjectId| select DisplayName,UserPrincipalName,UserType

вывести список пользователей в группе Azure AD Get-AzureADGroupMember

Вы можете назначить владельца группы Azure с помощью Add-AzureADGroupOwner.

Add-AzureADGroupMember -ObjectId $GroupObj.ObjectId -RefObjectId $UserObj.ObjectId

Вывести владельца группы:

$GroupObj = Get-AzureADGroup -SearchString grVMadmins
Get-AzureADGroupOwner -ObjectId $GroupObj.ObjectId

Вывести все группы, синхронизированные из on-prem AD через Azure AD Connect (в параметре LastDirSyncTime содержится дата последней синхронизации).

Get-AzureADGroup -Filter 'DirSyncEnabled eq true' | select ObjectId,DisplayName,LastDirSyncTime

Управление группами Microsoft 365 с помощью PowerShell

Группы Microsoft 365 создаются автоматически с помощью приложений M365 (Teams, Share Point, Outlook, Yammer, и т.д.). По-умолчанию, группу Microsoft 365 может создать любой пользователь. Когда пользователь создает новую группу в Outlook или другом приложении (частную или общедоступную), создается ни что иное, как группа Microsoft 365. Группы Microsoft 365 доступны во всех сервисах M365.

создать группу microsoft 365 через outlook

Такая группа сразу появится в списке групп на портале Azure, и в Microsoft 365 Admin Center.

группы Microsoft 365 в Azure AD

Для создания групп Microsoft 365 можно использовать командлет New-UnifiedGroup из модуля Exchange Online PowerShell (EXOv2).

Подключитесь к тенанту:

Connect-ExchangeOnline

Чтобы создать новую группу M365, выполните команду:

New-UnifiedGroup -DisplayName "IT Department" -Alias "it_dept" -EmailAddresses [email protected] -AccessType Private

В M365 есть два типа групп:

  • Public – открытая группа. Любой пользователь можно присоединится к группе и получить доступ ко всему содержимому;
  • Private – частная группа, доступ только для членов группы. Добавить пользователя в закрытую группу может владелец группу или администратор Azure.

Чтобы добавить в группу пользователей или владельцев используется командлет Add-UnifiedGroupLinks. Добавим в группу пользователя и назначим его владельцем:

Add-UnifiedGroupLinks –Identity it_dept –LinkType Members –Links DiegoS
Add-UnifiedGroupLinks –Identity it_dept –LinkType Owners –Links DiegoS

Можно добавить подписчика в группу. Подписчик будет получать email уведомления:

Add-UnifiedGroupLinks –Identity it_dept –LinkType Subscribers –Links AlexD

Если нужно добавить в группу Microsoft 365 сразу несколько пользователей, можно импортировать их список из CSV файла:

Import-CSV "C:PSadd_m365_members.csv" | ForEach-Object {
Add-UnifiedGroupLinks –Identity it_dept –LinkType Members –Links $_.member
}

Вывести всех пользователей в группе:

Get-UnifiedGroupLinks –Identity it_dept –LinkType Members

Get-UnifiedGroupLinks вывести всез пользователей в группе Microsoft 365

Показать владельцев группы:

Get-UnifiedGroupLinks –Identity it_dept –LinkType Owners

Можно скрыть группу M365 в глобальной адресной книге (GAL):

Set-UnifiedGroup -Identity it_dept -HiddenFromAddressListsEnabled $true

Создаем динамические группы в Azure AD с помощью PowerShell

Вы можете создать динамическую группу пользователей или устройств в Azure AD. Состав такой группы определяется динамически на основании атрибутов пользователей Azure. Динамическое членство поддерживается для групп безопасности Azure, так и для групп Microsoft 365. Для создания динамических групп используется командлет New-AzureADMSGroup из модуля AzureAD.

Для использования динамических групп нужна лицензия Azure AD Premium P1 или P2.

Например, вы можете сделать динамическую группу, которая включает в себя всех пользователей из Москвы (user.city -eq «Moscow»), у которых в должности указано (user.jobTitle -like “инженер”). Создадим динамическую группу безопасности Azure для этого примера:

New-AzureADMSGroup -Description "msk_engineers" -DisplayName "All MSK IT engineers (dyn)" -MailEnabled $false -SecurityEnabled $true -MailNickname msk_engineers -GroupTypes "DynamicMembership" -MembershipRule "(user.city -eq ""Moscow"" -and user.jobTitle -contains ""инженер"")" -MembershipRuleProcessingState "On"

New-AzureADMSGroup создать динамическую группу в azure из powershell

К сожалению, модуль AzureAD при попытке запустить такую команду возвращает ошибку:
New-AzureADMSGroup : A parameter cannot be found that matches parameter name 'MembershipRule'.

Чтобы создать динамическую группу в Azure, пока приходится использовать модуль AzureADPreview:
Import-Module AzureADPreview
get-command New-AzureADMSGroup

get-command New-AzureADMSGroup

Для создания динамической группы Microsoft 365, нужно указать тип группы Unified:

New-AzureADMSGroup -DisplayName "M365 Admins" -Description "Dynamic Microsoft 365 Group for tenant administrators" -MailEnabled $True -SecurityEnabled $True -MailNickname M365GAdmins -GroupTypes "DynamicMembership", "Unified" -MembershipRule "(User.JobTitle -eq ""Microsoft 365 Administrator"")" -MembershipRuleProcessingState "On

Состав динамических групп в организации обновляется при изменении свойств любого пользователя или устройства. Если вы вносите массовые изменения в AD, импортируете большое количество пользователей, или еще как-то меняете архитектуру групп/пользователей, желательно временно приостановить автоматическое обновление динамических групп:

$dynGroupObj = Get-AzureADMSGroup -SearchString “All MSK IT engineers (dyn)”
Set-AzureADMSGroup -Id $dynGroupObj.id -MembershipRuleProcessingState "Paused"

Чтобы включить обработку правил для динамической группы, выполните:

Set-AzureADMSGroup -Id $dynGroupObj.id -MembershipRuleProcessingState "On"

В следующей таблице приведены пример атрибутов пользователей, которые можно использовать при построении запросов для динамических групп Azure.

Тип Атрибут Пример
Bool accountEnabled user.accountEnabled -eq true
Bool dirSyncEnabled user.dirSyncEnabled -eq true
String city (user.city -eq “значение”)
String country (user.country -eq “значение”)
String companyName (user.companyName -eq “значение”)
String department (user.department -eq “значение”)
String displayName (user.displayName -eq “значение”)
String employeeId (user.employeeId -eq “значение”)
String facsimileTelephoneNumber (user.facsimileTelephoneNumber -eq “значение”)
String givenName (user.givenName -eq “значение”)
String jobTitle (user.jobTitle -eq “значение”)
String mail (user.mail -eq “значение”)
String mailNickName (user.mailNickName -eq “значение”)
String mobile (user.mobile -eq “значение”)
String objectId (user.objectId -eq “значение”)
String onPremisesSecurityIdentifier (user.onPremisesSecurityIdentifier -eq “значение”)
String passwordPolicies (user.passwordPolicies -eq “DisableStrongPassword”)
String physicalDeliveryOfficeName (user.physicalDeliveryOfficeName -eq “значение”)
String postalCode (user.postalCode -eq “значение”)
String preferredLanguage (user.preferredLanguage -eq “ru-RU”)
String sipProxyAddress (user.sipProxyAddress -eq “значение”)
String state (user.state -eq “значение”)
String streetAddress (user.streetAddress -eq “значение”)
String surname (user.surname -eq “значение”)
String telephoneNumber (user.telephoneNumber -eq “значение”)
String usageLocation (user.usageLocation -eq “US”)
String userPrincipalName (user.userPrincipalName -eq “[email protected]”)
String userType (user.userType -eq “Member”)
String collection otherMails (user.otherMails -contains “[email protected]”)
String collection proxyAddresses (user.proxyAddresses -contains “SMTP: [email protected]”)

Microsoft 365
Управление группами в Azure AD и Microsoft 365 с помощью PowerShell