プロファイルで削除したいオブジェクトに「削除」を付与するだけでいい?
そうではないのがアクセス権設定を細かくできるSalesforceです。意外と気にする場面が多くない削除権について確認します。
レコード削除が可能な状況3点
【大前提】プロファイルにて対象オブジェクトに「削除」件は付与しておく必要があります。
それ以外にレコード削除するには3ついずれかの状況が必要です。
この前提に加える形で、まずは削除権を得るパターン3点について確認し最後に表にまとめます。
①レコード所有者である
どのような設定であってもレコード所有者自身はレコード削除が可能です。
②レコード所有者の上位ロールユーザである
上位ロールユーザは実質所有者と同じ権限を持ちます。
自身が所有者の上位ロールユーザではない、またはロール設定されていないユーザの場合はそのレコードは削除できません。
③プロファイル内のオブジェクトアクセス権で”すべて変更”が付与されている
①②を満たしていなければ、オブジェクトに対して削除権限を付与してもそのレコードは削除できません。“すべて変更”が付与されている必要があります。
ちなみにプロファイル内で”すべてのデータの編集”を付与している場合は連動して必ず全オブジェクトで”すべて変更”が付与されます。
ここまでを纏めますと下記の表になります。正確には判定順がこの通りではないと思いますが、便宜上この順で考えるほうがイメージしやすいです。
表内の「階層を使用したアクセス許可」は共有設定内にあります。標準オブジェクトはチェック有から変更できませんが、カスタマイズオブジェクトはデフォルトでチェック有となりチェック無へ変更可能です。
チェック有の場合はその名の通り、ロール設定上上位ユーザは下位ユーザが所有するレコードで自身も所有者にようにアクセス権を得ることが出来ます。結果的に上位ユーザにはそのレコードの削除権も付与されます。
プロファイルでオブジェクトに対して削除権限を付与していれば削除ボタンは表示されますが、上記①~③の3点いずれかを満たしていないとレコードは削除できません。
満たしていないと下記のように「このレコードを保存するときに問題が発生しました。このレコードを編集する権限がないか、このレコードが削除またはアーカイブされている可能性があります。システム管理者にお問い合わせください。」と表示され削除は失敗します。
Salesforce社のドキュメントでもこの3点が紹介されていました。
・レコードを削除しようとする時に「アクセス権がありません」エラーが表示される
削除権を付与することで他アクセス権に影響を及ぼすか
ここまで削除権を付与するには条件を満たす必要があることを見てきました。
その条件を満たすことで、他のアクセス権に影響があるか確認をしてみます。
「①レコード所有者である」「②レコード所有者の上位ロールユーザである」「③プロファイル内のオブジェクトアクセス権で”すべて変更”が付与されている」の3点いずれかを付与されたユーザは、
そのレコードへのあらゆるアクセス権を有することになります。共有設定や共有ルールでアクセス権制限をしている場合はそれらの設定を無視しフルアクセス権を得ます。
例:取引先オブジェクトで共有設定が「非公開」、共有ルールでレコードタイプ「代理店」へのアクセス権のみ許可されているユーザA
→ユーザAは取引先オブジェクトのレコードタイプ「エンドユーザー」へのアクセスは本来許可されていないが、プロファイルで取引先に”すべて変更”が付与されているとレコードタイプ「エンドユーザー」へもアクセス可能となる。
削除権限を付与する=レコードへのフルアクセス権を付与することになるので、共有設定が拡張されることに注意が必要です。
主従関係で従レコードの削除権
従オブジェクトに主従項目を作成する際に下記で選択する「参照のみ」「参照・編集」によってどのユーザへ従レコードの削除権付与されるか決まります。
デフォルトでは主レコードに「参照・更新」以上のアクセス権がある場合に従レコード削除が可能になりますが、主従両方のアクセス権レベル感がそろうという意味ではこの設定が感覚的には分かりやすいです。もちろん状況によって使い分ける必要があります。