Microsoft Graph でのグループの操作

グループとは、Microsoft サービス内またはアプリ内のリソースへのアクセスを共有しているプリンシパルの集合です。 ユーザー、他のグループ、デバイス、アプリケーションなどのさまざまなプリンシパルをグループに含めることができます。 グループを使用すると、個々のプリンシパルでの作業を回避し、リソースへのアクセスの管理を簡素化できます。

Microsoft Graph は、さまざまな種類のグループとグループ機能を作成および管理するためのグループ API を公開しています。

注:

  1. グループは、職場または学校のアカウントでのみ作成できます。 個人用 Microsoft アカウントはグループをサポートしません。
  2. Microsoft Graph でのすべてのグループ関連の操作には、管理者の同意が必要です。

Microsoft Entra ID と Microsoft Graph のグループの種類

Microsoft Entra ID では、次の種類のグループがサポートされています。

  • Microsoft 365 グループ
  • セキュリティ グループ
  • メールが有効なセキュリティ グループ
  • 配布グループ

注:

Microsoft は Microsoft Graph で管理または取得できない動的配布グループもサポートしています。

Microsoft Graph グループ API を使用して管理できるのは、Microsoft 365 グループとセキュリティ グループのみです。 メールが有効なグループと配布グループは、Microsoft Graph を使用して読み取り専用になります。

Microsoft Graph では、グループの種類は、下の表に示す groupTypemailEnabledsecurityEnabled の各プロパティの設定で特定できます。

種類 groupType mailEnabled securityEnabled グループ API 経由で作成および管理
Microsoft 365 グループ ["Unified"] true true または false はい
セキュリティ グループ [] false true はい
メールが有効なセキュリティ グループ [] true true なし
配布グループ [] true false いいえ

グループの詳細については、以下のセクションを参照してください。 Microsoft Entra ID のグループの詳細については、「Microsoft Entra ID のグループを比較する」を参照してください。

Microsoft 365 グループ

Microsoft 365 グループのパワーは、共同作業の性質にあり、プロジェクトまたはチームで共同作業するユーザーに最適です。 それは、以下を含む、グループのメンバーが共有するリソースとともに作成されます。

  • Outlook 会話
  • Outlook カレンダー
  • SharePoint ファイル
  • OneNote ノートブック
  • SharePoint チーム サイト
  • Planner の計画
  • Intune デバイス管理

次の JSON オブジェクトは、Microsoft Graph グループ API を呼び出したときのグループのサンプル表現を示しています。

HTTP/1.1 201 Created
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#groups/$entity",
    "id": "4c5ee71b-e6a5-4343-9e2c-4244bc7e0938",
    "deletedDateTime": null,
    "classification": "MBI",
    "createdDateTime": "2016-08-23T14:46:56Z",
    "description": "This is a group in Outlook",
    "displayName": "OutlookGroup101",
    "groupTypes": [
        "Unified"
    ],
    "mail": "outlookgroup101@service.microsoft.com",
    "mailEnabled": true,
    "mailNickname": "outlookgroup101",
    "preferredLanguage": null,
    "proxyAddresses": [
        "smtp:outlookgroup101@contoso.com",
        "SMTP:outlookgroup101@service.microsoft.com"
    ],
    "securityEnabled": false,
    "theme": null,
    "visibility": "Public"
}

Microsoft 365 グループと管理者の操作性の詳細については、「Microsoft 365 グループの概要」を参照してください。

Microsoft 365 グループの設定

標準のグループ プロパティの構成とは別に、Microsoft 365 グループに対して次の設定を構成することもできます。

セキュリティ グループとメールが有効なセキュリティ グループ

セキュリティ グループは、リソースへのユーザー アクセスを制御するためのものです。 ユーザーがセキュリティ グループのメンバーであるかどうかを確認することで、そのユーザーがアプリ内のいくつかのセキュア リソースにアクセスしようとしているときに、アプリが承認を判断することができます。 セキュリティ グループには、ユーザー、他のセキュリティ グループ、デバイス、およびサービス プリンシパルをメンバーとして含めることができます。

メールが有効なセキュリティ グループ は、セキュリティ グループと同じ方法で使用されますが、グループ メンバーにメールを送信するために使用できます。 メールが有効なセキュリティ グループは、API を使用して作成または更新することはできません。代わりに、読み取り専用です。 詳細については、「メールが有効なセキュリティ グループの管理」の Exchange 記事を参照してください。

次の JSON オブジェクトは、Microsoft Graph グループ API を呼び出したときのグループのサンプル表現を示しています。

HTTP/1.1 201 Created
Content-type: application/json

{
    "@odata.type": "#microsoft.graph.group",
    "id": "f87faa71-57a8-4c14-91f0-517f54645106",
    "deletedDateTime": null,
    "classification": null,
    "createdDateTime": "2016-07-20T09:21:23Z",
    "description": "This group is a Security Group",
    "displayName": "SecurityGroup101",
    "groupTypes": [],
    "mail": null,
    "mailEnabled": false,
    "mailNickname": "",
    "preferredLanguage": null,
    "proxyAddresses": [],
    "securityEnabled": true
}

グループ メンバーシップ

グループへのメンバーシップは、静的または動的に割り当てることができます。 すべてのオブジェクトの種類が、Microsoft 365 グループとセキュリティ グループの両方のメンバーになることができるわけではありません。

次の表に、セキュリティ グループまたは Microsoft 365 グループのいずれかに追加できるメンバーの種類を示します。

オブジェクトの種類 セキュリティ グループのメンバー Microsoft 365 グループのメンバー
User グループ メンバーにできます グループ メンバーにできます
セキュリティ グループ グループ メンバーにできます グループ メンバーにできません
Microsoft 365 グループ グループ メンバーにできません グループ メンバーにできません
デバイス グループ メンバーにできます グループ メンバーにできません
サービス プリンシパル グループ メンバーにできます グループ メンバーにできません
組織の連絡先 グループ メンバーにできます グループ メンバーにできません

動的メンバーシップ

Microsoft 365 グループとセキュリティ グループでは、プリンシパルのプロパティに基づいてグループから自動的にメンバーを追加または削除する動的メンバーシップ ルールを設定できます。 たとえば、「マーケティング従業員」グループは、部署プロパティが「マーケティング」に設定されているユーザーのみがグループのメンバーになれるというダイナミック メンバーシップ ルールを定義できます。 この場合、部署を離れるユーザーはグループから自動的に削除されます。

ダイナミック メンバーシップ グループのメンバーとしてサポートされるのは、ユーザーとデバイスだけです。 ダイナミック メンバーシップ グループはデバイスまたはユーザーに対して作成できますが、両方を作成することはできません。

ダイナミック メンバーシップ ルールは、グループの作成時に membershipRule プロパティを使用して指定されます。 ある式は、次の構文に従います: Property Operator Value

  • Property は、次の構文に従って定義されます: object.property user.departmentdevice.accountEnabled などになります。
  • ルール構文では、さまざまな演算子がサポートされています。 詳細については、「サポートされている式の演算子」を参照してください。
  • String 型の Value は二重引用符 (") で囲む必要があります。 二重引用符内で二重引用符を回避するには、円記号を使用する必要があります。 式は二重引用符で囲まれていないため、Microsoft Entra 管理センターでルール ビルダーを使用する場合、この要件は適用されません。

次の例は、完全なルールを示しています。

"membershipRule": "user.department -eq \"Marketing\"".

andor、および not 演算子を使用して、ルール内の複数の式を組み合わせることができます。

groupType プロパティには、コレクションの "DynamicMembership" 値も含める必要があります。 ダイナミック メンバーシップ ルールは、membershipRuleProcessingState プロパティを使用してオンまたはオフにできます。 割り当てられたメンバーシップがあるグループを更新すると、ダイナミック メンバーシップを所有することができます。

次の要求例では、マーケティング部署の従業員のみを含めることができる新しい Microsoft 365 グループを作成します。

POST https://graph.microsoft.com/beta/groups
Content-type: application/json

{
    "description": "Marketing department folks",
    "displayName": "Marketing department",
    "groupTypes": [
        "Unified",
        "DynamicMembership"
    ],
    "mailEnabled": true,
    "mailNickname": "marketing",
    "securityEnabled": false,
    "membershipRule": "user.department -eq \"Marketing\"",
    "membershipRuleProcessingState": "on"
}

要求は、201 Created 応答コードと、応答本文で新しく作成されたグループ オブジェクトを返します。

注: ここに示す応答オブジェクトは、読みやすさのために短縮されている場合があります。

HTTP/1.1 201 Created
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#groups/$entity",
    "id": "6f7cd676-5445-47c4-9c2b-c47da4671da2",
    "createdDateTime": "2023-01-20T07:00:31Z",
    "description": "Marketing department folks",
    "displayName": "Marketing department",
    "groupTypes": [
        "Unified",
        "DynamicMembership"
    ],
    "mail": "marketing@contoso.com",
    "mailEnabled": true,
    "mailNickname": "marketing",
    "membershipRule": "user.department -eq \"Marketing\"",
    "membershipRuleProcessingState": "On"
}

メンバーシップ ルールの作成の詳細については、「Microsoft Entra ID のダイナミック メンバーシップ ルール」を参照してください。

注:

ダイナミック メンバーシップ ルールでは、テナントは、1 つ以上のダイナミック グループのメンバーである一意のユーザーごとに、少なくとも Microsoft Entra ID P1 ライセンスが必要です。

その他の種類のグループ

Yammer の Microsoft 365 グループは、Yammer への投稿によりユーザーのコラボレーションを容易にするために使用されます。 この種類のグループは、読み取りの要求で返すことができますが、その投稿に API でアクセスすることはできません。 Yammer 投稿とスレッド フィードがグループで有効になると、既定の Microsoft 365 グループ会話が無効になります。 詳細については、「Yammer 開発者向け API ドキュメント」をご覧ください。

組織のゲスト ユーザーに対するユーザーとグループの検索の制限事項

グループの検索機能を使用すると、/groups リソース (https://graph.microsoft.com/beta/groupsなど) に対してクエリを実行して、アプリで組織のディレクトリ内のグループを検索できるようになります。 管理者とメンバーであるユーザーは、どちらもこの機能を使用できますが、ゲスト ユーザーは使用できません。

サインインしているユーザーがゲスト ユーザーの場合、アプリに付与されたアクセス許可に応じて、特定のグループのプロファイルを読み取ることができますが (たとえばhttps://graph.microsoft.com/beta/group/fc06287e-d082-4aab-9d5e-d6fd0ed7c8bc)、複数のリソースを返す可能性のある/groupsリソースに対してクエリを実行することはできません。

適切なアクセス許可があるアプリは、ナビゲーション プロパティ (たとえば/groups/{id}/members) のリンクに従って取得したグループのプロファイルを読み取ることができます。

グループでゲスト ユーザーが実行できる操作の詳細については、「メンバーとゲストの既定のアクセス許可を比較する」を参照してください。

グループベースのライセンス

グループ ベースのライセンス機能を使用して、1 つ以上の製品ライセンスをMicrosoft Entra グループに割り当てることができます。 Microsoft Entra ID では、グループのメンバー全員にライセンスが割り当てられていることを確認します。 グループに参加する新しいメンバー全員に、適切なライセンスが割り当てられます。 グループを脱退するときに、これらのライセンスは削除されます。 この機能は、セキュリティ グループと、securityEnabled プロパティが true に設定されている Microsoft 365 グループでのみ使用できます。 グループベースのライセンスの詳細については、「Microsoft Entra ID のグループベースのライセンスとは」を参照してください。

メイン データ ストアの外部に格納されているプロパティ

グループ リソース データは主にMicrosoft Entra IDに格納されますが、autoSubscribeNewMembersallowExternalSenders などのプロパティの一部は Microsoft Exchange に格納されます。 ほとんどの場合、これらのプロパティは、他のグループ プロパティと同じ [作成] または [更新] 要求本文で指定することはできません。

メイン データ ストアの外部に格納されたプロパティも、変更追跡の一部としてサポートされていません。 したがって、これらのプロパティのいずれかに変更を加えた場合、デルタ クエリ応答にオブジェクトが表示されることはありません。

Microsoft Graph グループ API の一般的なユース ケース

Microsoft Graph を使用すると、グループに対して次の一般的な操作ができます。

ユース ケース REST リソース 関連項目
グループの作成、グループの特性の管理
新しいグループの作成、既存グループの取得、グループでのプロパティの更新、グループの削除を行います。 現在、API を使用して、セキュリティ グループと Outlook 内グループのみを作成できます。 group 新しいグループを作成する
グループを一覧表示する
グループを更新する
グループを削除する
グループ メンバーシップを管理する
グループのメンバーを一覧表示し、メンバーを追加または削除します。 user
group
メンバーを一覧表示する
メンバーを追加する
メンバーを削除する
ユーザーがグループのメンバーであるかどうかを判別し、ユーザーがメンバーであるすべてのグループを取得します。 user
group
servicePrincipal
orgContact
メンバー グループをチェックする
メンバー グループを取得する
グループの所有者を一覧表示し、所有者を追加または削除します。 user
group
所有者を一覧表示する
メンバーを追加する
メンバーを削除する