こんにちは、Tech Blog初登場の石津です。
今回のブログテーマは、 「共有セットを用いたレコードアクセス制御」です。
不特定多数の外部ユーザ(顧客などの社外ユーザ)がSalesforceを使用する場合、 コミュニティ機能を利用した情報共有の実現を検討することがあるかと思います。 そしてそのコミュニティユーザに対し、Salesforce内のレコードを限られた範囲でのみ 参照可能とさせる場合、レコードアクセス権の制御が必要となりますが、 今回はカスタマーコミュニティライセンスのユーザに対するアクセス制御の 設定方法について、共有セットの機能を中心にご説明いたします。
Salesforceでは、特定オブジェクトのレコードアクセス権制御を行う場合、 「共有設定」を使用して、組織におけるオブジェクトレベルのアクセス権を制御します。 そして通常、社内ユーザに対しては「ロール」や「公開グループ」を用いた 「共有ルール」を使用して、組織で制限されたアクセス権を拡張します。
しかしながらカスタマーコミュニティライセンスをはじめとした一部の外部ユーザの ライセンスでは、ロールを設定することができず、共有ルールに含めることができません。
そのため、共有ルールに含めることが出来ない外部ユーザに対しては、 「共有セット」という機能を使用してアクセス権の制御を行います。
共有セットとは
取引先または取引先責任者に関連するレコードへのアクセス権を ポータルまたはコミュニティユーザに付与する機能。 特定のコミュニティユーザに非公開レコードを参照可能とさせるには、 そのレコードがコミュニティユーザ(取引先責任者)または取引先を参照している必要があります。
共有セットの設定
ここからは簡単な例をもとに設定方法を説明します。 取引先責任者(コミュニティユーザ)と参照関係を持つ「健康診断結果」という情報を 管理しているとします。
・「健康診断結果」レコードは社内ユーザの場合は すべてのレコードを参照/更新可能 としますが、 外部ユーザの場合は 自分の「健康診断結果」のみ参照可能 とします。
・「健康診断結果」レコードには「受診者(JushinUser__c)」という参照項目があり、 受診した外部ユーザ(取引先責任者)が選択されています。
それでは「健康診断結果」というカスタムオブジェクトに対して「共有セット」を使って 設定してみます。
共有セットを設定する
①「健康診断結果」を非公開に設定する
まず、外部ユーザには他人の「健康診断結果」レコードを参照させてはいけないという 要件があるので、「健康診断結果」オブジェクトの共有設定を『非公開』に設定します。
②共有ルールを設定する
社内ユーザにはすべての「健康診断結果」レコードを参照/更新可能とする 必要があるので、共有ルールを設定します。 今回は「内部ユーザが所有するレコードはすべての内部ユーザが参照・更新可能」としています。
③共有セットを設定する
- [カスタマイズ]>[コミュニティ]>[設定]のコミュニティ設定画面より、 共有セットの[新規]ボタンで共有セットを作成します。
- プロファイルの選択で、任意のコミュニティユーザが属する プロファイル(カスタマーコミュニティ)を選択します。
- オブジェクトの選択で、任意のオブジェクト(健康診断結果)を選択します。
- アクセス権の設定からアクセスマッピング画面で、 ユーザ:Contact、ターゲット 健康診断結果:JushinUser__c を選択します。
アクセスマッピングでは「取引先」「親取引先」「取引先責任者」「取引先責任者の取引先」「上司」 「コミュニティユーザのマネージャの属する取引先」「コミュニティユーザのマネージャの取引責任者」が選択可能です。
以上でアクセス権制御の設定は完了です。
コミュニティ画面から確認する
上記で設定した結果をコミュニティ画面で確認してみます。 「健康診断結果」レコードの「受診者」にログインしているコミュニティユーザが 設定されているレコードのみレコードが表示されていることがわかります。
さいごに
このように、特定の取引先や取引先責任者を起点としたレコードをコミュニティユーザに アクセス権を付与することは、共有セットを使うことによって非常に簡単に設定が可能です。
ただし、共有セットを利用するには対象となるオブジェクトに取引先または取引先責任者の 参照項目が必要となりますので、もし取引先または取引先責任者への参照項目を 持つことが出来ない場合には、共有したいレコードの所有者をコミュニティユーザに 変更すると共に、社内ユーザーには共有ルールおよび共有グループの設定等を用いた アクセス権制御の検討が必要となります。
以上で共有セットの説明は終わりです。 機会があれば是非使用してみてください。