Power Platformハッカソン・ハンズオン用の環境へのロール割り当て自動化したい！（Teamsを使用）

こんにちは。

ハッカソンやハンズオンを開催する際、制限のゆるい期間限定環境を作成し、イベントが終わったあとに、制限などを確認してから、個人の環境にアプリやフローを移行するというの運用をよく拝見します。

その際に、毎回ユーザーから申請を受けるたびに、環境へ追加し、ロールを割り当てるのは大変ですよね💦

今回はユーザーの環境への追加、ロール割り当てをするときの効率的な方法をご紹介します。
**こちらの運用にすると、Teamsのチームへユーザー自身が入るだけで、ロールの割り当てを自動的に行うことができます。**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/06e48f06-7835-54ba-cdd0-8c8f68282640.png)


# 前提：ライセンスやロールについて
前提として、こちらの操作を行うユーザーはPower Platform管理センターのアクセス件を持つ、管理者ロールが必要です。
そして、参加するユーザーはPower AppsやPower Automateのライセンスを持っている必要があります。


# 手順
手順は以下のようになっています。
Teamsのチームや環境がすでにある場合は「3. Teamsのチームと連携したチーム作成」から設定しましょう。ここが肝になります。

1. イベント用Teamsのチーム作成
2. イベント用環境作成
3. Teamsのチームと連携したチーム作成
4. ユーザー側の操作方法
5. ユーザーがアプリを作成するときの注意
6. ハンズオンが終わった後、アクセス設定を削除する場合

# 1.イベント用Teamsのチーム作成
まず、Teamsを開きます。

チームの横の[＋]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/fd5b00f0-8d47-81ae-d2e1-ddbbcb54a268.png)

[最初から]を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/d768c5e2-2807-f8d6-d5cd-0b516907e484.png)

[プライベート]を選択します。
（自由に入られてもいい場合、パブリックでも大丈夫です）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/24c46605-8d74-96b2-1cb3-bb707341bc50.png)

チームの名前を入力し、作成ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/8864bc7d-09f1-7ea4-8d3d-9031ac163d1a.png)

追加するメンバーがいれば追加し、いなければスキップをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/e78879f0-58e7-65a7-d1b5-9c5fd886375d.png)

チームの横の[...]をクリックし、[チームを管理]を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/c6b4958e-8240-f350-7c70-c3c7b473edfe.png)

[設定]タブをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/f5b99cc0-b51f-564c-f4bd-a48fce98bb8f.png)

[チームコード]の[生成]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/f9fc0c02-0468-37ce-f140-c58bf7a4c55c.png)

コードが表示されたら[コピー]をクリックします。【A】
このコードはメモしておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/448c8be4-ffbb-ede2-fef8-a356164a16c3.png)


# 2.イベント用環境作成

Power Platform管理センター(https://aka.ms/ppac )にアクセスし、左のメニューで[環境]を開きます。
[新規]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/5464800e-f1c2-abc8-b668-97fb564a2805.png)

名前や地域を設定し、環境の種類を「実稼働」に設定します
「Dataverseデータストアを追加しますか？」を「はい」に設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/f81c3e08-bae2-5d01-2b57-3577294238ee.png)

言語を設定し、通貨に「JPY(¥)」を設定します。
セキュリティグループを「なし」に設定し、[保存]ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/78bc834b-a03a-1063-d65f-71783e07a412.png)

タイミングを見て[最新の状態に更新]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/0750e264-f135-7aad-4efc-1f88730923e8.png)

環境の状態が「準備完了」になっていたら完了です！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/3610b9d0-c33f-109b-40f9-c906acd08b43.png)



# 3.Teamsのチームと連携したチーム作成
Power Platform管理センターで[環境]を選択し、該当の環境を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/b1a3b851-8cf8-e998-b3ba-f5fd0e2c3fa0.png)

詳細画面で[チーム]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/3099c0a1-9b62-9f81-0785-68f56418cb68.png)


チームの一覧画面で左上の[チームの追加]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/e5348360-a31c-fd32-c880-44e58f7a0db0.png)


以下の画像のように新しいチームを作成します。
重要なのはチームの種類とグループ名です。ここで、Teamsのチームとの連携ができます。
設定したら[次へ]ボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/fcf1684b-8e18-cf5c-ca25-2f0d44075180.png)

割り当てたいセキュリティロールを選択します。
[セキュリティロールの詳細についてはこちらから](https://qiita.com/skuramoto/items/fe305aac24273c7cccbf)
例えば、今回は、Environment Maker、System Customizerを設定します。（テーブル作成まで許可する場合はシステム管理者ロールを割り当てます。）
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/ca8d08fa-c396-8698-9eb0-094ccbd67f27.png" width=50%>
[保存]ボタンをクリックします。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/4f69eae5-5a47-31ce-bbf5-ea82791fc3db.png" width=50%>


チームが作成されたことを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/d0de55bd-62bd-32da-3df7-d9ce18b35bc9.png)

これで、Teamsでメンバーを追加すると、そのメンバーに対してセキュリティロールが割り当てられます。
Teamsのメンバーになったら、そのユーザーはアプリを開くことができます。

環境の詳細画面で「環境ID」をコピーします。【B】
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/bb0b2b00-68d0-d7d5-437f-cf673a2111ee.png)


# 4. ユーザー側の操作方法
チームや環境へのアクセス権を持たないユーザーで試してみます。
## Teamsのチームに参加
Teamsへアクセスします。
チーム横の[+]をクリックし、[チームに参加]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/2088f822-233c-966f-7054-eb86bd7d9b98.png)
[コードを使用してチームへ参加します]へ【A】で生成されたコードを入力します。
[チームを追加]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/1ac3c3ed-d519-0a99-dffd-b0982d00e1e6.png)

チームに参加できていることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/61a51f3d-cee4-5079-bdcb-3dea854b32ee.png)

## 環境へアクセス
次に、Power Appsの環境へのアクセスを確認します。
【B】でコピーした環境IDを以下のURLの「環境ID」に置き換えます。

```
https://make.powerapps.com/environments/環境ID/home
```
以下のようなイメージです。
```
https://make.powerapps.com/environments/544a58c6-2940-e2d7-baa9-fe5bab3caab6/home
```

ブラウザでこのURLにアクセスすると、今回の環境（画像では「○○月ハンズオン用環境」）へアクセスできることを確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/2517229b-e5d7-ff76-4e20-ec1d1a48c5a3.png)


このように、ユーザーにはコードとURLをご案内し、Teamsへの参加方法と環境へのアクセスをお願いするだけで、環境への追加が完了します。

（手順書イメージ）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/27a879e1-f66c-3700-92ae-6a70f00cc4ab.png)


::: note
もし自動的にユーザーが増えていくのは不安だという場合は、Teamsのコードは発行せず、Teamsのチームへの追加を管理者が行うようにするなど、部分的に自動化を行うことによって、安全に、効率化することも可能ですので、ぜひ試してみてください。
:::

# 5.ユーザーがアプリを作成するときの注意
イベントが終わったら、イベント用の環境から、実際に使うための運用環境に移行する必要がありますので、あらかじめソリューションでアプリをまとめておきましょう。

ソリューションについては以下の記事で説明しております。
最初からソリューションの中でアプリやフローを作成すると不具合も起こりづらく安心です。

https://qiita.com/skuramoto/items/bb053bdc8b12b771c6e4

イベント期間が終わったら[ソリューションをエクスポート]でローカルに保存しておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/f97f0186-e441-77fd-62fd-8bad6c9b6918.png)

詳細・手順は以下を参照してください。

https://learn.microsoft.com/ja-jp/power-apps/maker/data-platform/export-solutions

別環境へのインポート方法は以下を参照して下さい。

https://learn.microsoft.com/ja-jp/power-apps/maker/data-platform/import-update-export-solutions

# 6.ハンズオンが終わった後、アクセス設定を削除する場合
イベントが終わって、ユーザーのアクセスを制御したいときは以下の方法で設定することができます。

今回設定したグループを削除することで、そのグループに所属するユーザーのアクセス件を制御します。

Power Platform管理センター(https://aka.ms/ppac )にアクセスし、左のメニューで[環境]を開き、該当の環境を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/b1a3b851-8cf8-e998-b3ba-f5fd0e2c3fa0.png)

詳細画面で[チーム]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/3099c0a1-9b62-9f81-0785-68f56418cb68.png)

該当のチームを選択し、[削除]を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/bd5fdca6-cfa4-26ad-ef1c-c85e76111826.png)

ポップアップにて[削除]ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/339dfc49-b444-504e-b286-f093bb0f62cb.png)

削除されたことを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/95813580-5558-07e5-f6fd-b2735425ef1b.png)


しばらくすると、グループでのみロールを与えられていたユーザーは環境へアクセスができなくなります。（反映に少し時間がかかります。）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/130bcffd-724a-e806-fabe-a52ecfa2cd92.png)

# まとめ
今回はイベント用の環境運用の方法について、Teamsのチームを使って自動的にユーザーへロールを割り当てる方法をご紹介しました。
今回の方法はイベント以外でも使用できますし、
もし自動的にユーザーが増えていくのは不安だという場合は、Teamsのコードは発行せず、Teamsのチームへの追加を管理者が行うようにするなど、部分的に自動化を行うことによって、安全に、効率化することも可能ですので、ぜひ試してみてください。