PL-200 学習メモ (11) : ソリューション、セキュリティロール

# はじめに
この投稿は PL-200: Microsoft Power Platform 業務コンサルタントの学習をした内容のメモです。

投稿の一覧は以下のリンク先にあります。

https://qiita.com/atsmin77/items/f25bd707921c421cee03

# 前の投稿

https://qiita.com/atsmin77/items/b0afa21e7451cbf69ccb

# ソリューション

ソリューションはアプリケーションのライフサイクル管理を行うための仕組みです。ソリューションには、Power Apps アプリや Power Automate フローなどのコンポーネントが含まれ、ソリューションをエクスポートし、別の環境へインポートすることできます。

## ソリューションの種類

ソリューションには**マネージド**と**アンマネージド**の 2 種類があります。

* アンマネージド
  * 開発環境で使用するソリューション
  * コンポーネント編集が自由行える
  * アンマネージドソリューションをマネージドソリューションとしてエクスポートできる
  * アプリケーション開発におけるソースコードの位置づけ
* マネージド
  * 本番環境などで使用するソリューション
  * コンポーネントの編集は直接行えない
  * アプリケーション開発におけるビルドされたパッケージの位置づけ

## 既定のソリューション

環境には初めから以下のアンマネージドソリューションが作成されています。

| 名前 | 説明 |
|:-:|:-:|
| Common Data Service Default Solution | 環境に作成したアプリやフローの既定の保存先となるソリューションです。  |
| Default Solution  | システム上のコンポーネントをすべて含む特別なソリューションです。  |

## ソリューションの作成
1. [ソリューション] - [新しいソリューション] をクリックし、表示名などを入力し作成します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/5b75ee90-6fd2-5f59-f1e9-77bab8809b61.png)
2. 作成したソリューションにコンポーネントを追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/bc8dd378-aaed-8927-562d-02547a3b2a54.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/c3c8a6bc-6660-c259-fa10-bcd4f180f158.png)

::: note info
ソリューションを作成する際には [公開元](https://learn.microsoft.com/ja-jp/power-platform/alm/solution-concepts-alm#solution-publisher) を指定します。公開元はソリューションの提供元を識別するために利用され、ソリューション内のコンポーネントには公開元のプレフィックスが付与されます。
※ 既定で選択される Comomn Data Service Default Solution の公開元プレフィックスはランダムな文字列になっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/ab224aae-76f3-48bc-2eea-a5c3179eefbd.png)
:::

::: note info
ソリューションのバージョンは以下のように採番することが[推奨]()されています。
**メジャーバージョン.マイナーバージョン.ビルド番号.リビジョン番号**
:::

## ソリューションのエクスポート
1. [ソリューションをエクスポート] をクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/597725a6-05c5-cf3d-f9fb-d39b39c0cced.png)
2. バージョンやマネージドまたはアンマネージドを選択してエクスポートします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/32b6c12e-3724-9d33-f015-4cf2e7d22da5.png)
3. エクスポートが完了すると、ソリューションを zip ファイルとしてダウンロードできます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/0e76298a-8666-9817-f8c9-4974b31941c6.png)

## ソリューションのインポート
1. 環境を切り替えて、[ソリューションのインポート] をクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/5f237142-13d4-b2fa-c7f5-d866defe9063.png)
2. エクスポートした zip ファイルをアップローダーし、[次へ] をクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/026b0c47-baad-45c7-f1b4-0c0443066d74.png)
3. [インポート] をクリックすると、ソリューションが環境にインポートされます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/f5a59e65-c5b5-fad9-7689-ac98cc677302.png)
::: note warn
インポートする環境にソリューションが依存しているコンポーネントが不足していると、警告が表示されてインポートが行えません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/b103033a-8846-27aa-b110-a2e8e1a0baa0.png)
:::

::: note info
古いバージョンのソリューションが既にインストールされている環境に新しいバージョンのソリューションをインポートする際には、[詳細設定] から[アップグレードの方法](https://learn.microsoft.com/ja-jp/power-apps/maker/data-platform/update-solutions#apply-the-upgrade-or-update-in-the-target-environment)を指定します。
:::
| 名前 | 説明 |
|:-:|:-:|
| アップグレード (Upgrade) | 新たなバージョンに含まれていないコンポーネントを削除します。  |
| アップグレードのステージ (Stage for Upgrade) | 新たなバージョンに含まれていないファイルを一旦保持し、その後アップグレードする際に削除します。  |
| 更新 (Update) | 新たなバージョンに含まれていないコンポーネントを保持します。  |

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

https://learn.microsoft.com/ja-jp/power-platform/alm/solution-concepts-alm

https://learn.microsoft.com/ja-jp/power-apps/maker/data-platform/view-component-dependencies

# セキュリティロール

ユーザーにセキュリティロールを割り当てることで、ユーザーがアクセスできるデータやリソースを制御することができます。

Dataverse データベースが作成されていない環境には既定で以下の 2 つのセキュリティロールが作成されています。

| 名前 | 説明 |
|:-:|:-:|
| Environment Administrator  | 環境の管理者、すべての操作とデータの参照が行える。  |
| Environment Maker  | 環境へのリソースの追加が行えるが、環境のデータは参照できない。  |

https://learn.microsoft.com/ja-jp/power-platform/admin/database-security#environments-without-a-dataverse-database

Dataverse データベースが作成されている環境には以下のようなセキュリティロールが作成されます。

| 名前 | 説明 |
|:-:|:-:|
| System Administrator  | データベースの管理者、すべての操作とデータの参照が行える。   |
| System Customizer  | データベースのカスタマイズが行える、自身が作成したデータのみ参照できる |

https://learn.microsoft.com/ja-jp/power-apps/maker/model-driven-apps/privileges-required-customization#system-administrator-and-system-customizer-security-roles

※ その他の既定のセキュリティロール

https://learn.microsoft.com/ja-jp/power-platform/admin/database-security#environments-with-a-dataverse-database

## 新たなセキュリティロールの作成
1. [管理センター] をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/6ab98c56-a164-c8bd-b27b-182d6cb01748.png)
2. [環境] から環境を選択し、[セキュリティロール] - [すべて表示] をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/a1e2bcb9-e034-cfef-32c7-a6757564d568.png)
3. [新しいロール] をクリック
[メンバーの特権継承] から、ロールをチームに割り当てた際のユーザーへの権限の継承方法を設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/5af665f2-b832-fb31-24ad-df77dc183805.png)

::: note info
[設定] - [ユーザーとアクセス許可] からセキュリティロールなどの設定画面を開くことができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/f0742dc7-1f5c-6e49-0c45-3802c4d07b78.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/4da81318-e41c-fed5-7307-a65fa999f166.png)
:::

https://learn.microsoft.com/ja-jp/power-platform/admin/security-roles-privileges#define-the-privileges-and-properties-of-a-security-role

## ユーザーへのセキュリティロールの割り当て
1. [環境] から環境を選択し、[ユーザ] - [すべて表示] からユーザーを選択し、[セキュリティロール] の管理をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/cc29819a-60f5-8760-2fcf-58ec0a37bd33.png)
2. 割り当てるセキュリティロールを選択し、保存

::: note info
Power Platform にはユーザーのほかにもチームや部署 (Business Unit) があり、同様にセキュリティロールを割り当てることができます。
※ 部署、チーム、ユーザーの関係
部署
└ チーム
　└ ユーザー
:::

https://learn.microsoft.com/ja-jp/power-platform/admin/assign-security-roles

https://learn.microsoft.com/ja-jp/power-platform/admin/create-edit-business-units

::: note info
フォームにセキュリティロールを割り当てることにより、ユーザーのフォームへのアクセスを制御することもできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/4b231b79-c0d5-a4a1-45d6-09fd147622ba.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/9424a017-53d9-8f20-138d-34402c11b97c.png)
:::

https://learn.microsoft.com/ja-jp/power-apps/maker/model-driven-apps/control-access-forms#set-security-roles-for-a-form

::: note info
キャンバスアプリやモデル駆動型アプリを共有する際にも、テーブルへのアクセスを許可するためセキュリティロールの割り当てを行います。
* キャンバスアプリ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/b8b5eb84-c871-9416-a2b5-a7415dfcfd55.png)
* モデル駆動型アプリ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/d7f938db-faee-e038-0a74-bb3cd5c1a983.png)
:::

https://learn.microsoft.com/ja-jp/power-apps/maker/canvas-apps/share-app

https://learn.microsoft.com/ja-jp/power-apps/maker/model-driven-apps/share-model-driven-app

# 次の投稿

https://qiita.com/atsmin77/items/fc6f311edecc2adc68fe