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

Microsoft Entra ID 工程团队是 Microsoft Entra 的一部分,负责接收与动态成员资格组及其成员资格规则的处理时间相关的事件报告。 本文介绍了所报告的信息。 本文还讨论了 Microsoft 帮助客户简化动态成员资格组的规则的最常见方法。 更简单且更有效的规则可以改善动态组的处理时间。

在为动态成员资格组编写成员资格规则时,请按照本文中的步骤操作,以确保尽可能高效地创建这些规则。

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

后续步骤