Правила динамического членства в группах для Azure Active Directory

В службе Azure Active Directory (Azure AD) в составе семейства решений Microsoft Entra можно создавать основанные на атрибутах правила динамического членства в группе. Динамическое членство в группах добавляет и удаляет участников группы автоматически с помощью правил членства на основе атрибутов членов. В этой статье подробно описываются свойства и синтаксис для создания правил динамического членства пользователей и (или) устройств. Вы можете настроить правило динамического членства для групп безопасности или групп Microsoft 365.

При изменении любых атрибутов пользователя или устройства система оценивает все правила динамических групп в каталоге, чтобы определить, приведет ли это изменение к добавлению или удалению в группах. Если пользователь или устройство отвечает правилу, установленному для группы, они добавляются в эту группу. Если они больше не соответствуют правилу, они удаляются. Нельзя вручную добавить или удалить элемент динамической группы.

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

Примечание

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

Построитель правил на портале Azure

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

Вот несколько примеров сложных правил или синтаксиса, построение которых рекомендуется выполнять с использованием текстового поля.

Примечание

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

Дополнительные пошаговые инструкции доступны в разделе Создание или обновление динамической группы.

Add membership rule for a dynamic group

Синтаксис правила для одного выражения

Одно выражение — это минимально возможная форма для правил членства, не содержащая только упомянутые выше три части. Правило с одним выражением выглядит примерно так: Property Operator Value, где свойства указываются в формате "объект.свойство".

Ниже приведен пример правила членства с одним выражением в правильном формате:

user.department -eq "Sales"

Круглые скобки для одного выражения не обязательны. Общая длина текста для правила членства не может превышать 3072 символа.

Создание текста для правила членства

Правило членства, которое автоматически добавляет в группу пользователей или устройства, представляет собой выражение с двоичным результатом, то есть оно возвращает значение true или false. Простейшее правило состоит из трех частей:

  • Свойство
  • Оператор
  • Значение

Чтобы избежать синтаксических ошибок, важно соблюдать определенный порядок частей в этом выражении.

Поддерживаемые свойства

Существует три типа свойств, которые можно использовать для создания правил членства.

  • Логическое
  • Строка
  • Коллекция строк

Ниже приведены свойства пользователя, которые можно использовать для создания одного выражения.

Свойства логического типа

Свойства Допустимые значения Использование
AccountEnabled true, false user.accountEnabled -eq true
dirSyncEnabled true, false user.dirSyncEnabled -eq true

Свойства строкового типа

Свойства Допустимые значения Использование
city Любое строковое значение или null. user.city -eq "value"
country Любое строковое значение или null. user.country -eq "value"
companyName Любое строковое значение или null. user.companyName -eq "value"
department Любое строковое значение или null. user.department -eq "value"
displayName Любое строковое значение user.displayName -eq "value"
employeeId Любое строковое значение user.employeeId -eq "value"
user.employeeId -ne null
facsimileTelephoneNumber Любое строковое значение или null. user.facsimileTelephoneNumber -eq "value"
givenName Любое строковое значение или null. user.givenName -eq "value"
jobTitle Любое строковое значение или null. user.jobTitle -eq "value"
mail Любое строковое значение или null (SMTP-адрес пользователя). user.mail -eq "value"
mailNickName Любое строковое значение (псевдоним электронной почты пользователя) user.mailNickName -eq "value"
memberOf Любое строковое значение (допустимый идентификатор объекта группы) user.memberof -any (group.objectId -in ['value'])
mobile Любое строковое значение или null. user.mobile -eq "value"
objectId GUID объекта пользователя. user.objectId -eq "11111111-1111-1111-1111-111111111111"
onPremisesDistinguishedName (предварительная версия) Любое строковое значение или null. user.onPremisesDistinguishedName -eq "value"
onPremisesSecurityIdentifier; Локальный идентификатор безопасности (SID) для пользователей, которые были синхронизированы из локальной среды в облако. user.onPremisesSecurityIdentifier -eq "S-1-1-11-1111111111-1111111111-1111111111-1111111"
passwordPolicies Нет
DisableStrongPassword
DisablePasswordExpiration
DisablePasswordExpiration, DisableStrongPassword
user.passwordPolicies -eq "DisableStrongPassword"
physicalDeliveryOfficeName Любое строковое значение или null. user.physicalDeliveryOfficeName -eq "value"
postalCode Любое строковое значение или null. user.postalCode -eq "value"
preferredLanguage Код ISO 639-1. user.preferredLanguage -eq "en-US"
sipProxyAddress Любое строковое значение или null. user.sipProxyAddress -eq "value"
state Любое строковое значение или null. user.state -eq "value"
streetAddress Любое строковое значение или null. user.streetAddress -eq "value"
surname Любое строковое значение или null. user.surname -eq "value"
TelephoneNumber Любое строковое значение или null. user.telephoneNumber -eq "value"
usageLocation Двухбуквенный код региона или страны user.usageLocation -eq "US"
userPrincipalName Любое строковое значение user.userPrincipalName -eq "alias@domain"
userType member, guest, null user.userType -eq "Member"

Свойства типа коллекции строк

Свойства Допустимые значения Пример
otherMails Любое строковое значение user.otherMails -contains "alias@domain"
proxyAddresses SMTP: alias@domain smtp: alias@domain user.proxyAddresses -contains "SMTP: alias@domain"

Свойства, используемые для правил устройств, описаны в разделе Правила для устройств.

Поддерживаемые операторы выражений

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

Оператор Синтаксис
Не равно -ne
Равно -eq
Не начинается с -notStartsWith
Начинается с -startsWith
Не содержит -notContains
Содержит -contains
Не соответствует -notMatch
Соответствует -match
В -in
Не входит -notIn

Использование операторов -in и -notIn

Чтобы сравнить значение атрибута пользователя с несколькими значениями, можно использовать оператор -in или -notIn. Символы скобок [ и ] обозначают начало и конец списка значений.

Выражение в следующем примере принимает значение true, если значение user.department равно любому значению из списка.

   user.department -in ["50001","50002","50003","50005","50006","50007","50008","50016","50020","50024","50038","50039","51100"]

Используйте оператор -match

Оператор -match используется для сопоставления с любым регулярным выражением. Примеры:

user.displayName -match "Da.*"   

Da, Dav, David имеют значение true, aDa имеет значение false.

user.displayName -match ".*vid"

David имеет значение true, Da имеет значение false.

Поддерживаемые значения

Используемые в выражении значения могут состоять из нескольких типов, включая следующие:

  • строк
  • логическое (true или false);
  • Числа
  • массивы (чисел или строк).

Включая значение в выражение, важно использовать правильный синтаксис, чтобы избежать ошибок. Вот несколько советов по синтаксису:

  • Двойные кавычки использовать не обязательно, если значение не является строкой.
  • В операциях со строками и регулярными выражениями регистр символов не учитывается.
  • Если строковое значение содержит двойные кавычки, обе кавычки следует экранировать символом, например так: user.department -eq `"Sales`". Это правильный синтаксис, если Sales является строковым выражением. Одинарные кавычки должны быть экранированы с помощью двух одинарных кавычек, а не одной.
  • Можно также выполнить проверку наличия значений NULL, используя значение NULL, например так: user.department -eq null.

Использование значений Null

Чтобы указать значение NULL в правиле, можно использовать значение null.

  • Используйте -eq или -ne при сравнении значения null в выражении.
  • Используйте кавычки вокруг null, если это значение нужно интерпретировать как литеральное строковое значение.
  • Оператор -not не может использоваться в качестве оператора сравнения со значением null. В противном случае при использовании значения null или $null произойдет ошибка.

Ниже показано, как правильно указывать значение NULL.

   user.mail –ne null

Правила с несколькими выражениями

Правило членства в группе может состоять из нескольких двоичных выражений, разделенных логическими операторами -and, -or и (или) -not. Логические операторы можно комбинировать друг с другом.

Ниже приведены примеры правильно составленных правил с несколькими выражениями:

(user.department -eq "Sales") -or (user.department -eq "Marketing")
(user.department -eq "Sales") -and -not (user.jobTitle -contains "SDE")

Приоритет операторов

Все операторы перечислены в порядке убывания приоритета. Операторы в одной строке имеют одинаковый приоритет.

-eq -ne -startsWith -notStartsWith -contains -notContains -match –notMatch -in -notIn
-not
-and
-or
-any -all

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

   user.department –eq "Marketing" –and user.country –eq "US"

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

   user.country –eq "US" –and (user.department –eq "Marketing" –or user.department –eq "Sales")

Правила со сложными выражениями

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

  • свойство состоит из коллекции значений (например, свойство с несколькими значениями);
  • в выражениях используются операторы -any и (или) -all;
  • значение выражения может представлять собой одно или несколько выражений.

Многозначные свойства

Многозначные свойства являются коллекциями объектов того же типа. Их можно использовать для создания правил членства с помощью логических операторов -any и (или) -all.

Свойства Значения Использование
assignedPlans Каждый объект в коллекции предоставляет следующие строковые параметры: capabilityStatus, service, servicePlanId user.assignedPlans -any (assignedPlan.servicePlanId -eq "efb87545-963c-4e0d-99df-69c6916d9eb0" -and assignedPlan.capabilityStatus -eq "Enabled")
proxyAddresses SMTP: alias@domain smtp: alias@domain (user.proxyAddresses -any (_ -contains "contoso"))

Использование операторов -any и -all

Вы можете использовать операторы -any и -all для применения условия к одному или ко всем элементам в коллекции соответственно.

  • -any (выполняется, когда условию соответствует хотя бы один элемент в коллекции)
  • -all (выполняется, когда условию соответствуют все элементы в коллекции)

Пример 1

assignedPlans — это многозначное свойство, которое перечисляет все сервисные планы, назначенные пользователю. Представленное ниже выражение отбирает пользователей, которым назначен план обслуживания Exchange Online (план 2), то есть присвоен идентификатор этого плана, и этот план находится в состоянии Enabled:

user.assignedPlans -any (assignedPlan.servicePlanId -eq "efb87545-963c-4e0d-99df-69c6916d9eb0" -and assignedPlan.capabilityStatus -eq "Enabled")

Правила подобного вида позволяют сгруппировать всех пользователей, для которых включен компонент Microsoft 365 (или другая служба Microsoft Online Service). После этого вы сможете применить к этой группе набор политик.

Пример 2

Следующее выражение выбирает всех пользователей, которым назначен любой план обслуживания, связанный со службой Intune (это определяется по имени службы "SCO").

user.assignedPlans -any (assignedPlan.service -eq "SCO" -and assignedPlan.capabilityStatus -eq "Enabled")

Пример 3

Следующее выражение позволяет выбрать всех пользователей, которым не назначен план обслуживания:

user.assignedPlans -all (assignedPlan.servicePlanId -eq "")

Использование синтаксической конструкции с символом подчеркивания (_)

Символ подчеркивания (_) позволяет сопоставить вхождения определенного значения одного из свойств в коллекции многозначных строк, чтобы добавить пользователей или устройства в динамическую группу. Он используется в сочетании с оператором -any или -all.

Ниже приведен пример использования символа подчеркивания (_) в правиле для добавления участников в зависимости от значения user.proxyAddress (это правило также подходит для свойства user.otherMails). Это правило добавляет в группу любого пользователя, адрес прокси-сервера которого содержит "contoso".

(user.proxyAddresses -any (_ -contains "contoso"))

Другие свойства и типичные примеры правил

Создание правила "Непосредственные подчиненные"

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

Правило "Непосредственные подчиненные" создается с помощью следующего синтаксиса:

Direct Reports for "{objectID_of_manager}"

Вот пример допустимого правила, в котором объект руководителя имеет идентификатор "62e19b97-8b3d-4d4a-a106-4ce66896a863":

Direct Reports for "62e19b97-8b3d-4d4a-a106-4ce66896a863"

Следующие советы помогут вам правильно использовать правило.

  • Идентификатор менеджера содержит идентификатор объекта руководителя. Его можно найти в параметрах профиля руководителя.
  • Чтобы такое правило работало, следует правильно заполнить свойство Manager для пользователей вашей организации. Вы можете проверить текущее значение в профиле пользователя.
  • Это правило находит только непосредственных подчиненных руководителя. Другими словами, вы не сможете создать группу, включающую прямых подчиненных руководителя и их подчиненных.
  • Это правило нельзя объединять с любыми другими правилами членства.

Создание правила "Все пользователи"

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

Правило "Все пользователи" создается с помощью одного выражения с оператором -ne и значением null. Это правило добавляет в группу гостевых пользователей B2B, а также пользователей-участников.

user.objectId -ne null

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

(user.objectId -ne null) -and (user.userType -eq "Member")

Создание правила "Все устройства"

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

Правило "Все устройства" создается с помощью одного выражения с оператором -ne и значением null.

device.objectId -ne null

Свойства расширения и пользовательские свойства расширения

В правилах динамического членства поддерживаются атрибуты расширения и пользовательские свойства расширения в виде строковых свойств. Атрибуты расширения синхронизируются из локального каталога Windows Server Active Directory и принимают формат ExtensionAttributeX, где X равно 1–15. Вот пример правила, которое использует в качестве свойства атрибут расширения:

(user.extensionAttribute15 -eq "Marketing")

Пользовательские свойства расширения синхронизируются из локальной службы Windows Server Active Directory или из подключенного приложения SaaS и имеют формат user.extension_[GUID]_[Attribute], где:

  • [GUID] — уникальный идентификатор Azure AD для приложения, которое создало это свойство в Azure AD;
  • [Attribute] — имя свойства, с которым оно было создано.

Пример правила, которое использует пользовательское свойство расширения:

user.extension_c272a57b722d4eb29bfe327874ae79cb_OfficeNumber -eq "123"

Имя пользовательского свойства можно найти в каталоге, запросив свойство пользователя из обозревателя графов и выполнив поиск по имени свойства. Также теперь вы сможете при создании динамического правила членства перейти по ссылке Get custom extension properties (Получить пользовательские свойства расширения) из конструктора динамических правил для пользовательских групп, ввести уникальный идентификатор приложения и получить полный список пользовательских свойств расширения. Этот список можно обновить, чтобы просмотреть новые пользовательские свойства расширения для выбранного приложения. Атрибуты расширения и пользовательские свойства расширения должны быть получены из приложений в клиенте.

Дополнительные сведения см. в разделе Использование атрибутов в динамических группах в статье Синхронизация Azure AD Connect: расширения каталогов.

Правила для устройств

Можно также создать правило, которое выбирает объекты устройств для членства в группе. Членами одной группы не могут являться одновременно пользователи и устройства.

Примечание

Атрибут organizationalUnit больше не доступен в списке, и его не следует использовать. Эту строку Intune задает в определенных случаях, но она не распознается службой Azure AD. Поэтому устройства не будут добавляться в группы на основе этого атрибута.

Примечание

systemlabels — это доступный только для чтения атрибут, который невозможно настроить с помощью Intune.

Для Windows 10 правильный формат атрибута deviceOSVersion имеет следующий вид: (device.deviceOSVersion -startsWith "10.0.1"). Это форматирование можно проверить с помощью командлета Get-MsolDevice PowerShell.

Можно использовать следующие атрибуты устройства.

Атрибут устройства Значения Пример
AccountEnabled true, false device.accountEnabled -eq true
deviceCategory Допустимое имя категории устройств. device.deviceCategory -eq "BYOD"
deviceId Допустимый идентификатор устройства Azure AD. device.deviceId -eq "d4fe7726-5966-431c-b3b8-cddc8fdb717d"
deviceManagementAppId Допустимый идентификатор приложения MDM в Azure AD device.deviceManagementAppId -eq "0000000a-0000-0000-c000-000000000000" для идентификатора приложения Intune MDM
deviceManufacturer Любое строковое значение device.deviceManufacturer -eq "Samsung"
deviceModel Любое строковое значение device.deviceModel -eq "iPad Air"
displayName Любое строковое значение device.displayName -eq "Rob iPhone"
deviceOSType Любое строковое значение (device.deviceOSType -eq "iPad") -or (device.deviceOSType -eq "iPhone")
device.deviceOSType -contains "AndroidEnterprise"
device.deviceOSType -eq "AndroidForWork"
device.deviceOSType -eq "Windows"
deviceOSVersion Любое строковое значение device.deviceOSVersion -eq "9.1"
device.deviceOSVersion -startsWith "10.0.1"
deviceOwnership Personal, Company, Unknown device.deviceOwnership -eq "Company"
devicePhysicalIds любое строковое значение, используемое Autopilot, такое как все устройства Autopilot, OrderID или PurchaseOrderID device.devicePhysicalIDs -any _ -contains "[ZTDId]"
(device.devicePhysicalIds -any _ -eq "[OrderID]:179887111881"
(device.devicePhysicalIds -any _ -eq "[PurchaseOrderId]:76222342342"
deviceTrustType AzureAD, ServerAD, Workplace device.deviceOwnership -eq "AzureAD"
enrollmentProfileName Имя профиля регистрации устройства Apple, имя профиля регистрации выделенного корпоративного устройства с ОС "Android для бизнеса" или имя профиля Windows Autopilot. device.enrollmentProfileName -eq "DEP iPhones"
extensionAttribute1 Любое строковое значение device.extensionAttribute1 -eq "строковое значение"
extensionAttribute2 Любое строковое значение device.extensionAttribute2 -eq "строковое значение"
extensionAttribute3 Любое строковое значение device.extensionAttribute3 -eq "строковое значение"
extensionAttribute4 Любое строковое значение device.extensionAttribute4 -eq "строковое значение"
extensionAttribute5 Любое строковое значение device.extensionAttribute5 -eq "строковое значение"
extensionAttribute6 Любое строковое значение device.extensionAttribute6 -eq "строковое значение"
extensionAttribute7 Любое строковое значение device.extensionAttribute7 -eq "строковое значение"
extensionAttribute8 Любое строковое значение device.extensionAttribute8 -eq "строковое значение"
extensionAttribute9 Любое строковое значение device.extensionAttribute9 -eq "строковое значение"
extensionAttribute10 Любое строковое значение device.extensionAttribute10 -eq "строковое значение"
extensionAttribute11 Любое строковое значение device.extensionAttribute11 -eq "строковое значение"
extensionAttribute12 Любое строковое значение device.extensionAttribute12 -eq "строковое значение"
extensionAttribute13 Любое строковое значение device.extensionAttribute13 -eq "строковое значение"
extensionAttribute14 Любое строковое значение device.extensionAttribute14 -eq "строковое значение"
extensionAttribute15 Любое строковое значение device.extensionAttribute15 -eq "строковое значение"
isRooted true, false device.isRooted -eq true
managementType MDM (для мобильных устройств). device.managementType -eq "MDM"
memberOf Любое строковое значение (допустимый идентификатор объекта группы) device.memberof -any (group.objectId -in ['value'])
objectId Допустимый идентификатор объекта Azure AD. device.objectId -eq "76ad43c9-32c5-45e8-a272-7b58b58f596d"
profileType Допустимый тип профиля в Azure AD device.profileType -eq "RegisteredDevice"
systemLabels Любая строка, соответствующая свойству устройства Intune, для добавления тегов устройств в Modern Workplace. device.systemLabels -contains "M365Managed"

Примечание

При использовании deviceOwnership для создания динамических групп для устройств необходимо установить значение "Company". В Intune вместо этого используется тип владения устройства "Корпоративное". Дополнительные сведения см. в разделе Типы владельцев. При использовании deviceTrustType для создания динамических групп для устройств необходимо установить значение AzureAD, чтобы представить устройства, присоединенные к Azure AD, значение ServerAD, чтобы представить гибридные устройства, присоединенные к Azure AD, или значение Workplace, чтобы представить устройства, зарегистрированные в Azure AD. При использовании extensionAttribute1-15 для создания динамических групп для устройств необходимо установить значение для extensionAttribute1-15 на устройстве. Узнайте больше, как записать extensionAttributes в объекте устройства Azure AD.

Дальнейшие действия

В следующих статьях содержатся дополнительные сведения о группах в Azure Active Directory.