Canvasアプリの面倒なところ、それは共有
Dataverseを利用したモデル駆動型アプリでは、セキュリティロールによる一元的な権限管理が可能です。Microsoft 365グループやセキュリティグループとも連携できるため、アプリとデータへのアクセス制御を効率的に行えます。
一方、Canvasアプリでは、SharePointサイトやTeamsのメンバー管理とアプリの共有設定は連動しません。セキュリティが有効なグループを利用する方法もありますが、多くの環境では、ユーザーをSharePointやTeamsに追加した後、Canvasアプリにも共有するケースが多いのではないかと思います。
「組織内の全員」にアプリを共有することもできますが、利用者を適切に管理するには、SharePointやTeamsのメンバー管理とアプリの共有設定を一致させる運用が望まれます。
そこで活用できるのがPower Automateです。
Microsoft 365グループのメンバーをもとに、Canvasアプリの共有・共有解除を自動化できます。
これにより、SharePointやTeamsのメンバー管理とCanvasアプリの共有設定を同期でき、運用負荷を大幅に軽減できます。
今回は、この仕組みを実現する際に利用した「アクション」を紹介します。
Solution
トリガーを設定
「グループ メンバーが追加または削除されたとき」をトリガーにする方法のほか、定期実行のスケジュールフローとして実装する方法もあります。

Canvasアプリの共有ユーザーを削除する
「アプリ ロールの割り当てを編集する (Edit App Role Assignment)」アクションを利用すると、Canvasアプリの共有ユーザーを追加・削除できます。今回は共有解除の例として、Body/delete を利用します。


今回は共有ユーザーを削除するため、Body/delete を使用します。

| 項目 | 設定値 |
|---|---|
| PowerApp 名 | 共有するCanvasアプリのアプリ ID を指定します。Power Apps の対象アプリの … → 詳細 を開き、画面下部に表示される アプリ ID を入力します。 |
| API バージョン | 2016-11-01 |
| フィルター クエリ | environment eq '環境ID' |
| コンテンツ タイプ | application/json |
| Body/delete | ユーザーの Microsoft Entra ID |
Body/delete の Id には、「ユーザーの Microsoft Entra ID 」です。「グループ メンバーが追加または削除されたとき」で取得したIdを設定するとよいでしょう。
これにより、対象ユーザーのCanvasアプリ共有を解除できます。

Canvasアプリの共有ユーザーを追加する
ユーザーを追加する場合は Body/put を使用します。


※白抜きしましたが、IDが書いてあります。
| 項目名 | 内容 |
|---|---|
| PowerApps名 | 共有するCanvasアプリのアプリ ID を指定します。Power Apps の対象アプリの … → 詳細 を開き、画面下部に表示される アプリ ID を入力します。 |
| Principal Email | 共有するユーザーの電子メールアドレス |
| Principal TenantId | ユーザーが所属する Microsoft Entra ID テナントの ID |
| Principal Id | 共有するユーザーの Microsoft Entra ID(オブジェクト ID) |
| Principal Type | 共有対象の種類。通常は User を指定します。 |
| NotifyShareTargetOption | 共有時に通知メールを送信するかどうかを指定します。 |
| RoleName | 共有権限を指定します。CanView(ユーザー)または Owner(所有者)を指定します。 |
最後に
今回は、Canvasアプリの共有ユーザーを追加・削除するためのアクションを紹介しました。これらを活用することで、Power AutomateからCanvasアプリの共有設定を自動化できます。
とはいえ、個人的には SharePoint や Teams のメンバー管理と Canvas アプリの共有設定が標準で連携してくれるのが一番うれしいですね。運用もずっとシンプルになると思います。
