Dynamics 365 (Dynamics CRM) リペアレント設定の動作
みなさん、こんにちは。
先日、以下のような問合せを受けました。
サポート案件のレコードが見えないはずのユーザーにも表示されている。
共有も行っていないが、なぜ見えてしまうのか?見えるようになっているユーザーは取引先企業の所有者のよう。
実はこれ、以前記事に書きましたが、関連付け動作の設定が関係しています。
どの動作の伝播設定が影響しているかわかるでしょうか?
これはリペアレント動作の設定が影響しています。
リペアレントって何?となっている方も多くいるかと思いますので、今回は、リペアレント設定の動作について少し詳しく見ていきたいと思います。
リペアレントとは・・・
リペアレントは、主レコードの所有者に対して関連レコードのアクセス権が与えられる(暗黙的に共有が行われる)というものです。そのため、主レコードより関連レコードの方が機密性が高い場合はリペアレントの伝播は行わないようにする必要があります。
リペアレントの動作
それでは、実際にリペアレントがどのように動作するかを見ていきます。
まず、次のようなセキュリティロールを用意します。
- 取引先企業の全レコードが参照可能
- サポート案件は自分が所有するレコードのみ参照可能
これらのロールを2ユーザーに付与し、以下の操作を実施します。
(前提として、取引先企業とサポート案件は、標準で上位下位の関連付け設定がされており、伝播の設定もされています。)
- User01が取引先企業(取引先企業A user01作成)を作成
- User01が1の取引先企業に紐づくサポート案件(サポート案件A user01作成)を作成
- User02が1の取引先企業に紐づくサポート案件(サポート案件B user02作成)を作成
さて、User01、User02で「取引先企業A user01作成」に紐づくサポート案件レコードを確認するとどのようになっているでしょうか?
User01からサポート案件を確認
User01で「取引先企業A user01作成」に紐づくサポート案件を確認するとUser01が作成したサポート案件(サポート案件A user01作成)とUser02が作成したサポート案件(サポート案件B user02作成)の2レコードが表示されていることが分かります。
User02が作成したサポート案件は、セキュリティロールの設定上は見えないはずのレコードですが、リペアレントの伝播の設定により、暗黙的な共有が行われ参照可能となっています。
User02からサポート案件を確認
一方、User02から作成するとUser02が作成したサポート案件Bのみが表示されています。
以上のように、リペアレント動作の伝播設定により、主レコードの所有者に対して関連レコードのアクセス権が与えられるということが分かっていただけたのではないでしょうか。
今後、各エンティティのアクセス権を検討する際には、リペアレントにも注意を払っていただければと思います。