アプリ開発の調査にかかる
時間を削減したい
内製化支援サービス
アプリを自分たちで
作成できるようになりたい
DX人材育成プログラム
プロに開発を依頼したい
アプリ開発導入支援サービス
機能拡張サービス
X-SP Feature
デザイン拡張サービス
X-SP Design
モダン化から運用管理までサポート
構築支援サービス
💡 この記事でわかること
本記事では、Dataverseにおける列レベルのセキュリティについて紹介しています。
電話番号列を営業部は見れるけど経理部からは見えないなど、列単位での閲覧や操作の制限について、3ステップのハンズオン形式で解説していきます。
- 列レベルのセキュリティとは?
- データ列 セキュリティプロファイルの作り方
- 作成したプロファイルを部署へ割り当てる手順
伊礼 圭吾いれい けいご
得意領域
Power Platformの設計・開発・コンサルティングを担当しています。既存システムからの移行検証や、Power Platformの特性に合わせた再設計はお任せください!
保有資格
今回の記事では、Dataverseの列レベルのセキュリティをハンズオン形式で解説していきます。
Power Apps・Power AutomateやDataverseの導入・活用でお困りの方は、アーティサンのサービスもあわせてご覧ください。
はじめに
こんにちは、アーティサンの伊礼(いれい)です。
これまで全6回にわたって、Dataverse入門シリーズとしてDataverseのテーブル作成からモデル駆動型アプリの構築、そしてセキュリティロールによる権限管理まで解説してきました。
【このシリーズの過去回一覧】
-
Dataverse入門(1)!商品管理アプリを作ってみる-Dataverseテーブルの作り方
-
Dataverse入門(2)!テーブルに列を追加してみる-列の型の決め方-
-
Dataverse入門(3)!リレーションでデータを構造化する-テーブル間の連携とは?
-
Dataverse入門(4)!代替キーってどんな場面で役に立つの?-データの重複を許さない
-
Dataverse入門(5)!モデル駆動型アプリの作り方-キャンバスアプリとの違いは?
-
Dataverse入門(6)!テーブルへのアクセス権限を管理する-部署とセキュリティロールを使いこなそう
-
Dataverse応用(1)!列レベルのセキュリティを設定してみよう!-特定の列だけマスクする
今回からは入門編で培った基礎をベースに、もう一歩踏み込んだDataverseの活用法をお届けする応用編をスタートします!
応用編の第1回となる今回のテーマは、「列レベルのセキュリティ」です。
入門編の第6回では、部署(ビジネスユニット)とセキュリティロールを使って、テーブルやレコード単位でアクセス権限を制御する方法を解説しました。
しかし、実務ではこんな要件に遭遇することはないでしょうか?
経理部にも顧客データを閲覧させたいけど、電話番号やメールアドレスなどの個人情報は見せたくない
顧客レコードは共有したいが、営業メモや社内評価など、担当者だけが見える列を作りたい
人事データのうち、給与額だけは特定の管理者にしか閲覧・編集させたくない
テーブルごと・レコードごとの権限設定だけでは、こうした「特定の列だけ隠したい」という要件には対応できません。
そこで登場するのがDataverseの機能である「列レベルのセキュリティ」です!
それでは今回も、ハンズオン形式で列レベルのセキュリティの実装を解説していきます!
列レベルのセキュリティとは
ハンズオンに入る前に、まずは列レベルのセキュリティの仕組みを整理しておきましょう。
テーブル・レコード単位のセキュリティとの違い
入門編で解説したセキュリティロールは、以下のような粒度で権限を制御するものでした。
制御の粒度 | セキュリティロールでの制御 |
|---|---|
テーブル単位 | テーブルに対する操作(作成/読み取り/書き込み/削除など)を制御 |
レコード単位 | レコードの所有者や所属する部署をもとに閲覧範囲を制御 |
列単位 | セキュリティロールだけでは制御できない |
このように、セキュリティロールでは列単位の制御ができないため、「テーブルの読み取りは許可するけど、特定の列だけ隠す」といった要件には対応できませんでした。
これを可能にするのが、列レベルのセキュリティです!
列レベル セキュリティの例 – Power Platform | Microsoft Learn
列レベルのセキュリティの考え方
列レベルのセキュリティは、以下の3つの要素で構成されています。
要素 | 役割 |
|---|---|
列セキュリティの有効化 | 対象の列に対して列セキュリティを有効にするというフラグを立てる |
データ列セキュリティ プロファイル | 列に対する読み取り/更新/作成の許可を定義するプロファイル |
プロファイルへのユーザー/チーム割り当て | プロファイルに対象のユーザーや部署を紐づけることで、アクセスを許可する |
ポイントは、列セキュリティを有効にした時点で、対象の列はすべてのユーザーに対してマスクされるということです。
つまり、列レベルのセキュリティは「一旦すべてのユーザーをブロックしてから、閲覧を許可したユーザーにだけ開放する」というホワイトリスト方式の考え方で設計されています。
今回のシナリオ
今回のハンズオンでは、入門編の第6回で構築した以下の組織構造とセキュリティロールをそのまま利用していきます。
【このシリーズの過去回一覧】
-
Dataverse入門(1)!商品管理アプリを作ってみる-Dataverseテーブルの作り方
-
Dataverse入門(2)!テーブルに列を追加してみる-列の型の決め方-
-
Dataverse入門(3)!リレーションでデータを構造化する-テーブル間の連携とは?
-
Dataverse入門(4)!代替キーってどんな場面で役に立つの?-データの重複を許さない
-
Dataverse入門(5)!モデル駆動型アプリの作り方-キャンバスアプリとの違いは?
-
Dataverse入門(6)!テーブルへのアクセス権限を管理する-部署とセキュリティロールを使いこなそう
-
Dataverse応用(1)!列レベルのセキュリティを設定してみよう!-特定の列だけマスクする

入門編のハンズオンでは、経理部のPattiさんには「組織レベルの読み取り権限」が付与されているため、すべての顧客レコードを閲覧できる状態でした。
しかし今回は、以下のような要件を追加で実装してみます。
つまり、同じ顧客レコードを見ていても、営業部のユーザーには電話番号が表示され、経理部のユーザーにはマスクされている、という状態を作ります!
要件 | 内容 |
|---|---|
要件1 | 経理部のユーザーには、顧客テーブルの「電話番号」列を見せないようにする |
要件2 | 営業部(法人営業課・自治体営業課を含む)のユーザーには、「電話番号」列の読み取り・更新・作成をすべて許可する |
ハンズオン:列レベルのセキュリティを設定する
それでは、実際に設定していきましょう!
1. 列セキュリティを有効にする
まずは、マスク対象となる「電話番号」列のセキュリティ設定を有効にしましょう。
Power Appsのテーブル管理画面から、入門編で作成した顧客テーブルの列の一覧を開き、「電話番号」列の設定画面を表示します。
「全般」セクションの中に「列セキュリティを有効にする」という項目がありますので、ここにチェックを入れて「保存」しましょう!

これだけで、電話番号列がすべてのユーザーに対してマスクされる状態になります!
列セキュリティを有効にすると、システム管理者を含むすべてのユーザーに対して列がマスクされます。
プロファイルを作成してアクセスを許可するまで、誰もその列を読み取れなくなりますので、設定のタイミングには注意しましょう!
2. データ列セキュリティ プロファイルを作成する
続いて、「誰に電話番号列へのアクセスを許可するか」を定義するプロファイルを作成していきます。
Power Platform 管理センターを開き、画面左のタブから「管理」→「環境」を開いて、対象の環境を選択します。
環境の管理画面が表示されたら、画面上部のタブから「設定」を選択します。

「ユーザーとアクセス許可」を開き、「データ列セキュリティ プロファイル」を選択します。

データ列セキュリティ プロファイルの一覧画面が表示されるので、画面右上の「+ 新しいプロファイル」から新しいプロファイルを作成しましょう!

プロファイル名は、用途が分かりやすい名前をつけておくと管理しやすくなります。
3. 列のアクセス許可を設定する
新しいプロファイルが作成できたら、作成したプロファイルを開いてみましょう。
すると、「列のアクセス許可」タブの中に、先ほど列セキュリティを有効にした「電話番号」列が表示されているのが確認できます!
「電話番号」列を選択した状態で、画面上部の「編集」をクリックして、以下の通りアクセス許可を設定しましょう。

読み取り:許可する
更新:許可する
作成:許可する
このプロファイルに紐づけられたユーザーやチームは、電話番号列の読み取り、更新、作成のすべてが許可される設定になります。
4. チーム(部署)をプロファイルに割り当てる
「列のアクセス許可」の設定が完了したら、続いて「チーム」タブを開きましょう。
「+ チームを追加するにはここをクリック」とありますので、クリックしてチームの追加メニューを開きます。

ここでは「電話番号列へのアクセスを許可したい部署」を追加する必要があります。
今回は経理部を除いた、以下の部署を追加して「追加」をクリックします。
営業部
法人営業課
自治体営業課
部署をプロファイルに割り当てる際の注意点として、セキュリティロールとは異なり、上位の部署を追加しても配下の部署が自動的に含まれるわけではありません。
そのため、配下の部署もすべて個別に追加してあげる必要があります。
以上でデータ列セキュリティ プロファイルの作成と設定は完了です!
動作確認:営業部と経理部で見え方を比較する
それではモデル駆動型アプリに戻って、設定が正しく反映されているか確認していきましょう!
「営業部長のJohannaさん」と「経理部のPattiさん」の画面を比べてみます。
Johanna部長の画面
Pattiさんの画面
営業部に所属していて、電話番号列へのアクセスが許可されているJohanna部長は、これまで通り電話番号の値を閲覧できています。
一方で、経理部に所属していて、プロファイルに含まれていないPattiさんの画面では、電話番号列の欄がマスクされ、値が入っているかどうかも分からない状態になっています!
このように、同じテーブルの同じレコードであっても、列単位でアクセス制御を行うことができるのが、列レベルのセキュリティの特長です!
おわりに
以上、Dataverse応用編の第1回では「列レベルのセキュリティ」を解説しました!
改めて設定の手順をまとめると、以下の3ステップとなります。
対象列の設定で「列セキュリティを有効にする」にチェック
管理センターでプロファイルを作成し、列へのアクセス許可(読み取り/更新/作成)を設定
プロファイルにアクセスを許可する部署を追加
たった3ステップと設定自体は非常に簡単でしたが、
今回ご紹介した列レベルのセキュリティと、これまでに解説してきた部署、セキュリティロールの設定を活用することで、
ExcelやSharePointリストでは実現が難しかったきめ細かな権限管理をDataverseの標準機能だけで実装できてしまいます!
テーブル単位、レコード単位、列単位でアクセス権限を設定することができれば、権限管理における大抵の要件をカバーできるようになります。
Dataverseを活用する中で、「この列だけ見せたくない」「特定の部署だけ編集させたい」といった要件が出てきた際には、ぜひ今回の内容を参考にしてみてください!
今後も引き続き、Dataverseの応用的な機能をご紹介していきますので、楽しみにしていてください!
【こちらも合わせて読みたい】
「Dataverseの権限管理をきちんと整備したい」「Power Platformを社内でより効果的に活用したい」とお考えの方は、アーティサンの導入支援・内製化支援サービスをぜひご活用ください。
伊礼 圭吾いれい けいご
得意領域
Power Platformの設計・開発・コンサルティングを担当しています。既存システムからの移行検証や、Power Platformの特性に合わせた再設計はお任せください!
保有資格


それでは!