フォームから列を外しても、その列は API・エクスポート・レポートから普通に読める。
列の機密を守るのはフィールドセキュリティプロファイル(列ごとに「許可した身分だけ可視」と設定するプロファイル)の仕事であり、フォーム編集とは別のレイヤーで動く。
「行は読めるのに、その列だけ null が返る」という状態を設定後に API で確認するまでが、設計の完了だ。


「フォームから外す」と「列を隠す」は別の操作

フォームから列を外すのは、画面(UI)からその欄を取り除く操作だ。モデル駆動アプリやキャンバスアプリのフォームデザイナーで列を削除すれば、その画面には表示されなくなる。

しかしそれは、Dataverse テーブルの列そのものが隠れたわけではない。別のビュー・別のフォーム・Web API・Excel エクスポート・Power BI レポート——どの経路からも当該列は依然として読める。

操作対象別の画面・API からの読み取り
フォームから列を外す特定のフォーム画面のみ読める
フィールドセキュリティプロファイルで保護テーブルの列単位・全入口許可がなければ null が返る

Microsoft Learn(2025年6月更新)には「列セキュリティの適用範囲は組織横断であり、クライアントアプリ・Web サービス呼び出し・フィルタービューを使ったレポートを含む全データアクセス要求に適用される」と明記されている。フォームを触っただけではこのレイヤーには一切届かない。


行の鍵と列の鍵は独立した 2 軸

Dataverse のアクセス制御には、独立した 2 つの軸がある。

  • 行の軸:どのレコードが見えるか(セキュリティロール、行レベルアクセス制御で制御)
  • 列の軸:見えるレコードの中でどの欄を読ませるか(フィールドセキュリティプロファイルで制御)

2 軸は直交する。行を読める権限を持つユーザーでも、列セキュリティが設定されていればその列の値は返ってこない。与信スコア・年収帯・人事評価コメントなど、同じテーブルの中に機密度の異なる列が混在する業態では、この 2 軸を意識した設計が必要になる。


フィールドセキュリティプロファイルの設定手順(4 ステップ)

設定は Power Apps と Power Platform 管理センターの 2 箇所を行き来する。

ステップ 1:列のセキュリティを有効にする
Power Apps > Dataverse > テーブル > 対象の列 > 詳細オプション > 「列のセキュリティを有効にする」をオン。この設定をした時点で、プロファイルが割り当たっていないユーザーはシステム管理者ロールでなければ当該列にアクセスできなくなる(既定は不可視)。

ステップ 2:列セキュリティプロファイルを作成
Power Platform 管理センター > 設定 > ユーザー + アクセス許可 > 列のセキュリティ プロファイル > 新規作成。プロファイルには任意の名前をつける(例:「与信閲覧者」「本部専用」)。

ステップ 3:プロファイルに列の権限を設定
プロファイルを開き、保護した列に対して Read / Create / Update の許可・不許可を設定する。読み取りだけ許可して更新は禁止、という細かい設定も可能だ。

ステップ 4:プロファイルをユーザーまたはチームに割り当て
プロファイルをユーザー個人またはチームに紐付ける。チームへの割り当てを使うと、組織変更時にプロファイルの再配布コストが下がる。


設定が本物かどうか——破壊検証の手順

設定後に確認せずに「閉じた」と思い込むのが最も危険な状態だ。許可を持たないユーザーの権限で Web API を叩き、null が返ることを実際に確かめる。

前提:許可のないユーザー(または検証用テストアカウント)で以下のリクエストを発行する。

GET https://<org>.api.crm.dynamics.com/api/data/v9.2/<テーブル複数形>?$select=<保護した列の論理名>

Microsoft Learn(2026年2月更新)には次の 2 点が明記されている。

  • 「セキュリティ保護された列の値を返す際のデフォルト API の動作は、データを返さないことである」
  • 「呼び出し元アプリケーションは、セキュリティによる null と実際の null を区別できない」

403 エラーが返るわけではない。列プロパティはレスポンスに含まれるが、値は null になっている。エラーが出ないからといって設定が効いていないとは判断できないし、null が返っているからといって設定漏れとも限らない。$select で明示指定して null が返ることを確認するのが破壊検証の正確な手順だ。

フォームやビュー上では、保護された列は空白や非表示ではなく「****」と鍵アイコンで表示される。これは「ここに値があるが、あなたには見せない」という設計上の意図的な表現で、フォームから列を外した際の「欄がない」とは視覚的にも意味が異なる。


全入口に適用される、ということの意味

フィールドセキュリティプロファイルの制御が適用されるコンポーネントは公式ドキュメント(2025年6月更新)で次のように列挙されている。

  • Dataverse Web サービス(Web API)
  • レポート
  • 検索(Search)
  • オフライン
  • フィルタービュー
  • 監査(Auditing)
  • 重複データ検出

「全入口に適用」とは、これらのどの経路を使っても同じ制御が機能するということだ。許可のないユーザーが Excel にエクスポートしても、Power BI レポートを作っても、保護列は null として扱われる。設定を一箇所で管理すれば、すべての出口が揃う。


データマスキング機能(2025 年 GA)——null の代わりに部分マスクを返す

2025 年に GA となったデータマスキング機能を使うと、null 返却の代わりに部分マスク済みの文字列を返せるようになった。正規表現でマスキングルールを定義し、たとえば「電話番号の末尾 4 桁だけ表示」「メールアドレスの @ 前を非表示」といった表示が可能になる。

対応する列タイプは数値列・単一行テキスト・複数行テキスト。適用はサーバーサイドで行われるため、フォーム・ビュー・API・エクスポートのどの経路でも一貫したマスク表示になる。

null を返すことで「列の存在自体を知らせない」設計をするか、部分マスクを返すことで「値はあるが読ませない」設計をするかは、業務要件に応じて選択する。


誠実な限界の開示

フィールドセキュリティプロファイルで「完全セキュア」とは言えない。主な限界は 2 点ある。

許可名簿の運用依存:誰にプロファイルを割り当てるかの判断と管理は運用側の責任だ。プロファイルを付けすぎれば制御が崩れ、付け忘れが重なれば意図した境界を保てない。技術的な設定と並行して「誰に、いつ、どのプロセスで付与・剥奪するか」の運用設計が必要になる。

全権管理者の扱い:セキュリティプロファイルが設定されていない場合、システム管理者ロールのみが当該列にアクセスできる、と公式ドキュメントに記載されている。管理者権限の扱いは組織のガバナンスポリシーで別途設計する。

列の機密境界を「構造に置く」ことはフィールドセキュリティプロファイルで実現できる。そこから先の「誰に開けるか」の運用設計は、設定者の責任範囲として引き受ける形になる。


まとめ

フォームから列を外すのは画面の話であり、列の機密を守る設定ではない。フィールドセキュリティプロファイルで「既定は不可視・許可した身分だけ可視」と設定し、破壊検証で null 返却を確認するまでが列の機密境界を引く作業だ。


次の一歩:Power Apps で対象列の「列のセキュリティを有効にする」をオンにし、Power Platform 管理センターでプロファイルを 1 つ作成する。設定後に許可のないアカウントで $select を使って Web API を叩き、null が返ることを確認する。

関連記事:行レベルのアクセス制御(どのレコードを見せるか)については「Dataverse のビューフィルターとアクセス制御——行レベルで見せる範囲を構造的に絞る」を参照。