【PowerAutomate】手動実行フローで「実行専用ユーザー」を使う際の注意点

こんにちは！
M365（特にSharePoint,Power Automate,Power Apps,Teams）に関する記事やちょっとした小ネタなどをご紹介していきます。

# はじめに
Power Automateで「インスタント クラウド フロー」を作成した際に陥った事象を踏まえて、「実行専用のユーザー」の動きを確認してみました。

# 実行専用のユーザーとは？
フローの種類のうち、「インスタント クラウド フロー（ユーザーによる手動実行がトリガーとなるフロー）」では、『実行専用のユーザー』という機能を利用することが出来ます。
この『実行専用のユーザー』は、自動化されたクラウドフローなどでは設定項目自体が表示されません。

▼インスタント クラウド フローの詳細画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587034/eb8ecd93-cc24-7bc0-3093-810805ad4168.png)

自動化されたフローやスケジュール済みのフローの場合、フロー内で接続するサービスへの認証を行うアカウントは、基本的にフロー作成者のアカウントとなります。

一方で、手動実行がトリガーとなるフローの場合は、フロー内の各サービスにアクセスする権限を下記いずれかから選択できます。
※ 下記の権限は、使用するサービスのコネクタ単位で選択が可能です。（上記図を参照ください）
<strong>
①フローを実行するユーザーの権限を使用する
②フロー内で作成された接続の認証を使用する
</strong>
　
それぞれの大きな違いは、以下のようになるかと思います。
|使用する接続|説明|
| :-- | :-- |
| ①実行専用ユーザー | フローを実行したユーザーが各サービスに対して持っている権限に応じて、フローの処理が実行される |
| ② 作成済みの接続| フローの実行者に関わらず、接続されたアカウントの権限によりフローの処理が実行される |

# 動作確認
以下のフローでそれぞれの接続における動作を確認してみます。
処理の流れとしては、投稿用リストで任意のアイテムを選択して承認フローを開始し、承認されたら公開リストにアイテムをコピーし、さらに指定したチームのチャネルに通知を投稿する、というものになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587034/78f41e06-93b7-d010-d0af-58647536b13c.png)

## 環境
使用する環境は以下の通りです。

<dl>
<dt>SharePointリスト</dt>
<dd>・A：投稿用リスト</dd>
<dd>・B：承認記事の公開リスト</dd>
<dt>Teamsのチーム</dt>
<dd>・X：全社チーム（既定で作成されるチーム。全社員が自動参加）</dd>
<dd>・Y：企画部門用チーム（プライベートチーム）</dd>
</dl>

また、利用するユーザーの各環境への権限は以下の通りです。
| ユーザー名 | リストA | リストB | チームX | チームY |
| :-- | :-: | :-: | :-: | :-: |
| admin<br>（フロー作成者） | 所有者 | 所有者 | メンバー | 所有者 |
| user01 | 投稿 | 閲覧 | メンバー | 非メンバー |
| user02 | 投稿 | 投稿 | メンバー | メンバー |

 ## パターン① 実行専用ユーザーの場合
 フローの設定画面から、[使用する接続] を以下のように設定します。
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587034/1adf3200-18c3-976b-bf5b-77e5cba4bd3a.png)

フローを実行するSharePointリストは以下のようなサンプルデータを用意し、「flow」列のボタンをクリックするとフローが開始される仕組みとしています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587034/f05b6f64-3e37-1bcc-47bf-b31a126719dd.png)

この状態でuser01、user02でそれぞれフローを実行した場合の結果は以下となりました。

**▼ User01のフロー実行履歴**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587034/2fafcdaf-b34c-18e2-5bad-3d6e83824775.png)
フローの開始からステータス変更までの処理は問題なく進みましたが、user01は公開用リストに対して閲覧権限しか持っていないため、公開用リストへの書き込みで失敗していることがわかります。
　
**▼ User02のフロー実行履歴**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587034/1f6672c0-bbfe-0267-582d-dae28bc18f29.png)
user02においては、すべてのリストおよびチームに対して適切な権限が付与されているため、最後のアクションまで正常に完了しました。

**▼最終アクションの画面（企画チームへの通知投稿）**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587034/82ab60d6-f661-2412-fb93-ec303e6fc7bb.png)

## パターン② 作成済みの接続を利用した場合
同じ構成のフローを複製し、先ほどフローが失敗したuser01で動作を確認してみたいと思います。
以下の画面のとおり、SharePointおよびTeamsの接続をフロー作成者（admin）に変更しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587034/aa43e689-aacf-949d-ff1c-675bed1eaaeb.png)

**▼ User01のフロー実行履歴**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587034/3c6a3325-4bf4-d9bc-65f9-46feb13eacd0.png)
SharePointリストへの書き込みおよびTeamsへの投稿が、adminの権限によってクリアされたことで、フローが問題なく完了できました。

# 実行専用のユーザーを指定する際に気を付けるポイント
『実行専用のユーザー』は、使い方によってはフローを正常に実行させる対象を制限することができる便利な機能だと思いますが、例えばSharePointサイトでコンテンツごとに細かく権限が設定されていたり、複数のプライベートチームを横断して処理を行いたい場合には、かえって想定通りに動かなくなってしまう可能性もあります。

SharePointやTeamsのアクションを利用する際に、以下のような制御を行っている環境が含まれる場合は、どちらの権限を使用するのが良いか、きちんと動作確認を行ってリリースいただくことをお勧めします。

<dl>
<dt>SharePointの例</dt>
<dd>・書き込みまたは更新対象のリストで、「作成/編集のアクセス権」を「ユーザー本人のアイテム」に限定している<br>
　→他のユーザーが作成したアイテムの更新が不可となります</dd>
<dd>・フローを実行するユーザーの権限が、書き込みまたは更新対象のリスト/ライブラリで「閲覧」となっている<br>
　→投稿以上の権限を持っている必要があります</dd>
<dd>・SharePointの承認機能やチェックアウト機能が有効なリスト/ライブラリが処理に含まれている<br>
　→承認やチェックインを扱うユーザーには、フルコントロールまたはデザインのアクセス許可レベルが必要です
</dd>
<dt>Teamsの例</dt>
<dd>・投稿先のチームまたはチャネルに適切な権限があること<br>
　→チームのメンバーではない、あるいはチャネルの投稿がモデレーターに制限されている場合などは注意が必要です</dd>
</dl>

# まとめ
今回は、SharePoint、Teamsにフォーカスして検証を行いました。
今回の検証では再現できませんでしたが、実行のみのユーザーを指定することで、フローの開始自体が出来なくなってしまった経験もあったため、この辺りの機能の理解もきちんと持っておきたいと思います。

# 関連リンク
フローの複製方法は[こちら](https://qiita.com/yuki_asa/items/5ce59d05430e9eacebe3)の記事も参考にしてください。