導入
Active Directory(AD)、Microsoft 365(M365 / Entra ID)、あるいは Exchange Online をまたぐアカウント管理では、グループ機能を使うことで、複数や特定条件に当てはまるユーザーへの、メール配布・アクセス権の付与が容易になります。しかし、グループの種類や作成する場所によってできることが分かれており、オブジェクトを操作するためのツールや追加できるメンバーも制限されます。
この記事では、「ハイブリッド環境」におけるグループの分類をまとめ、使い分けや作成方法の注意点を整理します。
環境
この記事で扱うのは、オンプレミスと M365 を併用・同期しているハイブリッド運用環境です。
- ディレクトリ:オンプレミス AD と Entra ID の両方を扱う
- メール関連:オンプレミス側の Exchange 管理ツール と Exchange Online の両方を扱う
- 同期:AD に作成したオブジェクトは、Microsoft Entra Connect 等の同期を経て Entra ID / Exchange Online に反映される
利用ツール
-
AD操作:PowerShell (
ActiveDirectoryモジュール) - Exchange管理ツール:オンプレミス Exchange サーバー操作(PowerShell)
- Entra ID操作:Microsoft Graph API v1.0 (API)
- Exchange Online操作:Exchange Online PowerShell(リモート接続)
※以降、Entra ID 操作のパスについては API v1.0 のパス:https://graph.microsoft.com/v1.0 を省略します。
グループの分類一覧
まず、ハイブリッド環境において利用可能なグループの一覧を示します。
| 分類 | グループ種別 | メールあり | セキュリティ | 動的 | 主な作成場所 | 主な用途 | 備考 |
|---|---|---|---|---|---|---|---|
| 配布グループ | Distribution | ○ | × | × | AD / Exchange Online | メール配信 | いわゆる通常のメーリングリスト |
| 動的配布グループ | Distribution | ○ | × | ○ | Exchange Online | 条件ベースのメール配信 | メンバーを固定保持せず、部門・属性などの条件で展開 |
| メールなしセキュリティグループ | Security | × | ○ | × | AD / Entra ID | アクセス権管理 | ファイルサーバー、SharePoint、アプリ権限などに利用 |
| 動的メールなしセキュリティグループ | Security | × | ○ | ○ | Entra ID | 条件ベースのアクセス権管理 | 部門・属性などの条件による権限管理で利用 |
| メール有効セキュリティグループ | Security | ○ | ○ | × | AD / Exchange Online | メール配信+アクセス権管理 | メールを送れるし、アクセス権(ACLやロール等)管理に使える |
| Microsoft 365 グループ | Unified | ○ | ○相当 | × | Entra ID | Teams / SharePoint / Planner / グループメール | 単なる配布リストではなく、コラボレーション用グループ |
| 動的 Microsoft 365 グループ | Unified | ○ | ○相当 | ○ | Entra ID | 動的なTeams・SharePoint・M365グループ管理 | Entra IDの動的メンバーシップルールで管理 |
- メールアドレスあり:メールアドレスを持ち、配信可能(メーリングリストとして動作)
- セキュリティ:オンプレのアクセス制御リスト(ACL)設定や、クラウド側のロール付与・アプリ割り当てに利用可能
- 動的:ユーザー属性(部門・役職など)で自動メンバー管理(手動設定不可)
管理系統の補足
- 動的グループ(Dynamic)は、M365(クラウド)側でのみ作成・処理可能です。オンプレミス AD 上で動的グループの作成はできません
- 「Microsoft 365 グループ」および「メールなしセキュリティグループ」(M365 側)は Entra ID がマスターとなるため、Microsoft Graph API で管理します
- M365 グループは Teams や SharePoint から自動作成されることもあります
- M365グループ以外の「メール有効グループ」は、 Exchange Online(またはオンプレミス Exchange)側で管理されます
-
動的配布グループ以外であれば、すべてのグループにおいて Microsoft Graph API を経由した情報の取得(
GET /groups)は可能です(AD オンプレミスのグループについてはEntra Connectなどによる同期反映後)
追加できるメンバー・グループ
| 種類 | 参加可能なユーザー/オブジェクト | メンバーにできるグループ種類 | 補足 |
|---|---|---|---|
| 配布グループ(AD) | AD ユーザー、連絡先等 | AD グループ。ただしスコープ規則に従う | メール配信用なので、メールが有効なオブジェクトを入れるのが前提 |
| 配布グループ(M365 / Exchange Online) | M365 上に存在する ユーザー、メールボックス等 | M365 上に存在するグループ | メール配信用なので、メールが有効なオブジェクトを入れるのが前提 |
| メールなしセキュリティグループ(AD) | ADユーザー、コンピューター等 | AD グループ。ただしスコープ規則に従う | セキュリティ情報を持つオブジェクト(セキュリティプリンシパル)を入れるのが前提 |
| メールなしセキュリティグループ(M365 / Entra) | M365 上に存在する ユーザー、デバイス、サービスプリンシパル等 | Microsoft 365 グループ、動的配布グループを除く M365 上に存在するグループ | セキュリティ情報を持つオブジェクト(セキュリティプリンシパル)を入れるのが前提 |
| メール有効セキュリティグループ(AD) | ADユーザー、連絡先、コンピューター等 | AD グループ。ただしスコープ規則に従う | メール配信対象として効果があるのはメール有効なオブジェクト、権限効果があるのはセキュリティプリンシパル |
| メール有効セキュリティグループ(M365 / Exchange Online) | M365 上に存在する ユーザー、メールボックス等 | M365 上に存在するグループ | 権限効果があるのはセキュリティプリンシパルのみ |
| Microsoft 365 グループ | ユーザーオブジェクト(ゲストユーザー含む) | - | グループはネストできない |
- グループに「参加させることができる」と「参加させる意味がある」は別
- 配布グループにメールアドレスを持たないオブジェクトを参加させること自体は可能だが、配信対象にはならないため、参加させる意味はない
- 同様に、セキュリティグループにセキュリティ情報(SID)を持たないオブジェクトを参加させること自体は可能だが、アクセス管理の対象とはならないため、参加させる意味はない
スコープ管理
| グループタイプ | AD / M365 | 設定可能なスコープ |
|---|---|---|
| 配布グループ | AD, M365 | ユニバーサル |
| メールなしセキュリティグループ | AD | ドメインローカル グローバル ユニバーサル |
| メールなしセキュリティグループ | M365 | ユニバーサル |
| メール有効セキュリティグループ | AD, M365 | ユニバーサル |
- Exchange が絡む(メールあり)グループは、スコープ「ユニバーサル(Universal)」以外許されない
- AD オブジェクトとして、メール有効なユニバーサルでないグループを作成しても
Enable-DistributionGroupが成功しない
- AD オブジェクトとして、メール有効なユニバーサルでないグループを作成しても
- M365 上で作成したグループはユニバーサルスコープのみ(設定項目がない)
- 実質、オンプレミス AD の「メールなしセキュリティグループ」でのみ、グローバルやドメインローカルを使い分ける
グループの作成・メンバー追加操作
配布グループ
AD配布グループ
オンプレミス Exchange 管理ツール(または管理シェル)を使用して作成します。これにより、ADのOU内にグループオブジェクトが生成され、同時に Exchange 属性(メールアドレス等)がマージされて自動作成されます。
New-DistributionGroup `
-Name "name" `
-DisplayName "表示名" `
-Alias "alias" `
-PrimarySmtpAddress "mail@example.com" `
-SamAccountName "sam_account_name" `
-OrganizationalUnit "OU=Groups,DC=...,DC=..."
PowerShell の接続先に注意
M365 配布グループを作成するコマンドも New-DistributionGroup であるため、現在実行している PowerShell セッションがどちらに接続されているか(オンプレ or クラウド)には注意しておく必要があります。
AD オンプレグループを作成したい場合は必ず Exchange 管理ツールで流すようにします。
コマンドの混同を避けたい場合は、先に New-ADGroup でグループオブジェクトを作成した後に、Exchange 管理ツールの Enable-DistributionGroup を使ってメール機能を有効化する、という2ステップの手法をとっても問題ありません。
メンバー追加
AD上のグループに対するメンバーシップの操作は、ActiveDirectory モジュールのコマンドを使用します。
| 操作 | コマンド |
|---|---|
| 追加 | Add-ADGroupMember |
| 削除 | Remove-ADGroupMember |
M365 配布グループ
オンプレミスに作成しない、クラウド専用の配布用メーリングリストです。Exchange Online PowerShell に接続して作成します。
New-DistributionGroup `
-Name "name" `
-DisplayName "表示名" `
-Alias "alias" `
-PrimarySmtpAddress "mail@example.com"
メンバー追加
Exchange Online上の配布グループのメンバーシップ操作には、専用のコマンドを使用します。AD用コマンドとは異なり、メンバーの「総入れ替え(完全上書き)」をサポートするコマンドが存在します。
| 操作 | コマンド |
|---|---|
| 追加 | Add-DistributionGroupMember |
| 削除 | Remove-DistributionGroupMember |
| 入れ替え | Update-DistributionGroupMember |
動的配布グループ
Exchange Online 側でのみ作成可能です。メンバーの固定リストを持たず、コマンド実行時に指定する「フィルター条件」に合致するユーザー(メールボックス)へリアルタイムにメールを配信します。
メンバー追加条件は -RecipientFilter を使ったカスタムフィルターのほか、-IncludedRecipients, -ConditionalDepartment などを使った定型フィルターで指定可能です。
New-DynamicDistributionGroup `
-Name "name" `
-DisplayName "表示名" `
-Alias "alias" `
-PrimarySmtpAddress "mail@example.com" `
-RecipientFilter "(RecipientTypeDetails -eq 'UserMailbox') -and (Department -eq '部署')"
メールなしセキュリティグループ
AD セキュリティグループ
配布グループと違い、-GroupCategory Security を指定して ActiveDirectory 上にグループを直接作成します。メール用のパラメータは指定しません。
スコープ(-GroupScope)は用途に応じて Global / DomainLocal / Universal のいずれかを選択します。
New-ADGroup `
-Name "name" `
-SamAccountName "sam_account_name" `
-DisplayName "表示名" `
-GroupCategory Security `
-GroupScope Global `
-Path "OU=Groups,DC=...,DC=..."
メール用の属性( proxyAddresses など)を設定してしまうと、メール有効化していなくても、同期後、M365上でメール有効なセキュリティグループと判定されることがあります。
メンバー追加・削除の操作は、AD配布グループと同様に Add-ADGroupMember / Remove-ADGroupMember を使用します。
M365 セキュリティグループ
Microsoft Graph API の POST /groups を使って、Entra ID 上に直接作成します。
{
"displayName": "表示名",
"mailEnabled": false,
"mailNickname": "alias",
"securityEnabled": true,
"groupTypes": []
}
メンバー追加
個別に追加する場合は、POST /groups/{id}/members/$ref でメンバーを追加します。
{
"@odata.id":"https://graph.microsoft.com/v1.0/directoryObjects/{user-id}"
}
まとめてメンバーを追加(差分追加・マージ)する場合は、PATCH /groups/{id} を使用します。
{
"members@odata.bind": [
"https://graph.microsoft.com/v1.0/directoryObjects/{user-id-1}",
"https://graph.microsoft.com/v1.0/directoryObjects/{user-id-2}",
"https://graph.microsoft.com/v1.0/directoryObjects/{user-id-3}"
]
}
ただし、リスト形式であっても1リクエストにつき20件までしか同時に実行できないというAPI制限があります。これを超える大量のユーザーを一度に追加する場合は、プログラム側で配列を20件ずつに分割してループを回すか、最大20件のリクエストを内包できる $batch を組み立てて処理させる必要があります。
メンバーの削除は、メンバーを1人ずつ削除するしかありません(ここでも $batch を使うことで、最大20件の削除リクエストを1つにまとめることが可能です)。
DELETE /groups/{group-id}/members/{user-id}/$ref
動的メールなしセキュリティグループ
M365メールなしセキュリティグループと同様ですが、POST /groups において groupTypes で DynamicMembership を追加します。自動割り当ての条件は membershipRule で指定します。
{
"displayName": "表示名",
"mailEnabled": false,
"mailNickname": "alias",
"securityEnabled": true,
"groupTypes": [
"DynamicMembership"
],
"membershipRule": "(user.department -eq \"部署\")",
"membershipRuleProcessingState": "On"
}
メール有効セキュリティグループ
AD セキュリティグループ
AD 配布グループと同様に、Exchange 管理ツールから直接作成できます。末尾に -Type Security パラメータを明示的に付与することで、セキュリティグループの属性を持たせます。
New-DistributionGroup `
-Name "name" `
-DisplayName "表示名" `
-Alias "alias" `
-PrimarySmtpAddress "mail@example.com" `
-SamAccountName "sam_account_name" `
-OrganizationalUnit "OU=Groups,DC=...,DC=..." `
-Type Security
こちらも配布グループと同様に、ADグループの作成(New-ADGroup)後、メール有効化(Enable-DistributionGroup)を行う手順でも問題ありません。メンバー追加についても AD 配布グループと同様です。
M365 セキュリティグループ
M365 配布グループと同様に、Exchange Online PowerShell から作成します。メンバー追加の仕様についても同様です。
New-DistributionGroup `
-Name "name" `
-DisplayName "表示名" `
-Alias "alias" `
-PrimarySmtpAddress "alias@example.com" `
-Type Security
Microsoft 365 グループ
Microsoft Graph API で管理します。POST /groups の groupTypes で Unified を宣言することが、M365グループを示す定義となります。
{
"displayName": "表示名",
"mailEnabled": true,
"mailNickname": "alias",
"securityEnabled": false,
"groupTypes": [
"Unified"
],
"visibility": "Private"
}
visibility を Private にしておくと、ユーザーがグループ(または紐づく Teams)へ参加する際に所有者の許可が必要になります。
メンバーの追加・削除のAPI仕様(20件制限や $batch の活用)は、M365メールなしセキュリティグループの記述と共通です。
動的 Microsoft 365 グループ
Microsoft 365 グループの強力なコラボレーション空間(Teams等)のメンバーシップを、ユーザー属性によって全自動管理する構成です。groupTypes に Unified と DynamicMembership の双方を内包させます。
{
"displayName": "表示名",
"mailEnabled": true,
"mailNickname": "alias",
"securityEnabled": false,
"groupTypes": [
"Unified",
"DynamicMembership"
],
"membershipRule": "(user.department -eq \"部署名\")",
"membershipRuleProcessingState": "On",
"visibility": "Private"
}
グループやメールボックスの使い分け
| 要件 | 推奨グループ |
|---|---|
| 単純なメール配信(メーリングリスト)として使いたい | 配布グループ |
| 部署・役職・拠点などの人事情報(属性)で、配信対象を自動メンテナンスしたい | 動的配布グループ |
| メール配信だけでなく、オンプレ権限(ACL)、 M365アプリ・ロールの割り当てにも使い回したい | メール有効セキュリティグループ |
| ACL や M365アプリ・ロールの割り当てだけに使いたい | メールなしセキュリティグループ |
| メールの他に、専用の Teams、SharePoint サイト、Planner をセットで一括提供したい | Microsoft 365グループ |
| 特定の属性のユーザーを、専用の Teams へ自動的に所属・同期させたい | 動的Microsoft 365グループ |
| 社外のメールアドレス(パートナー企業の担当者など)を、組織のアドレス帳(GAL)に表示させたい | メール連絡先 |
| 代表メールを複数人で受信し、共通の「受信箱」をチームで共同管理したい | 共有メールボックス |
まとめ
ハイブリッド環境におけるグループ管理は、単に種類が多いだけでなく、グループの種別や、オブジェクトの作成場所(オンプレ or クラウド)によって、格納できるメンバーの組み合わせや、同じクラウドでも管理する場所(Entra ID, Exchange Online)が完全に分岐するという特性を持っています。
ユーザーのライフサイクル管理と同様に、グループ管理においても「今操作しようとしているグループのマスターはどこか」「何のために使うグループか」を明確にレイヤー分けして設計することが、不整合のないクリーンなディレクトリ運用に繋がります。
また、グループ管理においてはコマンド自体は成功するが、運用上意味がない または 関連する別のコマンドで失敗する 操作が多くあります。
正常に運用するためには、スコープの範囲やセキュリティプリンシパルであるかなど、Active Directory や M365 に対する基礎的な知識が必要となります。