Dataverseの列ごとの権限付与方法(列のセキュリティプロファイル)

こんにちは！
Dataverseは、セキュリティロールでテーブル、行ごとにセキュリティ設定できますが、**列ごとにも権限を設定する**ことができます。

本日はその概念と設定方法についてこちらでご説明します。

# 列のセキュリティプロファイル
まず、列ごとの権限設定で使う概念「列のセキュリティプロファイル」についてご紹介します。

列のセキュリティプロファイルとはプロファイルごとのセキュリティ定義です。
言い換えると、ユーザーに付与する列ごとの操作(CRUD)権限がグループ化されたものです。(厳密にはCRU権限)
**列ごとのセキュリティ設定はこのセキュリティプロファイルを設定して行います。**

セキュリティロールと同じような感じですね。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/d0d6e67c-d936-c697-ef0c-8ba21959ec0f.png" width=80%>

セキュリティロールについては以下をご参照ください。

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


# 設定方法
手順は2段階です。
1. 列ごとにセキュリティを有効にする
1. 列セキュリティプロファイルを構成する

## 1. 列ごとにセキュリティを有効にする
権限設定の前に、列ごとにセキュリティを有効にする必要があります。

設定したいテーブルの詳細画面を開きます。
[スキーマ]＞[列]をクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/e6bdbb75-a8ea-2d27-b32e-2e7184d84a74.png)

列の一覧画面で設定したい列を選択します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/3aaa9d3c-cd6f-96b9-aca5-2915c7b03e30.png" width=70%>

列の編集ウィンドウで高度なオプションを開き、下の方の「列セキュリティを有効にする」を選択し、[保存]ボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/c3202ce1-d052-d755-3162-973c07af0716.png)

これを行えばこの列に対する列セキュリティがONになります。

モデル駆動型アプリで設定した列について見てみると、デフォルトでは、閲覧権限なしになっており、*****と表示されます。（セキュリティプロファイルを付与していない全員に対して）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/6e2f6f2a-438b-d117-f1a0-5f59c4614389.png)


## 2.列セキュリティプロファイルを構成する
Power Platform 管理センター(aka.ms/ppac)を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/c636f580-9601-40ac-da1a-c3d8e6d7afa9.png)

今回、設定したい環境を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/8fe34e56-1fa4-704f-7f02-908a23f3b763.png)

環境の詳細画面で上のリボンの[⚙設定]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/b91b7a66-5404-429e-03bb-0f18a8fdf658.png)


[ユーザーとアクセス許可]>[データ列のセキュリティプロファイル] を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/7f08fabe-3fa7-cec5-ed1d-184eab9e2c08.png)

[新しいプロファイル]を選択し、名前を入力し(必要に応じて説明を入力して)、[保存]を選択します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/32374b32-07de-0466-a755-d0b723dfd02c.png" width=70%>

できたプロファイルを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/85241140-771c-1e5c-a30e-72ab69c3fd4d.png)


列ごとに一覧になりデータが多いので、テーブル名などで並び替えをして、該当の列を選択します。
上の[編集]を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/f5744c5a-f18e-56a9-0d07-1bc28bb526c2.png)

以下の3種類の権限を「許可する」「許可しない」の2値で設定できます。
- 読み取り(Read)
- 更新(Update)
- 作成(Create)
設定したら[保存]ボタンをクリックします。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/358dc3f3-0c55-6e8d-4ae5-7e1e9542fc66.png" width=70%>

[チーム]or[ユーザー]タブを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/b9fa344d-6f34-879f-4dca-fd1db68517af.png)

この権限を付与したいチーム or ユーザーを選択し、[保存]をクリックします。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/9a9dd30d-71b6-18fd-ebf3-375bc82b3dd7.png" width=70%>

::: note
ユーザーで個別で付与するのが面倒な場合、チームを設定しておくのが良いです。
:::

ユーザーが追加されたら、完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/78a2045f-52f0-0894-c7b1-6a506f569562.png)


# 動作の確認

#### 1. すべての(CRU)権限を持つユーザー
##### フォーム画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/7b366383-f011-9c9d-8cdb-7a637d179ec1.png)
##### ビュー画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/2e88dc56-b691-442e-21cf-1fd3fff6ed6a.png)


#### 2. 読み取りのみ権限を持つユーザー

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/c762d969-d58b-16c0-55ea-6babee39342b.png" width=60%>

##### フォーム画面
クリックしても変更できません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/d8bf3e9d-08a3-2cdf-c94b-784898d044f0.png)

##### ビュー画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/ad61fdb9-b958-1424-4914-48e58bee9353.png)

#### 3. すべての権限がないユーザー
##### フォーム画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/1569fd82-5c9a-9fbb-f7f1-7097d241fe9c.png)

##### ビュー画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/8695f762-1139-42fc-3b82-7e9b941656ff.png)



# まとめ
今回はDataverseの列ごとの権限付与方法についてまとめました。
セキュリティロールと組み合わせて、権限を細かく設定していきましょう！

https://docs.microsoft.com/ja-jp/power-platform/admin/field-level-security