在 Microsoft Entra ID 中为动态组创建更简单且更高效的规则

属于 Microsoft Entra 的 Microsoft Entra ID 团队收到与动态组及其成员身份规则的处理时间相关的事件的报告。 本文使用所报告的信息来呈现我们工程团队帮助客户简化其成员身份规则时使用的最常见方法。 更简单且更有效的规则可以改善动态组的处理时间。 在为动态组编写成员身份规则时,请执行这些步骤来确保规则尽可能有效。

尽量减少使用 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"

后续步骤