Share via


フィールド値へのアクセスを制御するためのフィールド セキュリティを使用する

Dynamics 365 Customer Engagement (on-premises) では、フィールド レベル セキュリティを使用して、ビジネスに対する影響が大きいフィールドへのアクセスを、特定のユーザーおよびチームに制限します。 たとえば、顧客の信用度スコアの読み取りまたは更新を特定のユーザーだけに許可するには、これを使用します。 このリリースでは、フィールドレベルのセキュリティはカスタム フィールドと多くの標準フィールド (OOB) の両方に適用できます。

フィールドへのアクセスを制限する手順は次のとおりです。

  1. 属性のフィールドレベル セキュリティの有効化

  2. フィールドレベル セキュリティ プロファイルの作成

  3. ユーザーまたはチームをプロファイルに関連付ける

  4. 特定の属性の特定のフィールドのアクセス許可 (作成、更新、読み取りなど) をプロファイルに追加する

    次の図は、ロール ベースのセキュリティ、レコード ベースのセキュリティ、およびフィールド レベルのセキュリティの間のやり取りを示しています。

    フィールド レベルのセキュリティと比較したロール ベースのセキュリティ。

    ロールベースのセキュリティでは特定のエンティティの種類、レコードベースのセキュリティでは個々のレコード、フィールドレベルのセキュリティでは特定のフィールドを確認できます。

    ビデオ :Microsoft Dynamics CRM 2015 におけるフィールド レベル セキュリティ

よくあるご質問

どの属性を保護できますか。

どの属性を保護できるかを確認するには、次のプロパティのエンティティ メタデータを照会できます。

  • CanBeSecuredForCreate

  • CanBeSecuredForRead

  • CanBeSecuredForUpdate

    保護できる属性は数千とあります。この情報を検索する 2 つの簡単な方法があります。 組織のエンティティ メタデータを表示するには、メタデータ ブラウザー ソリューションをインストールしてください。メタデータ ブラウザー ソリューションについては、「組織のメタデータの参照」を参照してください。 「エンティティ参照」でエンティティの参照ドキュメントを参照することもできます。

    特定の属性のデータの種類に適用するそのほかのいくつかのルールがあります。

  • ブール型属性は、作成、更新操作に保護されていますが、読み取りには保護されていません。

  • オプション セット属性は、既定値が指定されていない場合、作成、更新、および読み取りに保護されています。

セキュリティで保護されたフィールドを表示するためのセキュリティ ロール

システム管理者のフィールド セキュリティ プロファイルでは、Dynamics 365 Customer Engagement (on-premises) のセキュリティで保護されたすべてのフィールドに対するフル アクセスが付与されます。 既定では、システム管理者のセキュリティ ロールを持つすべてのユーザーにこのプロファイルが割り当てられます。 このプロファイルはシステムで管理され、更新または削除することはできません。

Retrieve および RetrieveMultiple に対するセキュリティで保護されたフィールドの動作方法

Dynamics 365 Customer Engagement (on-premises) では、Retrieve または RetrieveMultiple メソッド (あるいはメッセージ) を呼び出すと、取得する各レコード (これは通常のセキュリティ プロセスです) とセキュリティで保護された各フィールドに対するアクセス権が呼び出し元と偽装ユーザーにあるかどうかが評価されます。 呼び出し元にアクセス権のないセキュリティで保護されたフィールドが条件に含まれている場合、この呼び出しでは例外はスローされません。 その代わりに、セキュリティで保護されたフィールドが出力列セットの一部である場合は、そのフィールドに対して null 値が返されます。

セキュリティで保護されたフィールドに対する複数の動作の取得については、以下で詳しく説明します。

セキュリティで保護された属性が列セットに含まれている場合

列セットに含まれているセキュリティで保護されたフィールドに対する読み取りアクセス権が呼び出し元 (または偽装ユーザー) にない場合、値は null として返されます。 null 値が、データがないために返される場合とアクセス権が不十分なために返される場合の違いは判断できません。

セキュリティで保護された属性がフィルター条件に含まれている場合

フィルター条件に含まれているセキュリティで保護されたフィールドに対するアクセス権が呼び出し元 (または偽装ユーザー) にない場合、フィールド値はフィルターの評価中に null に置き換えられます。

次の表では、呼び出し元はアスタリスク(*)で示されているものを除いて、すべての属性にアクセスできます。

レコード番号 Name 属性の値 Description 属性の値 Can Be Contacted 属性の値
1 A AAA
2 B BBB
3 C CCC True*
4 D DDD Null
5* E* EEE* Null*

フィルターが CanbeContacted == True の場合、返されるのはレコード 1 のみです。

フィルターが IsNULL (CanbeContacted) の場合、レコード 3 および 4 が返されます。 レコード 3 はユーザーには表示されないため、条件の評価時に、このレコードは null として扱われ、ISNull に対して True と評価されます。

セキュリティで保護された属性で集計を行う場合

セキュリティで保護された値は null 値に置き換えられるため、通常の SQL による集計の動作が適用されます。

セキュリティで保護された属性でグループ化を行う場合

グループ化に使用する属性に対するアクセス権が呼び出し元 (または偽装ユーザー) にない場合、値は null として扱われ、結果はすべての null 値と共にグループ化されます。

次の例の場合、呼び出し元はいくつかの属性にアクセスできます。 太字は、属性に対するアクセス権がないことを示し、 でも示されます。*斜体 は、呼び出し元に読み取りアクセス権のないレコードを示し、** でも示されます。

名前 内容 受注数 完了状態
A AAA 1 WA
B BBB 4 WA
C CCC 4 CA
D** DDD** 3** MA**
E EEE 0 神奈川県
F FFF 0 WA*
G GGG 2 CA*

Select State, Total(orders) Group by (STATE) の結果は次のようになります。

WA–5

CA–4

null–2

セキュリティで保護された属性で並べ替えを行う場合

条件による並べ替えに含まれているセキュリティで保護されたフィールドに対するアクセス権が呼び出し元 (または偽装ユーザー) にない場合、値は null の場合と同様に扱われます。

次の例の場合、呼び出し元はプレーン テキストの属性にアクセスできます。 太字は、属性に対するアクセス権がないことを示し、アスタリスク () でも示されます。*斜体 は、呼び出し元に読み取りアクセス権のないレコードを示し、** でも示されます。

Name 内容 CanbeContacted
A AAA
B BBB
C CCC* True*
D DDD Null
E EEE* Null*
F** FFF** True**
G Null はい

Select Name order by Description ascending の結果は次のようになります。

{G、E、C}、A、B、D、が返されます。

Create または Update に対するセキュリティで保護されたフィールドの動作方法

プログラマは、Create メソッドと Update メソッドを使用するクライアントを構築できます。これらのメソッドはセキュリティで保護されたフィールドを操作します。 Create メソッドまたは Update メソッドを呼び出して、セキュリティで保護されたフィールドに対してデータが渡され、呼び出し元に十分なアクセス許可がない場合は、例外がスローされます。

レコードを共有する場合のセキュリティで保護されたフィールドの動作方法

レコードのセキュリティで保護されたフィールドにアクセスできるユーザーは、そのレコードを他のユーザーまたはチームと共有できます。 このユーザーは、レコード上で自分が所有しているアクセス権のみ付与できます。 たとえば、レコードを共有して Update 特権を付与するユーザーには更新の特権が必要です。

Read または Update (あるいはその両方) を使用して、特定のレコードのセキュリティで保護されたフィールドをセキュリティ プリンシパル (ユーザーまたはチーム) と共有できます。 これで、レコードを共有したユーザーまたはチーム メンバーは、この種類のセキュリティで保護されたフィールドにアクセスできるようになります。これが可能なのは、レコードを共有したユーザーまたはチーム メンバーがアクセス権を付与するフィールド セキュリティ プロファイルを所有していない場合であっても、その特定のレコードでのみ共有されるセキュリティで保護されたフィールド上に限られます

フィルター ビューに対するセキュリティで保護されたフィールドの動作方法

管理者は、アプリケーションでアクセスするための多数のフィールドをセキュリティで保護し、レポートではそれらのフィールドにアクセスできないようにする必要があります。 これにより、すべてのユーザーに対して同じレポートのセットが維持されます。 呼び出し元のユーザーがそのフィールドに対する承認を得ていない場合、フィルター ビューでは、セキュリティで保護されたフィールドに対してデータが返されません。 いずれかのビューの属性に対してフィールド セキュリティが適用されない場合、フィルター ビューは完全なデータを返します。

オフライン同期に対するセキュリティで保護されたフィールドの動作方法

オフラインで Dynamics 365 for Microsoft Office Outlook を使用している場合は、アクセスが可能なセキュリティで保護されたフィールドの値のみがオフライン データベースに複製されます。 アクセスできないデータはオフラインでは保存されません。

関連項目

ビデオ :Microsoft Dynamics CRM 2015 におけるフィールド レベル セキュリティ
Microsoft Dynamics 365 Customer Engagement のセキュリティ モデル
ロールベースのセキュリティを使用して Microsoft Dynamics 365 Customer Engagement でエンティティへのアクセスを制御する方法
レコード ベースのセキュリティを使用してレコードへのアクセスをコントロールする