Azure Active Directoryで動的グループに対して、よりシンプルで効率的なルールを作成する

Microsoft Entra の一部である Azure Active Directory (Azure AD) のチームは、動的グループに関連する多数のインシデントのレポートとそのメンバーシップ ルールの処理時間を受信します。 この記事では、報告された情報を使用して、エンジニアリング チームがメンバーシップ ルールを簡素化するのに役立つ最も一般的な方法を示します。 よりシンプルで効率的なルールを使用すると、動的グループの処理時間が短縮されます。 動的グループのメンバーシップ ルールを記述する場合は、次の手順を実行して、ルールが可能な限り効率的になるようにします。

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 演算子を使用して 1 つの条件にグループ化し、ルールの評価を簡単にします。 例えば、次のようなルールを使用する代わりに:

(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 演算子を使用して 1 つの条件にグループ化し、ルールの理解と評価を簡単にします。 例えば、次のようなルールを使用する代わりに:

  • (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"

次の手順