PL-900：セキュリティを制御し、モデル駆動型アプリを共有する

この投稿はMicrosoft PL-900の受験に向けた勉強資料をMS Learnページを参考にして作っています。
一発合格に向けて頑張りましょう！

[セキュリティを制御し、モデル駆動型アプリを共有する][MS-Learn]

[MS-Learn]: https://learn.microsoft.com/ja-jp/training/modules/how-build-model-driven-app/06-control-security-share-model-driven-apps

## セキュリティを制御し、モデル駆動型アプリを共有する
* Microsoft Power Appsでの共有機能は、ロールベースのセキュリティを使用している
セキュリティ ロールには、アプリ内で実行できる一連のアクションを定義する権限が含まれている
すべてのアプリケーション　ユーザーは、1つ以上の事前定義またはカスタムセキュリティの役割に割り当てる必要がある
* ロールは、個々のユーザーまたはチームに割り当てることができる
ユーザー・チームにロールを割り当てると、ロールに関連付けられた一連の権限が付与される
* アプリを共有するには、環境管理者ロールまたはシステム管理者ロールが必要

### セキュリティ ロールの作成・設定
* Power Apps環境には、事前に定義されたセキュリティの役割が含まれている
これらの役割は一般的なユーザータスクを反映するかつ、定義されたアクセス　レベルは、アプリケーションを使用するのに必要な最小限のビジネスデータへのアクセスを提供するセキュリティのベストプラクティスに従う

* アプリはカスタム テーブルに基づく場合がある
カスタムテーブルであるため、ユーザーが作業する前に明示的に権限を指定する必要があり、以下のいずれかを使用する
    * 既存の定義済みセキュリティ ロールを拡張して、カスタム テーブル内の行の権限を含むようにする
    * カスタム セキュリティ ロールを作成してアプリのユーザーの権限を管理する

* セキュリティ ロールは、一連のアクセス レベルとアクセス許可により、データへのユーザーのアクセスを制御する
特定のセキュリティ ロールに含まれているアクセス レベルとアクセス許可の組み合わせにより、ユーザーが表示できるデータおよびそのデータとの対話の制限が設定される

* 1つ以上のセキュリティ ロールをアプリに割り当てる必要がある
ユーザーが割り当てられているセキュリティ ロールによってユーザーが使用できるアプリが異なる

* Power Apps 環境には、以下の事前定義済みのロールがある
* 特に記載がない限り、すべての権限はグローバル スコープを持つ

<table>
  <thead>
    <tr>
      <th>セキュリティ ロール</th> <th>権限</th> <th>説明</th>
    </tr>
  </thead>
  <tr>
    <td>環境作成者</td>
    <td>なし</td>
    <td>
        <dl>
            <dd>環境に関連付けられた新しいリソースを作成できる</dd>
            <dd>例）アプリ、接続、カスタムのアプリケーション プログラミング インターフェイス (API)、ゲートウェイ、Power Automate を使用するフローなど</dd>
            <dd>環境内のデータにアクセスすることはできない</dd>
            <dd>→　環境の詳細については、<a href="https://powerapps.microsoft.com/blog/powerapps-environments/">Power Apps 環境についてのお知らせ</a>を参照
</dd>
        </dl>
    </td>
  </tr>
  <tr>
    <td>システム管理者</td>
    <td>作成、読み取り、書き込み、削除、カスタマイズ</td>
    <td>
        <dl>
            <dd>セキュリティ ロールの作成、変更、割り当てなど、フルアクセス可能</dd>
            <dd>環境内のすべてのデータを表示できる</dd>
            <dd>→　詳細については、<a href="https://learn.microsoft.com/ja-jp/dynamics365/customer-engagement/customize/privileges-required-customization">カスタマイズに必要な権限</a>を参照</dd>
        </dl>
    </td>
  </tr>
  <tr>
    <td>システムのカスタム担当者</td>
    <td>作成 (本人)、読み取り (本人)、書き込み (本人)、削除 (本人)、カスタマイズ</td>
    <td>
        <dl>
            <dd>環境をカスタマイズするための完全なアクセス可能</dd>
            <dd>ただし、自身が作成した環境テーブルの行のみを表示できる</dd>
            <dd>詳細については、<a href="https://learn.microsoft.com/ja-jp/dynamics365/customer-engagement/customize/privileges-required-customization">カスタマイズに必要な権限</a>を参照</dd>
            <dd></dd>
        </dl>
    </td>
  </tr>
  <tr>
    <td>Microsoft Dataverse ユーザー</td>
    <td>読み取り、作成 (セルフ)、書き込み (セルフ)、および削除 (セルフ)</td>
    <td>
        <dl>
            <dd>環境内でアプリ・所有する行に対して共通タスクを実行できる</dd>
        </dl>
    </td>
  </tr>
  <tr>
    <td>代理人</td>
    <td>別のユーザーに代わって実行します</td>
    <td>
        <dl>
            <dd>コードを他のユーザーとして実行したり、別のユーザになりすますことができる</dd>
            <dd>通常、このロールは行へのアクセスを提供する別のセキュリティロールとともに使用される</dd>
        </dl>
    </td>
  </tr>
</table>

## アプリへのリンクの共有
1\. <a href="https://make.powerapps.com">https://make.powerapps.com</a> にアクセス
2\. モデル駆動型アプリを選択し、共有をクリック
3\. アプリを選択し、一覧からセキュリティ ロールを選択

<img src="https://learn.microsoft.com/ja-jp/training/modules/how-build-model-driven-app/media/share-model-driven-app.png#lightbox" />

4\. ユーザーの検索
5\. ユーザーを選択し、一覧からロールを選択

<img src="https://learn.microsoft.com/ja-jp/training/modules/how-build-model-driven-app/media/share-role-user.png#lightbox" />

6\. 共有をクリック
7\. 次の手順に従って、リンクをアプリと共有

:::note warn
キャンバス アプリの共有とは異なり、モデル駆動型アプリを共有してもアプリへのリンクを含むメールは送信されない
:::

### アプリへの直接リンクを取得します。
1\. Power PlatformアプリのMaker Portal(<a href="https://make.powerapps.com">https://make.powerapps.com</a>)で、URLが必要なアプリの横にある省略記号を選択
2\. 表示されたメニューから [詳細] を選択
3\. Webリンクを選択してアプリケーションを開くか、WebリンクのURLをコピーする
4\. アプリのURLをSharePointサイトに投稿したり、メールで送信したりするなどしてユーザーがアクセスできるような場所に貼り付ける

<img src="https://learn.microsoft.com/ja-jp/training/modules/how-build-model-driven-app/media/copy-app-url.png" />