新しくなった Trailblazer Community。詳細はこちら。

ユーザがアクセスできる情報の管理

学習の目的

この単元を完了すると、次のことができるようになります。
  • オブジェクトレベルセキュリティと項目レベルセキュリティの違いについて説明する。
  • 組織の共有設定の設定方法について説明する。

データセキュリティの概要

ユーザを追加する方法について学んだところで、ユーザが必要なデータを参照できるようにする方法、しかも必要なデータしか参照できないようにする方法を知りたいと思いませんか? この単元では、ユーザが必要な情報にのみアクセスできるように、ユーザの Salesforce レコードへのアクセスを設定する方法について説明します。

たとえば、社員募集アプリケーションを作成しているとします。情報として、募集職種、応募者、求人応募が含まれています。このアプリケーションには、社会保障番号、給与額、応募者レビューなどの機密データが保存されます。これらのデータは、特定の種類のユーザのみに公開する必要があります。このようなアプリケーションでは、採用担当者、採用担当マネージャ、面接官の仕事を妨げずに機密データを保護することが重要です。

Salesforce には柔軟で階層化された共有モデルがあるため、異なるデータセットを異なるユーザセットに簡単に割り当てられます。データの盗難や悪用を最小限に抑えつつ、すべてのユーザが必要なデータに簡単にアクセスできるようにすることで、セキュリティと利便性のバランスを取ることができるのです。

Salesforce には、設定しやすいセキュリティのコントロールが含まれていて、アプリケーション内のあらゆるレコードや項目を表示、作成、編集、または削除できるユーザを簡単に指定できます。アクセスは、組織レベル、オブジェクトレベル、項目レベル、または個別レコードレベルで設定できます。異なるレベルのセキュリティのコントロールを組み合わせることにより、何千ものユーザに、個別に権限を指定することなく、適切なレベルのデータアクセスを提供できます。

データアクセスのレベル

Salesforce では、データへのアクセスを主に 4 つのレベルで設定できます。

組織
この最も高いレベルでは、承認されたユーザのリストを維持し、パスワードポリシーを設定し、アクセスの時間と場所を制限することにより、組織へのアクセスを保護できます。
オブジェクト
オブジェクトレベルのセキュリティは、どのユーザがどのデータにアクセスできるかを制御する最もシンプルな方法です。特定の種別のオブジェクトに権限を設定すると、一部のユーザがそのオブジェクトのレコードを作成、参照、編集、削除できなくなります。たとえば、オブジェクト権限を使用して、面接官は職種と求人応募を参照できるけれども、編集や削除はできないように設定できます。
項目
項目レベルのセキュリティを使用すれば、ユーザがアクセスできるオブジェクトであっても、特定の項目へのアクセスを制限できます。たとえば、職種オブジェクトの給与項目を、面接官には表示せず、採用担当マネージャと採用担当者には表示することができます。
レコード
さらに詳細にデータを制御するには、特定のユーザにオブジェクトの参照を許可しながら、参照できる個々のオブジェクトレコードを制限できます。たとえば、レコードレベルのアクセスを使用すれば、面接官が自分のレビューを参照して編集することはできても、他の面接官のレビューは参照できないように設定できます。レコードレベルでアクセスを管理するには、次の方法があります。
  • 組織の共有設定では、ユーザのお互いのレコードに対するデフォルトアクセスレベルを指定します。組織の共有設定を使用してデータを最も制限の厳しいレベルにロックダウンし、それから他の共有ツールを使用して、他のユーザに選択的にアクセス権を付与します。たとえば、Candidate というオブジェクトへのアクセスをすべての従業員に許可すると、誰でも応募者をデータベースに追加できるようになります。一方で、Positions へのアクセスを制限することにより、誰でも募集職種を参照できるけれども、編集できるのは適切な権限を持った従業員だけにすることができます。
  • ロール階層を使用すれば、階層の上位のユーザは、自分より下位のユーザが所有するすべてのレコードへのアクセスを継承できます。ロール階層は、組織図に完全に一致する必要はありません。階層の各ロールは、ユーザまたはユーザグループが必要とするデータアクセスのレベルを示します。たとえば、組織の共有設定を [非公開] に設定し、面接官には各自が所有する応募者レコードの参照と編集を許可することで、Candidates へのアクセスを制限できます。すべての面接官はロール階層内で同じレベルにいるため、面接官は所有していない応募者のレコードを参照できません。ただし、採用担当マネージャはロール階層内で面接官よりも高いレベルにいるため、採用担当マネージャにはすべての応募者レコードの参照・更新アクセス権を付与できます。
  • 共有ルールを使用すれば、特定のユーザグループに対する組織の共有設定の例外を自動的に作成して、所有していないまたは通常参照できないレコードへのアクセス権を付与できます。ロール階層と同様、共有ルールは、他のユーザにレコードに対するアクセス権を付与するためだけに使用され、組織の共有設定をより厳しく制限することはできません。たとえば、すべての従業員に Positions の参照を許可し、共有ルールを使用して Hiring Managers というロールまたはグループの従業員には完全な編集アクセス権を付与することができます。
  • 共有の直接設定を使用すると、特定のレコードの所有者は他のユーザとそのレコードを共有できるようになります。共有の直接設定は組織の共有設定、ロール階層、または共有ルールのように自動化されていませんが、状況によっては役立ちます。たとえば、採用担当者が、休暇で不在になるときに、一時的に求人応募の所有権を別の従業員に割り当てることができます。

レコードレベルセキュリティの概要

データアクセスをより詳細に制御するには、特定のユーザにオブジェクトの参照を許可してから、参照できるオブジェクト内の個々のレコードを制限できます。たとえば、すべての面接官に組織の共有設定を使用してレビューへのアクセスを許可しておいて、ロール階層を使用して所有しているレビューのみにアクセスを制限できます。

レコードアクセスを設定する前に、次の質問に答えると役立ちます。
  • ユーザがアクセスする必要があるのは、すべてのレコードか、それともサブセットのみか?
  • サブセットの場合、ユーザがアクセスできるかどうかを決定するルールは何か?
採用担当者のオブジェクトレベルの権限を作成できるように、Recruiter というプロファイルを作成するとします。Positions や Candidates などの採用関連オブジェクトを削除する機能を制限することにより、採用担当者がこれらのオブジェクトを削除できないようにできます。ただし、採用担当者に採用オブジェクトを作成、参照、編集する権限を付与しても、必ずしも採用担当者がすべての採用オブジェクトのレコード (個々の職種や応募者など) を参照または編集することを許可されているわけではありません。それは、プラットフォームに次の 2 つの重要な概念があるためです。
  • レコードに対する権限は、常にオブジェクトレベル、項目レベル、レコードレベルの権限の組み合わせによって評価される。
  • オブジェクトレベルの権限とレコードレベルの権限が一致しない場合は、より制限が厳しい設定が採用される。

つまり、プロファイルに採用オブジェクトを作成、参照、編集する権限を付与したとしても、個々の採用レコードのレコードレベルの権限がより制限されたものであれば、それらが採用担当者のアクセス権を定義するルールとなります。たとえば、Recruiter プロファイルに Candidates オブジェクトを作成、参照、編集する権限を付与しても、採用担当者のアクセス権を各自が所有している Candidate レコードのみに制限すれば、採用担当者がアクセスできるのはそれらのレコードのみになります。

組織の共有設定

レコードレベルのセキュリティについてより詳しく学んだところで、組織の共有設定に注目しましょう。組織の共有設定は、最も制限されたユーザがアクセスできる基準レベルを指定するものです。組織の共有設定を使用してデータをこの最も制限の厳しいレベルにロックダウンし、それから他のレコードレベルセキュリティおよび共有ツール (ロール階層、共有ルール、共有の直接設定) を使用して、データへのアクセスを必要とする他のユーザにアクセス権を付与します。

組織の共有設定を使用してレコードに対するデフォルトのアクセスレベルを指定し、各種の標準オブジェクトやカスタムオブジェクトに対しては別個にアクセスレベルを設定できます。オブジェクトのすべてのレコードへの基準アクセスレベルを決定するには、オブジェクト権限を使用します。ユーザが所有していないレコードへの権限は組織の共有設定によって変更できます。組織の共有設定を使用して、オブジェクト権限で許可された以上のアクセス権を付与することはできません。

各オブジェクトについて次の質問に答えることで、アプリケーションに必要な組織の共有設定を決定できます。
  1. このオブジェクトで最も制限されたユーザは誰か?
  2. このオブジェクトにこのユーザに閲覧を許可しないインスタンスがあるか?
  3. このオブジェクトにこのユーザに編集を許可しないインスタンスがあるか?
オブジェクトの共有モデルを決定するための図

上記の質問への答えに応じて、オブジェクトの共有モデルを次の設定のいずれかにできます。

項目 説明
非公開 レコードの所有者と階層内でそのロールの上位にあるユーザのみがレコードに対して参照、編集、およびレポートを実行できます。
公開/参照のみ

すべてのユーザは、レコードに対して参照とレポートを実行できますが、編集はできません。レコードの所有者と階層内でそのロールの上位にあるユーザのみが、そのレコードを編集できます。

公開/参照・更新可能 すべてのユーザがレコードすべてに対して参照、編集、およびレポートを実行できます。
親レコードに連動

ユーザは、参照、編集、削除などの操作を取引先に対して実行できます。この操作ができるかどうかは、ユーザがその取引先に関連付けられているレコードに対して同様の操作ができるかどうかに基づいています。

オブジェクトの組織の共有設定が [非公開] または [公開/参照のみ] に設定されている環境の場合、システム管理者は、ロール階層を設定するか共有ルールを定義することで、レコードに対する追加のアクセス権をユーザに許可できます。ただし、共有ルールは追加のアクセス権を付与するためにのみ使用できます。組織の共有設定によって最初に指定された設定を越えてレコードへのアクセス権を制限するために使用することはできません。

例として、社員募集アプリケーションの Position オブジェクトについて質問の答えを考えてみましょう。
  1. このオブジェクトで最も制限されたユーザは誰か?

    標準従業員プロファイルのメンバー。許可されるのは職種の参照のみです。

  2. このオブジェクトにこのユーザに閲覧を許可しないインスタンスがあるか?

    いいえ。標準従業員には、給与の最小値と最大値は表示されませんが、すべての職種レコードを参照できます。

  3. このオブジェクトにこのユーザに編集を許可しないインスタンスがあるか?

    標準従業員は、職種レコードを編集できません。

質問 3 の答えが「はい」であるため、フローチャートに従って、Position オブジェクトの共有モデルを [公開/参照のみ] に設定します。他の社員募集オブジェクトについても同じ作業を繰り返すことによって、オブジェクトに適した組織の共有設定を簡単に決定できます。標準従業員プロファイルは、各オブジェクトに対して最も制限されるユーザです。応募者レコード、求人応募レコード、レビューレコードは、特定の従業員から参照できないようにする必要があります。そのため、Candidate オブジェクト、Job Application オブジェクト、Review オブジェクトの共有モデルは [非公開] に設定します。

メモ

メモ

Review オブジェクトには組織の共有設定を設定できません。これは、オブジェクトが主従関係の従側にあり、従側のレコードは自動的に親の共有設定を継承するためです。したがって、このアプリケーションでは Review (審査) オブジェクトは自動的に [非公開] に設定されます。

組織の共有設定の設定

組織の共有設定について学んだので、さっそく設定してみましょう。

  1. [設定] から、[クイック検索] ボックスに「共有設定」と入力し、[共有設定] を選択します。
  2. [組織の共有設定] 領域で [編集] をクリックします。
  3. オブジェクトごとに、使用するデフォルトアクセス権を選択します。前のセクションで答えた質問を思い出すと、どのデフォルトアクセス権が最適かを判断するのに役立ちます。
  4. ロール階層の上位の従業員が自動的にレコードにアクセスできるようにするため、デフォルトのアクセス権が [親レコードに連動] ではないカスタムオブジェクトに [階層を使用したアクセス許可] を選択します。

オブジェクトの組織の共有設定が [非公開] または [公開/参照のみ] に設定されている環境の場合、システム管理者は、ロール階層を設定するか共有ルールを定義することで、ユーザにレコードに対する追加のアクセス権を許可できます。ただし、共有ルールは追加のアクセス権を付与するためにのみ使用できます。組織の共有設定によって最初に指定された設定を越えてレコードへのアクセス権を制限するために使用することはできません。

デフォルトでは、Salesforce は、ロール階層などの階層を使用して、階層内でレコード所有者より上位のユーザに、そのレコードへのアクセス権を自動的に与えます。オブジェクトを [非公開] に設定すると、レコードの所有者とロール階層内のより上位のユーザに対してのみレコードが表示されるようになります。カスタムオブジェクトについて、階層内でレコード所有者よりも上位のユーザに対してレコードへのアクセス権を無効にするには、[階層を使用したアクセス許可] チェックボックスを使用します。カスタムオブジェクトのこのチェックボックスの選択を解除すると、レコード所有者と組織の共有設定によってアクセスを許可されたユーザのみが、そのレコードにアクセスできるようになります。

[階層を使用したアクセス許可] がオフになっている場合、ロール階層で上位のユーザが自動アクセスを許可されることはありません。ただし、「すべての参照」や「すべての編集」オブジェクト権限、「すべてのデータの参照」や「すべてのデータの編集」システム権限などを持っているユーザなどは、自分が所有していないレコードにもデフォルトでアクセスできます。

組織の共有設定を更新すると、共有の再適用が自動的に実行され、レコードへのアクセス権の変更が適用されます。再適用が完了すると通知メールが送信され、[共有設定] ページを更新して変更内容を確認できます。更新状況を表示するには、[設定] から [クイック検索] ボックスに「設定変更履歴の参照」と入力し、[設定変更履歴の参照] を選択します。

組織の共有設定によってデータの保護が完了した設定は、一部のユーザには制限が厳しすぎる可能性があります。その場合、その他のレコードレベルセキュリティ (ロール階層、共有ルール、共有の直接設定) を使用して、必要に応じて特定の従業員のみにレコードへのアクセスを許可できます。

無料で学習を続けましょう!
続けるにはアカウントにサインアップしてください。
サインアップすると次のような機能が利用できるようになります。
  • 各自のキャリア目標に合わせてパーソナライズされたおすすめが表示される
  • ハンズオン Challenge やテストでスキルを練習できる
  • 進捗状況を追跡して上司と共有できる
  • メンターやキャリアチャンスと繋がることができる