Microsoft Entra IDで静的グループを動的メンバーシップ グループに変更する

概要

Microsoft Entra IDでは、グループのメンバーシップを静的から動的 (またはその逆) に変更できます。 Microsoft Entra IDは同じグループ名と ID をシステムに保持するため、グループへの既存のすべての参照は引き続き有効です。 代わりに新しいグループを作成する場合は、それらの参照を更新する必要があります。

動的メンバーシップ グループを作成すると、ユーザーの追加と削除の管理オーバーヘッドがなくなります。 この記事では、Azure ポータルまたは PowerShell コマンドレットを使用して、既存のメンバーシップ グループを静的から動的に変換する方法について説明します。 Microsoft Entraでは、1 つのテナントに最大 15,000 個の動的メンバーシップ グループを含めることができます。

注

静的グループを動的メンバーシップ グループに変換すると、メンバーシップ ルールを満たす既存のメンバーが残ります。 条件を満たしていないメンバーは削除されます。 メンバーシップ ルールを満たす他のユーザーは自動的に追加されます。 グループを使用してアプリまたはリソースへのアクセスを制御すると、メンバーシップ ルールが完全に処理されるまで、元のメンバーがアクセスできなくなる可能性があります。

新しいメンバーシップ ルールを事前にテストして、グループ内の新しいメンバーシップが想定どおりになっていることを確認します。 テスト中にエラーが発生した場合は、「 グループベースのライセンス エラーの管理」を参照してください。

[前提条件]

  • ポータルを使用してメンバーシップの種類を変更するには、少なくとも グループ管理者 ロールを持つアカウントが必要です。

  • PowerShell を使用して動的グループのプロパティを変更するには、Microsoft Graph PowerShell モジュールのコマンドレットを使用する必要があります。 詳細については、「install the Microsoft Graph PowerShell SDK」を参照してください。

グループのメンバーシップの種類を変更する (ポータル)

  1. Microsoft Entra管理センターに少なくともグループ管理者としてサインインします。

  2. Microsoft Entra ID を選択します。

  3. [グループ] を選びます。

  4. [ すべてのグループ ] 一覧で、変更するグループを開きます。

  5. プロパティを選択します。

  6. グループの [プロパティ ] ページで、目的の メンバーシップの種類 に応じて、 割り当て済み (静的)、 動的ユーザー、または 動的デバイスのメンバーシップの種類の値を選択します。 動的メンバーシップ グループの場合は、ルール ビルダーを使用して簡単なルールのオプションを選択したり、メンバーシップ ルールを自分で作成したりすることができます。

    次の手順は、ユーザーのグループを静的メンバーシップ グループから動的メンバーシップ グループに変更する例です。

    1. [ メンバーシップの種類] で、[ 動的ユーザー] を選択します。 動的メンバーシップ グループの変更を説明するダイアログで、[ はい ] を選択して続行します。

      動的ユーザーのメンバーシップの種類を選択するスクリーンショット。

    2. [動的クエリの追加] を選び、ルールを指定します。

      動的グループのルールを入力するスクリーンショット。

  7. ルールを作成したら、[クエリの 追加] を選択します。

  8. グループの [プロパティ ] ページで、[ 保存] を選択して変更を保存します。 グループの一覧でグループの [メンバーシップの種類] がすぐに更新されます。

ヒント

入力したメンバーシップ ルールが正しくない場合、グループ変換が失敗する可能性があります。 ポータルの右上隅に、ルールを受け入れられない理由が通知で示されます。 それをよく読み、有効にするためにできる調整の方法を理解してください。 ルール構文の例と、メンバーシップ ルールでサポートされているプロパティ、演算子、値の完全な一覧については、「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"""