この記事では、動的メンバーシップ グループのルールを簡略化するために使用できる最も一般的な方法について説明します。 より単純で効率的なルールにより、動的グループの処理時間が短縮されます。
動的メンバーシップ グループのメンバーシップ ルールを作成するときは、この記事のヒントに従って、これらのルールをできるだけ効率的に作成してください。
-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 演算子を使用して、それらを 1 つの条件にグループ化します。 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"