Создание более простых, более эффективных правил для динамических групп в Azure Active Directory

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

Постарайтесь поменьше использовать оператор MATCH

Старайтесь как можно реже использовать оператор match в правилах. Вместо этого посмотри, можно ли использовать операторы contains, startswith или -eq. Рекомендуется использовать другие свойства, позволяющие создавать правила для выбора пользователей, которые должны находиться в группе, без использования оператора -match. Например, если требуется правило для группы для всех пользователей, находящихся в городе Lagos, вместо использования таких правил:

  • user.city -match "ago"
  • user.city -match ".*?ago.*"

Лучше использовать такие правила:

  • user.city -contains "ago"
  • user.city -startswith "Lag"

Или лучше всего:

  • user.city -eq "Lagos"

Используйте меньше операторов OR

В правиле определите, когда оно использует различные значения для одного свойства, связанные с помощью операторов -or. Вместо этого объедините их в один критерий с помощью оператора -in, чтобы упростить оценку правила. Например, вместо такого правила:

(user.department -eq "Accounts" -and user.city -eq "Lagos") -or 
(user.department -eq "Accounts" -and user.city -eq "Ibadan") -or 
(user.department -eq "Accounts" -and user.city -eq "Kaduna") -or 
(user.department -eq "Accounts" -and user.city -eq "Abuja") -or 
(user.department -eq "Accounts" -and user.city -eq "Port Harcourt")

Лучше использовать такое правило:

  • user.department -eq "Accounts" -and user.city -in ["Lagos", "Ibadan", "Kaduna", "Abuja", "Port Harcourt"]

И наоборот, определите схожие дополнительные вложенные критерии с одинаковым свойством, не равным различным значениям, связанным с помощью операторов -and. Затем объедините их в один критерий с помощью оператора -notin, чтобы сделать правило более понятным и упростить его оценку. Например, вместо такого правила:

  • (user.city -ne "Lagos") -and (user.city -ne "Ibadan") -and (user.city -ne "Kaduna") -and (user.city -ne "Abuja") -and (user.city -ne "Port Harcourt")

Лучше использовать следующее правило:

  • user.city -notin ["Lagos", "Ibadan", "Kaduna", "Abuja", "Port Harcourt"]

Избегайте избыточных критериев

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

  • user.city -eq "Lagos" or user.city -startswith "Lag"

Лучше использовать следующее правило:

  • user.city -startswith "Lag"

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