Microsoft Entra ID では、グループのメンバーシップを静的から動的 (またはその逆) に変更できます。 Microsoft Entra ID は、システム内で同じグループ名と ID を維持するため、グループに対するすべての既存の参照は、引き続き有効です。 代わりに新しいグループを作成する場合は、それらの参照を更新する必要があります。
動的メンバーシップ グループを作成すると、ユーザーの追加と削除の管理オーバーヘッドがなくなります。 この記事では、Azure portal または PowerShell コマンドレットを使用して、既存のメンバーシップ グループを静的から動的に変換する方法について説明します。 Microsoft Entra では、1 つのテナントに最大 15,000 個の動的メンバーシップ グループを含めることができます。
注
静的グループを動的メンバーシップ グループに変換すると、メンバーシップ ルールを満たす既存のメンバーが残ります。 条件を満たさないメンバーは削除されます。 メンバーシップ ルールを満たす他のユーザーは自動的に追加されます。 グループを使用してアプリまたはリソースへのアクセスを制御すると、メンバーシップ ルールが完全に処理されるまで、元のメンバーがアクセスできなくなる可能性があります。
グループの新しいメンバーシップが予期したとおりのものになるように、事前に新しいメンバーシップ ルールをテストすることをお勧めします。 テスト中にエラーが発生した場合は、「グループ ライセンスの問題を解決する」をご覧ください。
[前提条件]
ポータルを使用してメンバーシップの種類を変更するには、少なくとも グループ管理者 ロールを持つアカウントが必要です。
PowerShell を使用して動的グループのプロパティを変更するには、Microsoft Graph PowerShell モジュールのコマンドレットを使用する必要があります。 詳細については、「Microsoft Graph PowerShell SDKをインストールする」を参照してください。
グループのメンバーシップの種類を変更する (ポータル)
Microsoft Entra 管理センターに、少なくともグループ管理者としてサインインします。
[Microsoft Entra ID] を選びます。
[グループ] を選びます。
[ すべてのグループ ] 一覧で、変更するグループを開きます。
[プロパティ] を選択します。
グループの [プロパティ ] ページで、目的の メンバーシップの種類 に応じて、 割り当て済み (静的)、 動的ユーザー、または 動的デバイスのメンバーシップの種類の値を選択します。 動的メンバーシップ グループの場合は、ルール ビルダーを使用して簡単なルールのオプションを選択したり、メンバーシップ ルールを自分で作成したりすることができます。
次の手順は、ユーザーのグループを静的メンバーシップ グループから動的メンバーシップ グループに変更する例です。
[ メンバーシップの種類] で、[ 動的ユーザー] を選択します。 動的メンバーシップ グループの変更を説明するダイアログで、[ はい ] を選択して続行します。
[動的クエリの追加] を選び、ルールを指定します。
ルールを作成したら、[クエリの 追加] を選択します。
グループの [プロパティ ] ページで、[ 保存] を選択して変更を保存します。 グループの一覧でグループの [メンバーシップの種類] がすぐに更新されます。
ヒント
入力したメンバーシップ ルールが正しくない場合、グループ変換が失敗する可能性があります。 ポータルの右上隅に、ルールを受け入れられない理由が通知で示されます。 それをよく読み、有効にするためにできる調整の方法を理解してください。 規則の構文の例、およびメンバーシップ規則用のサポートされているプロパティ、演算子、値の完全な一覧については、「Microsoft Entra ID で動的メンバーシップ グループの規則を管理する」をご覧ください。
グループのメンバーシップの種類を変更する (PowerShell)
既存のグループのメンバーシップ管理を切り替える関数の例を次に示します。 この例では、動的メンバーシップ グループに関係のない値を保持するために、 GroupTypes
プロパティを正しく操作します。
#The moniker for dynamic membership groups, as used in the GroupTypes property of a group object
$dynamicGroupTypeString = "DynamicMembership"
function ConvertDynamicGroupToStatic
{
Param([string]$groupId)
#Existing group types
[System.Collections.ArrayList]$groupTypes = (Get-MgGroup -GroupId $groupId).GroupTypes
if($groupTypes -eq $null -or !$groupTypes.Contains($dynamicGroupTypeString))
{
throw "This group is already a static group. Aborting conversion.";
}
#Remove the type for dynamic membership groups, but keep the other type values
$groupTypes.Remove($dynamicGroupTypeString)
#Modify the group properties to make it a static group: change GroupTypes to remove the dynamic type, and then pause execution of the current rule
Update-MgGroup -GroupId $groupId -GroupTypes $groupTypes.ToArray() -MembershipRuleProcessingState "Paused"
}
function ConvertStaticGroupToDynamic
{
Param([string]$groupId, [string]$dynamicMembershipRule)
#Existing group types
[System.Collections.ArrayList]$groupTypes = (Get-MgGroup -GroupId $groupId).GroupTypes
if($groupTypes -ne $null -and $groupTypes.Contains($dynamicGroupTypeString))
{
throw "This group is already a dynamic group. Aborting conversion.";
}
#Add the dynamic group type to existing types
$groupTypes.Add($dynamicGroupTypeString)
#Modify the group properties to make it a static group: change GroupTypes to add the dynamic type, start execution of the rule, and then set the rule
Update-MgGroup -GroupId $groupId -GroupTypes $groupTypes.ToArray() -MembershipRuleProcessingState "On" -MembershipRule $dynamicMembershipRule
}
グループを静的にするには、次のコマンドを使用します。
ConvertDynamicGroupToStatic "a58913b2-eee4-44f9-beb2-e381c375058f"
グループを動的にするには、次のコマンドを使用します。
ConvertStaticGroupToDynamic "a58913b2-eee4-44f9-beb2-e381c375058f" "user.displayName -startsWith ""Peter"""