Salesforceの暗黙的な共有を理解して意図しないアクセス権付与を回避しましょう
目次
皆様は、日々システム管理者として「どのレコードを誰まで見せるのか」というアクセス権管理に取り組まれていることと思います。そのような中で、直接管理者が設定する共有設定以外に、Salesforceに元々備わっている共有機能が存在します。
今回は、その「暗黙的な共有」について解説していきます。
暗黙的な共有とは
では、そもそも暗黙的な共有とは何なのでしょうか?
まずはその仕組みから、どのような場合に発生するのか確認していきます。
概要
暗黙的な共有とは、Salesforceが標準で提供している自動的なレコード共有の仕組みです。
暗黙的な共有は標準リレーション間でのみ機能し、カスタムオブジェクトでは動作しません。
必要な関連レコードを自動的に参照できる便利な機能である一方で、意図しないアクセス権限の付与につながる可能性があります。
例えば「見せる予定のなかったユーザーに見せてしまった」「アクセス権限の必要ないユーザーが編集できてしまっていた」といったトラブルが発生することがあります。
以下では、暗黙的な共有が機能するケースと、それを適切に管理するための重要なポイントを解説します。
子レコードから親レコードへの共有
子レコードにアクセス権を持つユーザーには、自動的に親レコードの参照権限が付与されます。例えば、取引先(親)と商談(子)の関係では、商談へのアクセス権を持つユーザーは、自動的に親である取引先レコードを参照できます(ただし編集はできません)。
一般的な事例
営業担当者が商談の質を高めるために、その会社がどのような属性なのか取引先を調べたいと思った時、対象レコードをスムーズに確認できます。
トラブル事例
取引先責任者にメールを送ろうとした営業アシスタントに取引先の基本情報まで見えてしまい、そこには営業活動の記録など機密情報が含まれていたため営業部から指摘を受けるといった事態が発生することがあります。
親レコードから子レコードへの共有
次に、親レコードの所有者には、自動的に子レコードへのアクセス権(編集権限を含む)が付与されます。例えば、取引先レコードの所有者は、関連する取引先責任者レコードを編集できます。
この「所有者」という条件が重要で、単なる参照権限では子レコードへのアクセス権は付与されません。関連リストから容易に編集画面へアクセスできるため、他のユーザーのレコードを誤って編集してしまうリスクがあります。
一般的な事例
営業担当者が所有する取引先は、基本的に自分で営業活動を一括して担うため、アシスタントや他の担当者が新たに取引先責任者を開拓した場合でも、その情報を俯瞰することができます。
トラブル事例
悪意のある部門長が、営業担当者である部下が管理する商談の内容を編集してしまいトラブルに繋がりました。
コミュニティユーザーが所属する取引先へのアクセス
Salesforceのコミュニティのユーザーには、自身が所属する取引先とその子レコードに対して自動的にアクセス権が付与されます。
例えば、所属する取引先については、そのく取引先責任者や商談などの関連レコードにもアクセスできます。これは、コミュニティユーザーが自社の情報にアクセスできるようにするための便利な機能ですが、適切な設定を行わないと機密情報が漏洩するリスクもあります。
一般的な事例
パートナー企業のユーザーがログインすると、割り当てられている取引先に関する全ての関連レコードにアクセスできるため、円滑な情報共有が可能になります。
トラブル事例
取引先の中で複数の支店を持つコミュニティユーザーが、意図せず他の支店の情報まで参照できてしまい、本来アクセスすべきでない情報まで見えてしまっていました。
注意点と対策
暗黙的な共有は利便性を高める一方で、適切な設定を行わないとトラブルに発展してしまうリスクがあることはご理解いただけたかと思います。では次に、どのように防ぎ、現状の設定をどのように見直せば良いのか、今すぐ確認できるポイントを見ていきましょう。
[親レコードに連動]設定の影響
「子レコードから親レコードへの共有」、「親レコードから子レコードへの共有」いずれの防止策にも繋がります。共有設定における重要な設定オプションです。
ポイント
共有設定画面において、[親レコードに連動]になっていると、親レコードの参照権限がなければ、親レコードを参照することはできません。
逆に、親子関係が成立するレコード間において、それ以外の[非公開][公開/参照のみ][公開/参照・更新可能]で設定している場合、子は独立した共有設定を施されているため、たとえ親レコードの参照権限がなかった場合でも、親レコードを参照することができてしまいます。
実践的な対応
新規カスタムオブジェクトを作成する際は、デフォルトのアクセス権について慎重に検討しましょう。
もし、[親レコードに連動]以外の設定必要な場合は、本当に主従関係であるべきなのか、リレーションを見直してみることも良いかもしれません。
「所有者」と「参照権限」の違い
「親レコードから子レコードへの共有」の場合、対策に繋がります。
重要な区別
主従関係が成立するレコード間において、親レコードの所有者は子レコードへの自動アクセス権が付与されます。
しかし、あくまで所有者であることが条件であるため、親レコードの参照権限があるからといって、子レコードがあるというわけではありません。
実践的な対応
子レコードを誰が使用し、アクセスできることが望ましいのかを整理し、親レコードの所有者は子レコードにどのようなアクセス権があるべきかを見直してみると良いかもしれません。
その上で、ロールの管理によって、以下の手順で子オブジェクトへのアクセス権を制御することができます。
設定方法
[設定]→[共有ルール]セクション→親オブジェクトの共有ルールより[新規]ボタンを押下→[ステップ 5: ユーザーのアクセスレベルを選択します]に、子オブジェクトが存在する場合は、[子オブジェクト名+アクセス権]という選択リストが表示されます。こちらで[非公開]を選択いただくと、子オブジェクトへのアクセス権を制御することができます。
非公開モデルでなぜ発生するのか
Salesforceの非公開モデルでは、オブジェクトの共有設定を非公開にしてから、ユーザーのごとに制限を緩和していきます。しかし、暗黙的な共有は、この非公開モデルの設定とは別途、緩和する対象のオブジェクトに紐づいて自動的に機能してしまうため、見落としがちです。
つまずきやすいポイント
非公開モデルを採用していても、標準オブジェクト間の暗黙的な共有は機能し続けます。
共有ルールやアクセス権の設定を行っても、暗黙的な共有による権限付与は独立して機能します。
例えば、以下のような状況で特によくトラブルが発生しがちです。
- 組織再編後に部門間で子オブジェクトを持つ標準オブジェクトの権限を見直した際、暗黙的な共有による子レコードへのアクセスを見落としてしまった。
- コミュニティユーザーのアクセス権設定時に、関連レコードまで考慮できていなかった。
見直すべきポイント
- 標準オブジェクトの中で、親子関係に着目し権限の確認
- 親オブジェクトの所有者と共有ルールの見直し
- ユーザーロールと権限セットの見直し
まとめ
暗黙的な共有は、Salesforceの便利な機能である一方で、適切な知識と管理がなされないと、思わぬところで情報セキュリティ上のリスクとなります。以下の点に特に注意して運用することをお勧めします。
- 標準オブジェクトの共有機能は、暗黙的な共有が潜んでいるということ。
- 子オブジェクトを持つ標準オブジェクトには所有者の管理も行うこと。
適切な設定と定期的な見直しにより、より信頼されるSalesforce環境を維持することができます。
<Salesforce>
弊社ではSalesforceをはじめとするさまざまな無料オンラインセミナーを実施しています!
>>セミナー一覧はこちら
また、弊社ではSalesforceの導入支援のサポートも行っています。ぜひお気軽にお問い合わせください。
>>Salesforceについての詳細はこちら
>>Salesforceの導入支援実績はこちらからご覧いただけます!
医療業界に特化した営業支援、顧客管理(SFA/CRM)のコンサルティングも提供しております。こちらもぜひお気軽にお問い合わせください。
>>顧客管理(SFA/CRM)のコンサルティングの詳細はこちら