Udemy 新コース: 作って学ぶAI Builder!

Dataverse マスキングルールによる重要な情報の漏洩防止 | Power Platform

API KEYなどはAzure Key Vault で管理することができますが、顧客とのやり取りなどで発生する重要なデータ、例えば個人情報やパスワードは全て又は一部をマスクしてユーザーに表示して、スクリーンショットやExcel 一括出力での漏洩を防ぎたいたいことがあるかと思います。

そのための機能としてマスキングルールがプレビューしています。この機能を使えば、Excel で一括出力しても、Dataverse コネクターからアクセスしても、アプリからアクセスしてもデータはマスキングされで出力されます。

また、そのマスクのルールを設定することができます。

今回はその機能の利用方法や注意点についてご紹介します。

マスキング ルールの作成と管理 (プレビュー) – Power Platform | Microsoft Learn

既知の制限

まずは制限事項についてご紹介します。

プレビュー中の制限と予定

現時点、プレビューとして以下の機能制限があり、マスクしていると権限があっても直接アプリから生の値を読み取ることはできませんが、監査ログやパラメーターを渡したAPI 経由では生の値を確認できます。

機能プレビュー中の制限今後の予定
フォーム上のマスク
されていない値
を読み取る
マスクされた値は詳細/メイン
フォームに表示されます。
現時点、権限が割り当てられても
アプリから読み取ることは出来ません。
今後のリリースでは、マスクされていない
値を読み取る権限を持つユーザーが、
マスクされていない値を読むことができるように
するためのボタンが追加される予定です。
監査ログマスクされていない値が
監査ログに表示されます。
今後のリリースでは、マスクされていない
値を読み取る権限を持つユーザーが、
マスクされていない値を読むことができるようにするための
ボタンが追加される予定です。

プレビュー時点でマスクした値を読み取る方法

Power Automate 経由であれば、Dataverse API に対して「HTTP 要求を送信する」 HTTP with Entra ID (事前承認済み) アクションなどを利用して、パラメーター UnMaskedData=true を渡す必要があります。

この方法は後続のテストのセクションで紹介します。

ステップ

以下のステップでマスキングルールをデータに設定することができます。

ソリューションを作成する (オプション)

もし適切なソリューションがなければ作成します。

テーブルを作成する (オプション)

もしマスキングしたい列を持つテーブルがなければ作成します。

チームを作成する (オプション)

既存で適切なチームがない、または、ユーザーに対してルールを設定しない場合はマスキングルールの権限ごとにチームを作成します。

マスキングルールを作成する

マスキングルールを作成します。マスキングルールはマスクしたい条件ことに作成します。複数の列に同じルールを設定することができるため、列ごとに作成する必要はありません。

列のセキュリティプロファイルを作成する

列のセキュリティプロファイルを設定し、そのプロファイルが対象となるユーザーまたはチームを設定します。

マスキングしたい列にマスキングルールを割り当てる

マスキングしたい列にマスキングルールを割り当てることでルールを有効化することができます。

設定手順

マスキングルール

今回は既存のソリューションで既存のテーブルから一つの列に対してマスキングルールを設定します。

ソリューションではセキュアマスキングルールという名前になっています。これを作成します。

マスキングルールは、正規表現で条件を作成することができます。

以下はマイクロソフトから提供されている正規表現で、記載方法の参考になります。必要に応じて確認してください。

今回はこれを利用せずに簡単なルールを紹介します。

Regular expressionOriginal valuesMasked values
\d(?=\d{2}-\d{2}-\d{4}\|\d-\d{2}-\d{4}\|-\d{2}-\d{4}\|\d-\d{4}\|-\d{4})SSN 
123-45-6789
SSN 
###-##-6789
[STFGM]\d{4}AccountNbr 
A1234567z
AccountNbr 
#567z
(?:4[0-9]{12}(?:[0-9]{3})?\|[25][1-7][0-9]{14}\|6(?:011\|5[0-9][0-9])[0-9]{12}\|3[47][0-9]{13}\|3(?:0[0-5]\|[68][0-9])[0-9]{11}\|(?:2131\|1800\|35\d{3})\d{11})MasterCard 
5678912345678912
MasterCard 
#
(?:4[0-9]{12}(?:[0-9]{3})?\|[25][1-7][0-9]{14}\|6(?:011\|5[0-9][0-9])[0-9]{12}\|3[47][0-9]{13}\|3(?:0[0-5]\|[68][0-9])[0-9]{11}\|(?:2131\|1800\|35\d{3})\d{11})Visa 
4567891234567891
Visa 
#
\S+@\S+\.\S+Email 
name@sample.com
Email 
#

Create and manage masking rules (preview) – Power Platform | Microsoft Learn

https://learn.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference

今回はこちらのテーブルを特に使わず、シンプルな正規表現でマスクしてみます。

項目データ
Namegeek_SSN
Display NameSSN
DescriptionSSN
Regular Expression.
Masked Character

このように設定することでパスワードの保護っぽくなります。

桁数は数えればわかるようなイメージです。記号含むあらゆる文字が指定した文字に置き換えられます。

列のセキュリティプロファイル

列のセキュリティプロファイルを作成します。

列レベルでのセキュリティの有効化または無効化 – Power Platform | Microsoft Learn

Power Platform 管理センターの設定からも列セキュリティは設定可能

ソリューション内からの作成のほかに、Power Platform 管理センターから列のセキュリティプロファイルを設定することが出来ます。

こちらからユーザーを追加しておきます。

実際の運用としてはチームで権限を追加したほうがいいでしょう。

さらに権限を設定します。

後続のテストにて、動作を紹介します

列のセキュリティ プロファイルにチームまたはユーザーを追加してアクセスを制御する – Power Platform | Microsoft Learn

列へのルールの設定

列セキュリティを有効にし、マスキングルールを割り当てます。

これで設定は完了です。

テスト

列のセキュリティプロファイルでの権限の割り当て

列のセキュリティプロファイルにて許可無しで試してみます。

プレビューでは、許可があってもなくても読み取ることは出来ません。今後ボタンが追加されて切り替えができるようになる予定です。

Dataverse API から生の値の取得

Dataverse API から特定のパラメーターを渡すことで値を読み取ることができます。その実行ユーザーには列のセキュリティプロファイルで読み取り権限が必要です。ということで許可してみます。

実行ユーザーの権限は以下のようになっています。

アクションに設定するエンドポイントに必要な情報は以下のとおりです。<url><table collection name><recordid> を独自の値に置き換えてください。

  • レコード内のすべての列の値を取得する場合のURI:
    https://<url>/api/data/v9.2/<table collection name>(<recordid>)?UnMaskedData=true
  • マスクされた列の値のみ取得する場合のURI:
    <column_name> はマスクしている列名に置き換えてください。
    https://<url>/api/data/v9.1/<table collection name>(<recordid>)?$select=<column_name>&UnMaskedData=true

この UnMaskedData=true の部分があるとないとでマスキングされるかされないかが決まります。

例としてはこのようになります。

URI
https://xxx.crm7.dynamics.com/api/data/v9.2/geek_tables(xxxx-xxxx-xxxx-xxxx)?UnMaskedData=true

このURIに対して、HTTP with Entra ID (事前承認済み) の「HTTP 要求を呼び出します」アクションを利用して実行すると生のデータを取得することが出来ます。

この際、権限がないとマスクした値が見えます。例: ●●●●●●

また、パラメーターを渡すことができないため、Dataverse のコネクタを利用してもマスクした値が取得されます。

以上、ご参考になれば幸いです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Index