はじめに
Microsoft 365 Groups (Microsoft Entra Groups)では、大きく分けて次の2種類のグループを管理することができます。
- Microsoft 365 グループ
- セキュリティグループ
ここからさらに、動的グループやメールが有効なセキュリティグループなどのメンバーシップの種類を指定することが可能ですね。
今回はこれらのグループをPower Automateで操作する方法をまとめようと思います。
Microsoft 365 グループ
組織内のグループを一覧表示する
組織内のグループの一覧は「Office 365 グループ」コネクタの「グループの一覧」アクションで取得することが可能です。
しかしこのアクションではMicrosoft 365 グループだけでなく、セキュリティグループも取得されてしまうので、「行のフィルター」にてフィルター処理を行う必要があります。
セキュリティグループであるか否かは "securityEnabled" と "groupTypes" プロパティで判断可能です。
"securityEnabled" が true
の場合はセキュリティグループであり、 "groupTypes" に "Unified" が含まれているものが、Microsoft 365 グループとなります。
行のフィルター
securityEnabled eq false and groupTypes/any(g: g eq 'Unified')
自身が所属または所有しているグループの一覧表示
自身が所属または所有しているMicrosoft 365 グループの一覧は「Office 365 グループ」コネクタの「自分が所有および所属しているグループの一覧」アクションで取得することが可能です。
こちらのアクションではMicrosoft 365 グループのみを取得しているのでフィルタ処理などは必要ありません。
自身が所有しているグループの一覧表示
自身が所有しているMicrosoft 365 グループの一覧は「Office 365 グループ」コネクタの「自分が所有しているグループの一覧表示」アクションまたは「自分が所有しているグループの一覧表示 (V2)」で取得することが可能です。
これらのアクションの違いはドキュメントだとわかりにくいですが、 "owners" の取得有無となるかと思います。
これらのアクションはセキュリティグループも取得するようなので、Microsoft 365 グループに絞るのであれば、後続のアクションでフィルタ処理を行う必要があります。
このアクションでは配布リストは取得できないようなので、フィルタ条件はこれだけでいいはずです。
自身が所属しているグループの一覧表示
自身が所属しているMicrosoft 365 グループの取得は現在提供されていないのでGraph APIを実行して作成を行います。
ただし、標準コネクタでこちらのセグメントが許可されているHTTP要求アクションは現在提供、されていないため、「HTTP with Microsoft Entra ID (事前承認)」アクションの「HTTP 要求を呼び出します」アクションを利用します。
方法
GET
要求の URL
https://graph.microsoft.com/v1.0/me/memberOf?$filter=groupTypes/any(c:c+eq+'Unified')&$count=true
ヘッダー
{ "ConsistencyLevel": "eventual" }
グループメンバーの一覧取得
自身が所属または所有しているMicrosoft 365 グループの一覧は「Office 365 グループ」コネクタの「グループ メンバーの一覧表示」アクションで取得することが可能です。
グループの作成
グループの作成アクションは現状提供されていないのでGraph APIを実行して作成を行います。
「Office 365 グループ」コネクタの「HTTP 要求 V2 を送信する」アクションを利用してGraph APIを実行します。
https://graph.microsoft.com/v1.0/groups
メソッド
POST
本文
{ "description": "[description]", "displayName": "[displayName]", "groupTypes": [ "Unified" ], "mailEnabled": true, "mailNickname": "[mailNickname]", "securityEnabled": false }
所有者にはこのAPIを実行した人が設定されます。
所有者やメンバーを指定したい場合は「本文」(Body)を以下のように修正します。
{ "description": "[description]", "displayName": "[displayName]", "groupTypes": [ "Unified" ], "mailEnabled": true, "mailNickname": "[mailNickname]", "securityEnabled": false, "owners@odata.bind": [ "https://graph.microsoft.com/v1.0/users/[user-id]" ], "members@odata.bind": [ "https://graph.microsoft.com/v1.0/users/[user-id]", "https://graph.microsoft.com/v1.0/users/[user-id]" ] }
メンバーを追加する
Microsoft 365 グループへのメンバーの追加は「Office 365 グループ」コネクタの「グループへのメンバーの追加」アクションで実行することが可能です。
ただしこのアクションでは1人ずつしかメンバーを追加することができません。
複数メンバーを追加したい場合はGraph APIを実行します。
https://graph.microsoft.com/v1.0/groups/{group-id}
メソッド
PATCH
本文
{ "members@odata.bind": [ "https://graph.microsoft.com/v1.0/directoryObjects/{id}", "https://graph.microsoft.com/v1.0/directoryObjects/{id}", "https://graph.microsoft.com/v1.0/directoryObjects/{id}" ] }
所有者の追加
所有者の追加アクションは現状提供されていないのでGraph APIを実行して作成を行います。
https://graph.microsoft.com/v1.0/groups/{id}/owners/$ref
メソッド
POST
本文
{ "@odata.id": "https://graph.microsoft.com/v1.0/users/{id}" }
Graph APIでは複数所有者の追加はできないっぽいです。
メンバーの削除
Microsoft 365 グループからのメンバーの削除は「Office 365 グループ」コネクタの「グループからメンバーを削除」アクションで実行することが可能です。
ただしこのアクションでは1人ずつしかメンバーを削除することができません。
Graph APIでも複数メンバーの削除はできないっぽいです。
所有者の削除
所有者の削除アクションは現状提供されていないのでGraph APIを実行して削除を行います。
https://graph.microsoft.com/v1.0/groups/{id}/owners/{id}/$ref
メソッド
DELETE
グループの削除
グループの削除アクションは現状提供されていないのでGraph APIを実行して削除を行います。
https://graph.microsoft.com/v1.0/groups/{id}
メソッド
DELETE
セキュリティグループ
組織内のグループを一覧表示する
組織内のグループの一覧は「Office 365 グループ」コネクタの「グループの一覧」アクションで取得することが可能です。
しかしこのアクションではセキュリティグループだけでなく、Microsoft 365 グループも取得されてしまうので、「行のフィルター」にてフィルター処理を行う必要があります。
セキュリティグループであるか否かは "securityEnabled" と "groupTypes" プロパティで判断可能です。
"securityEnabled" が true
の場合はセキュリティグループであり、 "groupTypes" に "Unified" が含まれているものが、Microsoft 365 グループとなります。
行のフィルター
securityEnabled eq true
自身が所属または所有しているグループの一覧表示
自身が所属または所有しているセキュリティグループの一覧は取得することができません。(後述のアクションやGraph API組み合わせれば取得することはできます。)
「Office 365 グループ」コネクタの「自分が所有および所属しているグループの一覧」アクションでは,、Microsoft 365 グループしか取得できないので、セキュリティグループは対象外となります。
自身が所有しているグループの一覧表示
自身が所有しているセキュリティグループの一覧は「Office 365 グループ」コネクタの「自分が所有しているグループの一覧表示」アクションまたは「自分が所有しているグループの一覧表示 (V2)」で取得することが可能です。
これらのアクションの違いはドキュメントだとわかりにくいですが、 "owners" の取得有無となるかと思います。
これらのアクションはMicrosoft 365 グループも取得するようなので、セキュリティグループに絞るのであれば、後続のアクションでフィルタ処理を行う必要があります。
ただしこれで取得できるのはメールが有効でないセキュリティグループだけです。
自身が所属しているグループの一覧表示
自身が所属しているセキュリティグループの取得は現在提供されていないのでGraph APIを実行して作成を行います。
ただし、標準コネクタでこちらのセグメントが許可されているHTTP要求アクションは現在提供、されていないため、「HTTP with Microsoft Entra ID (事前承認)」アクションの「HTTP 要求を呼び出します」アクションを利用します。
方法
GET
要求の URL
https://graph.microsoft.com/v1.0/me/memberOf?$filter=securityEnabled eq true&$count=true
ヘッダー
{ "ConsistencyLevel": "eventual" }
グループメンバーの一覧取得
自身が所属または所有しているセキュリティグループの一覧は「Office 365 グループ」コネクタの「グループ メンバーの一覧表示」アクションで取得することが可能です。
一覧ではセキュリティグループは表示されませんが、「グループ ID」にオブジェクト IDを直接指定すれば取得可能です。
グループの作成
グループの作成アクションは現状提供されていないのでGraph APIを実行して作成を行います。
「Office 365 グループ」コネクタの「HTTP 要求 V2 を送信する」アクションを利用してGraph APIを実行します。
https://graph.microsoft.com/v1.0/groups
メソッド
POST
本文
{ "description": "[description]", "displayName": "[displayName]", "groupTypes": [ ], "mailEnabled": false, "mailNickname": "[mailNickname]", "securityEnabled": true }
"mailEnabled": false
に設定した場合でも、"mailNickname" を設定していてもエラーにはなりません。無視されるだけです。
メールが有効なセキュリティグループはこの方法では作成できません。
/group
リソースではこれらは読み取り専用となっています。
所有者やメンバーを指定したい場合は「本文」(Body)を以下のように修正します。
{ "description": "[description]", "displayName": "[displayName]", "groupTypes": [ ], "mailEnabled": false, "mailNickname": "[mailNickname]", "securityEnabled": true, "owners@odata.bind": [ "https://graph.microsoft.com/v1.0/users/[user-id]" ], "members@odata.bind": [ "https://graph.microsoft.com/v1.0/users/[user-id]", "https://graph.microsoft.com/v1.0/users/[user-id]" ] }
メンバーを追加する
Microsoft 365 グループへのメンバーの追加は「Office 365 グループ」コネクタの「グループへのメンバーの追加」アクションで実行することが可能です。
こちらもグループ IDを直接指定することで実行することが可能です。
ただしこのアクションでは1人ずつしかメンバーを追加することができません。
複数メンバーを追加したい場合はGraph APIを実行します。
https://graph.microsoft.com/v1.0/groups/{group-id}
メソッド
PATCH
本文
{ "members@odata.bind": [ "https://graph.microsoft.com/v1.0/directoryObjects/{id}", "https://graph.microsoft.com/v1.0/directoryObjects/{id}", "https://graph.microsoft.com/v1.0/directoryObjects/{id}" ] }
所有者の追加
所有者の追加アクションは現状提供されていないのでGraph APIを実行して作成を行います。
https://graph.microsoft.com/v1.0/groups/{id}/owners/$ref
メソッド
POST
本文
{ "@odata.id": "https://graph.microsoft.com/v1.0/users/{id}" }
Graph APIでは複数所有者の追加はできないっぽいです。
メンバーの削除
Microsoft 365 グループからのメンバーの削除は「Office 365 グループ」コネクタの「グループからメンバーを削除」アクションで実行することが可能です。
ただしこのアクションでは1人ずつしかメンバーを削除することができません。
Graph APIでも複数メンバーの削除はできないっぽいです。
所有者の削除
所有者の削除アクションは現状提供されていないのでGraph APIを実行して削除を行います。
https://graph.microsoft.com/v1.0/groups/{id}/owners/{id}/$ref
メソッド
DELETE
グループの削除
グループの削除アクションは現状提供されていないのでGraph APIを実行して削除を行います。
https://graph.microsoft.com/v1.0/groups/{id}
メソッド
DELETE
おわりに
メールが有効なセキュリティグループの作成や変更操作を行いたい場合がちょっと面倒ですね。
これらを実行したい場合はExchange用のPowerShellモジュールを実行する必要があるようですので。