在 Azure Active Directory 中為動態群組建立更簡單且更有效率的規則

Azure Active Directory (Azure AD) (Microsoft Entra 的一部分) 的小組會收到與動態群組相關的事件報告,以及其成員資格規則的處理時間。 本文使用報告的資訊來呈現我們的工程小組協助客戶簡化其成員資格規則最常見的方法。 更簡單且更有效率的規則會導致更好的動態群組處理時間。 為動態群組撰寫成員資格規則時,請遵循這些步驟來確保規則盡可能有效率。

將 MATCH 的使用降到最低

盡可能減少在規則中使用 match 運算子。 請改為探索是否可以使用 containsstartswith-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"

後續步驟