Microsoft Entra IDで疑似的な入れ子グループを作成する

Facebook にシェア
Pocket

この記事は Microsoft 365 Advent Calendar 2023 12/3の記事です。

Entra IDではセキュリティグループによってライセンスの付与や役割の割り当て、アクセスの制御などを行うことができます。
通常のセキュリティグループが管理者によって手動でメンバーの管理を行うのと対照して、動的セキュリティグループは対象の属性に基づいて自動でメンバーが決まります。
動的セキュリティグループにはEntra P1のライセンスが必要ですが管理工数を低減するために大変有用な機能です。

2023/12/03時点ではまだプレビュー機能ですが、動的セキュリティグループの属性としてMemberOfを用いて入れ子グループを作成する設定について記載します。

入れ子セキュリティグループ

オンプレミスのActiveDirectoryでは入れ子グループがサポートされており、組織階層の表現などで利用されてきました。それをそのままアクセス制御やアドレス帳などに利用している組織は多いと思います。
しかし、Entra IDにおいて入れ子グループはサポートされていません。
(グループのメンバーにグループを所属させることはできますが、親グループから子グループのメンバーを取得することはできません。)

ライセンスやアプリの割り当て、アクセス制御などにおいて「組織全体ではないが、一部の部署等のみに割り当てたい」要件がある場合は多いですが、Entra IDでは入れ子グループをサポートしていないことから専用のグループを作成して別途メンテナンスするような運用も発生します。

ユーザーの部署や役職などの属性が適正にメンテナンスされていれば通常の動的セキュリティグループでも組織の表現はできますが、そうではない場合にMemberOfを用いた動的セキュリティグループが役に立ちます。
Microsoft Learn: Microsoft Entra ID の動的グループのグループ メンバーシップ (プレビュー)

MemberOfを用いた動的セキュリティグループ

動的セキュリティグループでMemberOfを使う際に特別な設定は不要で、メンバーシップのクエリにmemberofを用いることで実現可能です。
ただし、GUIでのプルダウンでの選択はできず手動でクエリを記載する必要があります。

クエリのサンプルは以下のようになります。

user.memberof -any (group.objectId -in ['groupId', 'groupId'])

サンプルとして、StaticGroup01, StaticGroup02を作成し、それぞれにUserを以下の通り所属させました。
StaticGroup01: User01, User02
StaticGroup02: User01, User03

新しくDynamicGroup01を作成し、StaticGroup01/02を指定しました。
メンバーを確認すると User01/02/03 の全員が所属していることを確認できます。

MemberOfを用いた動的セキュリティグループの注意点

まだプレビュー機能であることもあり、MemberOfを用いた動的セキュリティグループにはいくつかの制限があります。
特に孫・ひ孫グループも直接指定する必要があることと、数の制約からオンプレミスの組織階層グループを直接再現することは難しい場合があります。

  • 取得できるのは子グループの直接のメンバーだけで、孫/ひ孫グループのメンバーを取得するためにはそれらのMemberOfも指定する必要がある
  • MemberOfを用いて作れる動的セキュリティグループは最大500個まで
  • 子グループとして指定できるグループは50個まで
  • MemberOfを用いた動的セキュリティグループを子グループに指定することはできない
  • MemberOfは他のルールと同時に利用できない

まとめ

制約の多さから、「オンプレミスの組織階層グループを直接移行したい」という要望には不向きですが、特にEntra Connectを用いたHybrid構成をとっており、引き続きメインのメンテナンスをオンプレミスのActive Directoryで行っている場合に有用だと感じました。

実際のところMicrosoft 365においては入れ子グループがサポートされないことの弊害はあまり感じたことがなかったのですが、オンプレミスのActive Directoryで認証を行っていたエンタープライズアプリが続々とSaaS化し、Entra IDとのSSO/SCIMを行うにあたって重宝する機能だと思っています。

Facebook にシェア
Pocket