💡 この記事でわかること
本記事では、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応用(2)!オートナンバー列で自動採番する-実は多い注意点
-
Dataverse応用(3)!モデル駆動型アプリのコマンドバーをカスタマイズする-レコードを複製するボタンを追加してみる
今回からは入門編で培った基礎をベースに、もう一歩踏み込んだ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)!列レベルのセキュリティを設定してみよう!-特定の列だけマスクする
-
Dataverse応用(2)!オートナンバー列で自動採番する-実は多い注意点
-
Dataverse応用(3)!モデル駆動型アプリのコマンドバーをカスタマイズする-レコードを複製するボタンを追加してみる

入門編のハンズオンでは、経理部のPattiさんには「組織レベルの読み取り権限」が付与されているため、すべての顧客レコードを閲覧できる状態でした。
しかし今回は、以下のような要件を追加で実装してみます。
つまり、同じ顧客レコードを見ていても、営業部のユーザーには電話番号が表示され、経理部のユーザーにはマスクされている、という状態を作ります!
要件 | 内容 |
|---|---|
要件1 | 経理部のユーザーには、顧客テーブルの「電話番号」列を見せないようにする |
要件2 | 営業部(法人営業課・自治体営業課を含む)のユーザーには、「電話番号」列の読み取り・更新・作成をすべて許可する |








