Для управления группами в 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"
Чтобы получить информацию о группе, выполните:
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 с помощью 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.
Такая группа сразу появится в списке групп на портале Azure, и в Microsoft 365 Admin Center.
Для создания групп 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:\PS\add_m365_members.csv" | ForEach-Object {
Add-UnifiedGroupLinks –Identity it_dept –LinkType Members –Links $_.member
}
Вывести всех пользователей в группе:
Get-UnifiedGroupLinks –Identity it_dept –LinkType Members
Показать владельцев группы:
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.
Например, вы можете сделать динамическую группу, которая включает в себя всех пользователей из Москвы (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 : A parameter cannot be found that matches parameter name 'MembershipRule'.
Чтобы создать динамическую группу в Azure, пока приходится использовать модуль AzureADPreview:
Import-Module AzureADPreview
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 | (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]”) |