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

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

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

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

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

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

  • user.city -startswith "Lag"

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

  • user.city -eq "Lagos"

Минимизация использования CONTAINS

Аналогично использованию MATCH. Старайтесь как можно реже использовать оператор contains в правилах. Вместо этого изучите, можно ли использовать startswith операторы или -eq операторы. Использование CONTAINS может увеличить время обработки, особенно для клиентов с множеством динамических групп.

Используйте меньше операторов 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"

Следующие шаги