Salesforceのレコードが見れないんだが???【Salesforce基本のホ】

Salesforceのアクセス権って難しいですよね。今回はそれを解説していきます。こういう解説系の記事って、面倒くさい割に得るものが少ないんで、褒めてくれると嬉しいです。

前提として、本記事はSalesforceにあんまり詳しくない開発者や管理者が、頑張ってSalesforceを覚えているよって言う場合に参考になるレベル感で書きます。

前提:オブジェクト・レコード・項目 

まず、オブジェクト・レコード・項目の違いについて、ざっくりイメージしましょう。

オブジェクト:エクセルで言うところの「シート」。例:「取引先」
レコード:エクセルで言うところの「行」例:「株式会社LayerX」
項目(Field):エクセルで言うところの「列」。Columnとも。例:「会社名」

ではやっていきましょう。

レコードにアクセスしたときの処理

いきなりですが、SalesforceのレコードURLに直接アクセスした場合を考えてみましょう。次のような処理になります。

解説すると、以下のとおりです。

  1. オブジェクトアクセス権があるかの判定がされる→なければエラー

  2. レコードアクセス権があるかの判定がされる→なければエラー

  3. 項目アクセス権があるかの判定がされる→権限がある項目だけ表示される

注:簡単のため、細かい処理は飛ばしてます。ページレイアウトとかは今回の対象外。

はい。ややこしいですね。一旦、3種類のアクセス権があるってことを覚えておいてください。

SOQLクエリを実行したときの処理

今度は以下のようなSOQLを実行した場合に、どのようなレコードが返るかを見てみましょう。

SELECT Id, Name AccountNumber From Account

取引先から取引先Id、取引先名、取引先番号を取って来い!っていう命令ですね。

この場合は、1レコードにアクセスした場合とは微妙に挙動が異なります。

  1. オブジェクトアクセス権のチェック→なければエラー

  2. 項目アクセス権のチェック→なければエラー

  3. レコードアクセス権のチェック→アクセス権のあるレコードだけ表示

ややこしいですが、3種類のアクセス権が必要です。

要するに、3種類のアクセス権が必要

はい。いずれの場合においても、特定のオブジェクトの、特定のレコードの、特定の項目を参照したい場合(編集でも同じ)には、以下の条件を満たす必要があります。

  1. そのオブジェクトの、「オブジェクトアクセス権」があること

  2. 対象となるレコードの「レコードアクセス権」があること

  3. 対象となる項目の「項目アクセス権」があること

削除などをおいておくと、それぞれに編集権限、閲覧権限、権限なしと3段階の権限があるわけですが、それらのなかで一番厳しい権限が適用されることになります。
編集するには3つとも編集権限が必要ですし、閲覧するには3つとも閲覧以上の権限がないといけません。

それぞれ、どうやって設定するかを見ていきましょう。

1. オブジェクトアクセス権

オブジェクトアクセス権には、以下の4+2種類があり、ユーザーに対してプロファイルまたは権限セットで付与することができます。

  1. 表示

  2. 作成

  3. 編集

  4. 削除

  5. すべて表示

  6. すべて編集

エクセルで言うところの、シートのアクセス権です。これがないと、話が始まりません。

2. レコードアクセス権

レコードアクセス権は、特定のレコードにアクセスする権限です。オブジェクトアクセス権がある場合に初めて意味をなします。
以下のいずれか場合には、レコードアクセス権は無条件で付与されます。

  • 該当オブジェクトの共有設定が「公開」になっている

  • 該当のオブジェクトの権限で、「すべて表示(編集)」が付与されている

  • システム権限で、「すべてのデータの表示(編集)」が付与されている。

  • 該当レコードの所有者である

これらの場合は、無条件でアクセス権が付与されることになります。
それ以外でも、共有設定や手動共有、開発によりレコードアクセス権を付与することができます。以下は一例です。

  • 該当オブジェクトの共有ルールで共有されている

  • 該当オブジェクトで階層を使用したアクセス権が有効になっていて、該当ユーザーの下位ロールにアクセス権をもつユーザーがいる

  • レコードが手動で共有された

  • 暗黙的な共有(←ややこしいやつ)

まあいろいろ書きましたが、エクセルで言うと、「特定の行を見るための権限」を制御できるし、全部の行を見れる権限を付けれるよ、って話でもあります。

3. 項目アクセス権

項目アクセス権も、オブジェクトアクセス権が前提となります。
該当するオブジェクトの、どの項目にアクセスできるか、という権限で、プロファイルや権限セットで付与することができます。
項目アクセス権の面倒くさいところは、システム権限で一括付与を行う事ができない点です。なので、最強の権限を作ったとしても、新しい項目を作ったら権限を追加しないと、最強の権限でも見れない項目ができてしまいます。
項目レベルのアクセス権は、以下の2種類です

  • 参照

  • 編集

項目レベルアクセス権の例外的なものとしては、

  1. 数式項目には、編集アクセス権をつけることができな(そもそも編集できない)

  2. オブジェクトで必須となっている項目には、自動で編集アクセス権がつく。

  3. ID項目は、常にアクセス権が付与される

ですね。またエクセルの例えに戻ると、「ユーザーがどの列にアクセスできるかを制御できる。」「全ての列へのアクセス権を一括で付与することはできない」

ということですね。

その他のアクセス権に関する話。

今回は簡単のために色々端折りました。
もっと詳しくなるためのキーワードを、以下に並べておきます。
全部について説明ができるようになれば、Salesforceのアクセス権については1人前かなと思いますので、ぜひ頑張ってみてください。

  • 暗黙的な共有

  • 取引先のない取引先責任者のレコードアクセス権 ←まじで闇

  • 活動(メール、Todo、行動)のレコードアクセス権、オブジェクトアクセス権

  • キャンペーンの作成・編集権限

  • 制限ルール

最後に

いかがでしたでしょうか。
Salesforceのアクセス権について、理解の助けになれば幸いです。

Salesforceについての相談は、X(旧Twitter)で受け付けています。環境を見て欲しい・見せて欲しいという相談も歓迎です。 →@FukutaroX

LayerXでは、「Salesforceのさらなる活用をとおして、ビジネス成果を出せる方」を絶賛募集中です。成果が出るかは、環境によるところも大いにあります。どんな環境か興味がある方は、カジュアル面談でサクッとお話しましょう。(コーヒータイムのイメージで、気軽にお越しください)


この記事が気に入ったらサポートをしてみませんか?