コルネの進捗や備忘録が記されたなにか

進捗や成果物や備忘録てきななにかを雑に更新していきます。

Power AutomateでMicrosoft Entra Groupsの操作を行う


スポンサードリンク

はじめに

Microsoft 365 Groups (Microsoft Entra Groups)では、大きく分けて次の2種類のグループを管理することができます。

  • Microsoft 365 グループ
  • セキュリティグループ

learn.microsoft.com

ここからさらに、動的グループやメールが有効なセキュリティグループなどのメンバーシップの種類を指定することが可能ですね。

今回はこれらのグループをPower Automateで操作する方法をまとめようと思います。

Microsoft 365 グループ

組織内のグループを一覧表示する

組織内のグループの一覧は「Office 365 グループ」コネクタの「グループの一覧」アクションで取得することが可能です。
しかしこのアクションではMicrosoft 365 グループだけでなく、セキュリティグループも取得されてしまうので、「行のフィルター」にてフィルター処理を行う必要があります。

セキュリティグループであるか否かは "securityEnabled" と "groupTypes" プロパティで判断可能です。

"securityEnabled" が true の場合はセキュリティグループであり、 "groupTypes" に "Unified" が含まれているものが、Microsoft 365 グループとなります。

learn.microsoft.com

行のフィルター

securityEnabled eq false and groupTypes/any(g: g eq 'Unified')

learn.microsoft.com

自身が所属または所有しているグループの一覧表示

自身が所属または所有しているMicrosoft 365 グループの一覧は「Office 365 グループ」コネクタの「自分が所有および所属しているグループの一覧」アクションで取得することが可能です。

こちらのアクションではMicrosoft 365 グループのみを取得しているのでフィルタ処理などは必要ありません。

自身が所有しているグループの一覧表示

自身が所有しているMicrosoft 365 グループの一覧は「Office 365 グループ」コネクタの「自分が所有しているグループの一覧表示」アクションまたは「自分が所有しているグループの一覧表示 (V2)」で取得することが可能です。

これらのアクションの違いはドキュメントだとわかりにくいですが、 "owners" の取得有無となるかと思います。

これらのアクションはセキュリティグループも取得するようなので、Microsoft 365 グループに絞るのであれば、後続のアクションでフィルタ処理を行う必要があります。

このアクションでは配布リストは取得できないようなので、フィルタ条件はこれだけでいいはずです。

自身が所属しているグループの一覧表示

自身が所属しているMicrosoft 365 グループの取得は現在提供されていないのでGraph APIを実行して作成を行います。

learn.microsoft.com

ただし、標準コネクタでこちらのセグメントが許可されている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を実行して作成を行います。

learn.microsoft.com

「Office 365 グループ」コネクタの「HTTP 要求 V2 を送信する」アクションを利用してGraph APIを実行します。

URI

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を実行します。

URI

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}"
    ]
}

learn.microsoft.com

所有者の追加

所有者の追加アクションは現状提供されていないのでGraph APIを実行して作成を行います。

learn.microsoft.com

URI

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でも複数メンバーの削除はできないっぽいです。

learn.microsoft.com

所有者の削除

所有者の削除アクションは現状提供されていないのでGraph APIを実行して削除を行います。

learn.microsoft.com

URI

https://graph.microsoft.com/v1.0/groups/{id}/owners/{id}/$ref

メソッド

DELETE

グループの削除

グループの削除アクションは現状提供されていないのでGraph APIを実行して削除を行います。

learn.microsoft.com

URI

https://graph.microsoft.com/v1.0/groups/{id}

メソッド

DELETE

セキュリティグループ

組織内のグループを一覧表示する

組織内のグループの一覧は「Office 365 グループ」コネクタの「グループの一覧」アクションで取得することが可能です。
しかしこのアクションではセキュリティグループだけでなく、Microsoft 365 グループも取得されてしまうので、「行のフィルター」にてフィルター処理を行う必要があります。

セキュリティグループであるか否かは "securityEnabled" と "groupTypes" プロパティで判断可能です。

"securityEnabled" が true の場合はセキュリティグループであり、 "groupTypes" に "Unified" が含まれているものが、Microsoft 365 グループとなります。

learn.microsoft.com

行のフィルター

securityEnabled eq true

learn.microsoft.com

自身が所属または所有しているグループの一覧表示

自身が所属または所有しているセキュリティグループの一覧は取得することができません。(後述のアクションやGraph API組み合わせれば取得することはできます。)

「Office 365 グループ」コネクタの「自分が所有および所属しているグループの一覧」アクションでは,、Microsoft 365 グループしか取得できないので、セキュリティグループは対象外となります。

自身が所有しているグループの一覧表示

自身が所有しているセキュリティグループの一覧は「Office 365 グループ」コネクタの「自分が所有しているグループの一覧表示」アクションまたは「自分が所有しているグループの一覧表示 (V2)」で取得することが可能です。

これらのアクションの違いはドキュメントだとわかりにくいですが、 "owners" の取得有無となるかと思います。

これらのアクションはMicrosoft 365 グループも取得するようなので、セキュリティグループに絞るのであれば、後続のアクションでフィルタ処理を行う必要があります。

ただしこれで取得できるのはメールが有効でないセキュリティグループだけです。

自身が所属しているグループの一覧表示

自身が所属しているセキュリティグループの取得は現在提供されていないのでGraph APIを実行して作成を行います。

learn.microsoft.com

ただし、標準コネクタでこちらのセグメントが許可されている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を実行して作成を行います。

learn.microsoft.com

「Office 365 グループ」コネクタの「HTTP 要求 V2 を送信する」アクションを利用してGraph APIを実行します。

URI

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を実行します。

URI

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}"
    ]
}

learn.microsoft.com

所有者の追加

所有者の追加アクションは現状提供されていないのでGraph APIを実行して作成を行います。

learn.microsoft.com

URI

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でも複数メンバーの削除はできないっぽいです。

learn.microsoft.com

所有者の削除

所有者の削除アクションは現状提供されていないのでGraph APIを実行して削除を行います。

learn.microsoft.com

URI

https://graph.microsoft.com/v1.0/groups/{id}/owners/{id}/$ref

メソッド

DELETE

グループの削除

グループの削除アクションは現状提供されていないのでGraph APIを実行して削除を行います。

learn.microsoft.com

URI

https://graph.microsoft.com/v1.0/groups/{id}

メソッド

DELETE

おわりに

メールが有効なセキュリティグループの作成や変更操作を行いたい場合がちょっと面倒ですね。
これらを実行したい場合はExchange用のPowerShellモジュールを実行する必要があるようですので。


スポンサードリンク