Power Platform 環境払い出し申請業務を効率化しよう


# はじめに

まず、Power Apps のアプリや Power Automate のフロー等のリソースは、環境という場所に保存されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/c577132b-4fd8-395c-2ab0-a3f31be1356e.png)

※こちらの記事から拝借したので、アイコンちょっと古いです

https://qiita.com/Takashi_Masumori/items/6f0d9a094e40564736be

そして、Power Platform を利用者に開放するにあたって、特に、有償ライセンスまで開放する場合、利用者からの環境を利用したい、作成したいという申請の対応について検討が必要です。

あまりリクエストがない初期段階では、マニュアルでもいいと思いますが、ある程度浸透してくると、DLP ポリシーの対応含め、全て手作業で行うのは効率が悪く、工数も膨らんでくると思います。

その際の一つのアプローチとして、Power Platform の CoE スターターキットに存在する環境申請アプリやフローがございます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/99ba48e0-8f02-8ec9-23ce-cab603d9fa6e.png)

良くできており、もちろんこちらがそのまま利用できれば良いのですが、データソースが Microsoft Dataverse のため、こちらを利用する、つまり申請する可能性があるユーザー全てに Power Apps の有償ライセンスが必要となるためハードルが高いかもしれません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/99f27d8b-a343-7f62-c343-4b94e785ba59.png)

また、こちらのアプリをそのまま利用することについて、個人的に以下のような懸念もあると思っています。

* 環境で利用するコネクタについても細かく申請が可能なため、利用者が利用するコネクタを一つ一つ選択する必要があり面倒くさい

* 全てのコネクタが表示されているため、管理者が基本的に利用させることを想定していないコネクタに関する申請が沢山来てしまって煩わしい。環境を作成するたびに DLP ポリシーの作成も必要になり、ポリシーが乱雑する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/fdfb6fed-b38a-56d2-6ca6-b8decc8a2e12.png)

そのため、今回は、Power Platform 環境払い出し申請業務を効率化するその他アプローチについて紹介します。

# 申請の流れ

個人的には、以下のような申請の流れで、ある程度の申請に対しては対応でき、また、効率化できると思っています。

個人的な経験上、Power Apps の有償ライセンスがあり、個別環境を申請したい場合、一旦は、Medium Low、または、Medium で利用できるコネクタ (どちらも Dataverse 含まれていますし) があれば問題ないというケースが多いと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/aec707e0-8114-7d3d-6bed-3cd87cf79a23.png)

もちろん、例外的なリクエストはあると思いますが、そちらについては一旦は個別対応でもいいかと思います。いきなり 100 点を目指さないという感じです。

本アプリやフローを利用するメリットは以下の通りです。

* 申請アプリや自動化フローを利用することで、環境の申請、承認業務を全般的に効率化できる
* 環境申請時に必要な情報の入力を求めることが出来る (必要情報の洩れによる複数回のやり取りを削減できる)
* アプリ内で DLP ポリシーの内容を確認できるため、適切なポリシーを選んで申請することが出来る
* 環境申請の履歴を残すことが出来る
* 新規環境の作成を自動化できる
* 作成された新規環境に対する DLP ポリシーの適用を自動化できる (事前定義済みの DLP ポリシーを適用する)
* 作成された新規環境に対する環境管理者の権限付与を自動化できる (申請者が環境管理者になる。環境管理者の追加は申請者自身に行ってもらう)

# 環境払い出し申請アプリ

まず、データソースは SharePoint リストで作成しています。もちろん、全社的に Microsof Dataverse が使える場合は Dataverse でもいいですが。。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/95ea15a9-4b4f-9ca5-9a2b-957633363cf7.png)

事前定義済みの DLP ポリシーについて、以下のようにデータを用意しておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/e9945826-857c-fc23-7d15-f5ef3605dbd2.png)

アプリの見た目は以下のような感じです。自動で作成されるアプリのデザインをちょっと変更しただけです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/e96f2a00-f507-51a9-40e0-ada9a15b0b25.png)


いくつかポイントを説明します。

まず、DLP ポリシーは、以下のように、SharePoint リストから選ぶようにしています (名前で選択させ、GUID は裏で保存しています)。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/1389235e-8ef1-347d-98f6-a272ac1ec458.png)

そして、ボタンを押すと、既存のポリシーを確認できるようにしています。こちらにより、その環境で利用したいコネクタを踏まえ、最適なポリシーの適用も併せて申請することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/c57a0d6f-ebfe-7d49-d93a-a1e9655ffe8e.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/f17eb892-9e52-0fac-0b02-51844c4dddd1.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/fa7aa661-1ec1-1f63-d3bb-4b5a791d069d.png)

:::note
こちらの仕組み、組織にどのようなDLP ポリシーがあり、どのコネクタが利用できるかを把握できるため、利用者へのガイド等にも利用してもいいかもしれません。ポリシーを変更した際に自動で反映されるため、便利だと思います。
:::

※こちらの仕組みについて、CoE スターターキットの DLP Editor (キャンバスアプリ) を活用しました。最新版だとモデル駆動型アプリとなっているため、以前のバージョンをインストールする必要があります

https://github.com/microsoft/coe-starter-kit/releases

また、申請にあたって、何か読み物を読ませたい場合は、こんな感じでリンクに飛ばせ、確認したことをチェックする (つまり、何らかの同意をした) ようにしてもいいかもです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/4e7cbc70-3648-8c93-94cd-b00209196259.png)

# 環境払い出し申請フロー

環境払い出し申請がされたら SharePoint リストにデータが蓄積するため、こちらをトリガーに承認ワークフローを回しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/012bd7f9-3b0f-b9e4-0102-c2e17ec0ad59.png)

適宜ステータスを更新しつつ、承認されたら環境の作成、ロールの割り当て、ポリシーの割り当て等を行っています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/5cd6715f-2cd5-71b4-75b4-60e0d6040a12.png)

こちらのフローも、CoE スターターキット内のフローを参考にしています。

少し癖がある箇所について補足します。

まず、ロールの割り当てについて、以下のような表記になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/c5c56d19-eed5-7eea-682d-e910c29fef92.png)

こちらにコネクタの情報ありますが、こちらからは上記のように記載することは推察できず、難しいです。。

https://learn.microsoft.com/ja-jp/connectors/powerplatformforadmins/#%E7%92%B0%E5%A2%83%E3%81%AE%E3%83%AD%E3%83%BC%E3%83%AB%E5%89%B2%E3%82%8A%E5%BD%93%E3%81%A6%E3%82%92%E7%B7%A8%E9%9B%86%E3%81%99%E3%82%8B

```
[
  {
    "properties/principal/email": @{outputs('項目の更新')?['body/EnvironmentSystemAdministrator/Email']},
    "properties/principal/tenantId": @{outputs('環境を管理者として取得する')?['body/properties/createdBy/tenantId']},
    "properties/principal/id": @{outputs('ユーザー_プロフィールの取得_(V2)')?['body/id']},
    "properties/principal/type": "User",
    "properties/roleDefinition/id": "/providers/Microsoft.BusinessAppPlatform/scopes/admin/environments/@{outputs('環境を管理者として取得する')?['body/name']}/roleDefinitions/EnvironmentAdmin"
  }
]
```

そして、DLP ポリシーの割り当ては以下のような感じです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/3a4295ac-09c6-791a-151d-5d6a5536604f.png)

Low ポリシーは、以下のように、環境作成時点で適用されるポリシーとなっているため、申請時にこちらを選択した場合は何もしません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/f2f02b6a-d44b-2fda-52f8-03a45720eb54.png)

それ以外を選んだ場合は、選んだポリシーへの追加と Low ポリシーからの除外を行っています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/fb403fbc-1f61-9cc4-57e3-156a45257177.png)

通知等は省いていますが、こちらのフローにより、承認されたら、環境が作成され、事前定義済みのポリシーを割り当てるところまでの処理の自動化が可能です。

# まとめ

今回は、Power Platform 環境払い出し申請業務を効率化するアプローチについて紹介しました。Power Platform を利用者に開放するにあたって、特に、有償ライセンスまで開放する場合、利用者からの環境を利用したい、作成したいという申請の対応が必要になるため、一つのアプローチとして参考になれば幸いです。