Dataverse.Unmask 関数

適用対象: キャンバス アプリ

1 つのMicrosoft Dataverse レコードに対して、セキュリティで保護された列のマスクされていない値を要求します。

Description

Dataverse.Unmask関数は、列を非同期的に読み取り、列の Power Fx 型の 1 つの値を返します。 レコードやテーブルを返したり、ソース レコードを更新したり、マスク ルールを変更したり、アプリ内の別の場所でマスクされた値を置き換えたりすることはありません。

Dataverse では、ユーザーのアクセス許可が適用されます。 この関数は、アクセス権を付与したり、列レベルのセキュリティをバイパスしたりしません。 マスクされていない値を読み取るために、ユーザーはテーブルとレコード、列 の読み取り アクセス許可、および列セキュリティ プロファイルの適切な マスクされていない読み取り アクセス許可にアクセスする必要があります。

キャンバス アプリにデータ ソースとして Dataverse テーブルを追加し、列の列レベルのセキュリティを有効にします。 マスクを構成するには、マネージド環境でサポートされているマスク 規則を適用します。 セキュリティで保護された列には、必ずしもマスク規則はありません。 構成、アクセス許可オプション、サポートされているマスク ルールの種類については、「列レベルのセキュリティ」と「マスク ルールの作成と管理」を参照してください。

Important

管理者に、シナリオに適 したマスクされていない読み取り アクセス許可を選択してもらう。 単一レコードの例を有効にするためだけに すべてのレコード を付与しないでください。 列レベルのセキュリティではシステム管理者からデータが非表示にならないため、管理者以外のアカウントでアクセス制限をテストします。

Syntax

Dataverse.Unmask( Record, Column )
  • レコード - 必須。 Dataverse レコード ID を保持し、1 つの Dataverse データ ソースに関連付けられているレコード。
  • 列 - 必須。 そのレコードでサポートされているセキュリティで保護されたスカラー列の識別子。 列名を含むテキスト式ではなく、列識別子を指定します。

列には有効な表示名または論理名を使用できます。 'Sensitive reference'など、スペースを含む表示名を囲む単一引用符を使用します。 二重引用符はテキスト リテラルを作成し、同等ではありません。 Power Appsは、識別子を列の論理名に解決します。

レコードと列の要件

選択したギャラリー レコード、 LookUp によって返されるレコード、または変数またはコレクションに格納されているレコードは、Dataverse ID を保持し、正確に 1 つの Dataverse ソースと関連付ける場合に使用できます。 同じフィールド値を持つ匿名レコードを構築しても、その ID は確立されません。

異なる Dataverse テーブルのレコードを、 Dataverse.Unmaskで使用される同じレコード変数に割り当てないでください。 このような変数は複数のソースに関連付けられているので、テーブルに一致する名前のセキュリティで保護された列がある場合でも拒否されます。 個別の単一ソース変数または呼び出しを使用します。

ターゲット列はセキュリティで保護され、サポートされているスカラー型である必要があります。 ルックアップ値、レコード、テーブル、ファイル、イメージ、および型指定されていない列は、サポート対象ではありません。 ルックアップによるレコードの読み取りは、ルックアップ値列のマスク解除とは異なります。 サポートされているマスク シナリオについては、 マスク ルールのドキュメント を参照してください。数式の種類の受け入れでは、列に対してマスクルールを構成できることを確立しません。

戻り値とエラー

結果の Power Fx の種類はターゲット列と同じです。 たとえば、テキスト列は、テキストを含むレコードではなく、テキストを返します。

失敗した読み取りを処理するには 、IfError を使用します。 Dataverse は、アクセスが制限されている場合の応答を決定します。すべてのアクセス許可拒否が HTTP エラーを生成するとは考えないでください。

状況 Behavior
レコードに Dataverse ソースが関連付けられていないか、複数の Dataverse ソースがあります。 Power Apps Studio はレコード引数を拒否します。
列が不明か、セキュリティで保護されていないか、サポートされていない型です。 Power Apps Studio は列引数を拒否します。
非空白レコードには、実行時に有効な ID がないか、Dataverse ソースを解決できません。 この関数は、無効なレコード エラーを返します。
Dataverse 要求が失敗します。 この関数は、 IfError で処理できる Power Fx エラーを返します。
成功した要求は行を返さなかったり、要求された列を省略したり、null 値を返したりします。 結果は空白です。

空白の結果だけでは、アクセス許可の問題は特定されません。 空の結果をエラーとして扱う前に、選択したレコード、その値、およびユーザーのアクセス権を確認します。

例示

これらの例では、dataverse テーブルCustomers'Sensitive reference'という名前のセキュリティで保護されたテキスト列を使用します。 テーブルをデータ ソースとして追加し、マスク ルールを構成し、適切なアクセス許可を持つテスト ユーザーと共に合成レコードを使用します。 テーブル名と列名を独自の名前に置き換えます。

選択したレコードの読み取り

ギャラリーの Items プロパティを Customersに設定します。 保存されたレコードを選択すると、この数式はマスクされていない参照を要求します。

Dataverse.Unmask( Gallery1.Selected, 'Sensitive reference' )

格納された値が "REF-12345" され、ユーザーがマスクされていない値を読み取るアクセス許可を持っている場合、予期される結果はテキスト "REF-12345"になります。 数式では、 Gallery1.Selected.'Sensitive reference'で読み取られたマスクされた値は変更されません。

テキスト結果のエラーを処理する

マスクされていない値を表示するテキスト ラベルの Text プロパティで、次の数式を使用します。

IfError(
    Dataverse.Unmask( Gallery1.Selected, 'Sensitive reference' ),
    "Unable to show this value."
)

'Sensitive reference'はテキスト列であるため、置換値はテキストです。 サポートされている列の種類が異なる場合は、互換性のある置換値を使用するか、テキスト メッセージを返す前に結果を変換します。 IfError は エラーを処理しますが、空白の結果は正常に処理されません。

表示/非表示の操作の詳細については、「 マスクされた Dataverse 列の値を表示する」を参照してください。

データの処理

評価を繰り返し実行すると、新しいネットワーク要求を行う代わりに、キャッシュされた結果を再利用できます。 最近変更されたアクセス許可を再確認するために、別の評価に依存しないでください。 コントロールを非表示にすることは承認境界ではなく、キャッシュされた値をクリアしません。

SaveData でマスクされていない値を保持したり、ログに書き込んだり、保護されていないデータ ソースにコピーしたりしないでください。 スクリーンショットや診断添付ファイルでマスクされていないデータを公開しないようにします。