レコードへのアクセスの制御
学習の目的
この単元を完了すると、次のことができるようになります。
- レコードへのアクセスを制御する 4 種類の方法を挙げる。
- 4 種類あるレコードレベルのセキュリティコントロールを使用する状況をそれぞれ説明する。
- さまざまなレコードコントロールがどのように連携し合うか説明する。
- 組織の共有設定を実行してレコードへのアクセスを制御する。
レコードレベルセキュリティ
データアクセスを厳密に制御するには、特定のユーザーに特定のオブジェクトの特定の項目の参照を許可したうえで、ユーザーが参照可能なレコードを個別に制限します。アクセス可能な各オブジェクトのどのレコードをユーザーが参照および編集できるかは、レコードアクセス権によって決まります。まず、次の点を自問します。
- ユーザーがアクセスする必要があるのは、すべてのレコードか、それともサブセットのみか?
- サブセットの場合、ユーザーがアクセスできるかどうかを決定するルールは何か?
サンプルの社員募集アプリケーションで、採用担当者に必要なオブジェクトレベルの権限を付与するために、「Recruiter (採用担当者)」という新しい権限セットグループを作成しました。採用担当者がこうしたオブジェクトを削除できないように、採用関連のオブジェクトを削除する権限を制限しました。ただし、採用担当者に採用オブジェクトを作成、参照、編集する権限を付与したからといって、必ずしも採用担当者が採用オブジェクトのすべてのレコードを参照または編集できるわけではありません。こうした制限が生じるのは、レコードレベルのセキュリティにより、所有していないレコードに対するユーザーのアクセスが制御されるためです。
レコードレベルの権限によってアクセスが階層状に拡大されるため、レコードレベルのどの機能が設定され、ユーザーが有するアクセスレベルをどのように理解するかを把握することが大切です。
レコードレベルのアクセス権は、次の 4 つの方法で制御できます。リストの下に行くほどアクセス権が大きくなります。まず、組織の共有設定で最も制限が厳しいレベルにデータをロックダウンしたうえで、レコードレベルの他のセキュリティツールを使用して、必要に応じて選択したユーザーにアクセス権を付与します。
-
組織の共有設定 — 所有していないレコードに対するユーザーのデフォルトのアクセスレベルを指定します。
-
ロール階層 — マネージャーには常にその部下と同じレコードへのアクセス権を付与します。階層の各ロールは、ユーザーまたはユーザーグループが必要とするデータアクセスのレベルを表します。
-
共有ルール — 特定のユーザーグループに対して組織の共有設定の例外を自動的に作成して、所有していないレコードや通常は参照できないレコードへのアクセス権を付与します。
-
共有の直接設定 — レコード所有者または十分な権限を有するユーザーが、他の方法ではレコードにアクセスできないユーザーに参照および編集アクセス権を付与できるようにします。
各種データの表示およびアクセスは、次の基本原則に従って、上記のセキュリティコントロール間の連携により決定されます。
- オブジェクトに対するユーザーのベースライン権限は、権限セットと権限セットグループとプロファイルの組み合わせで決まる。
- 所有しないレコードに対するユーザーのアクセス権は、まず組織の共有設定で定義される。
- 組織の共有設定が [Public Read/Write (公開/参照・更新可能)] より低い場合は、ロール階層を使用して特定のロールにアクセスを許可できる。
- 共有ルールを使用して、追加のユーザーグループに対してアクセス権を拡張できる。
- 各レコード所有者はレコードの [共有] ボタンを使用して、個別のレコードを直接他のユーザーと共有できる。
このモジュールの残りの部分では、レコードへのアクセス制御の詳細を見ていきます。この単元では、組織の共有設定について詳しく説明します。
組織の共有設定
組織の共有設定は、所有していないレコードに対するユーザーのベースラインのアクセスレベルを指定します。この設定は、最も制限されるユーザーが有するアクセスを表します。組織の共有設定を使用してデータをロックダウンした上で、他のレコードレベルセキュリティおよび共有ツール (ロール階層、共有ルール、共有の直接設定) を使用して、必要に応じて他のユーザーにデータを開放します。
オブジェクト権限が、オブジェクトの全レコードに対するベースラインのアクセスレベルを決定するのに対し、組織の共有設定は、ユーザーが所有していないレコードに対するこれらの権限を変更します。組織の共有設定によって、オブジェクト権限で付与されるレベルを超えるアクセス権をユーザーに付与することはできません。内部ユーザーと外部ユーザーのそれぞれに、オブジェクト種別ごとの組織の共有設定を定義できます。
アプリケーションに必要な組織の共有設定を決定するには、オブジェクトごとに次のような自問を立てます。
- このオブジェクトで最も制限されたユーザーは誰か?
- このオブジェクトにこのユーザーに参照を許可しないインスタンスがあるか?
- このオブジェクトにこのユーザーに編集を許可しないインスタンスがあるか?
答えに応じて、オブジェクトの共有モデルを次の設定のいずれかにできます。
-
非公開: レコードの所有者と階層内でそのロールよりも上位のユーザーのみが、レコードに対する参照、編集、レポートを実行できます。
-
公開/参照のみ: すべてのユーザーがレコードに対する参照とレポートを実行できますが、レコードを編集できるのはレコードの所有者と階層内でそのロールよりも上位のユーザーのみです。
-
公開/参照・更新可能: すべてのユーザーがすべてのレコードに対する参照、編集、レポートを実行できます。
-
親レコードに連動: レコードが属するオブジェクトにユーザーが参照、編集、削除を実行できる場合は、そのレコードに対してもユーザーが同じ操作を実行できます。
オブジェクトの組織の共有設定が [非公開] または [公開/参照のみ] の場合、システム管理者は、ロール階層を設定するか共有ルールを定義することで、ユーザーにレコードに対する追加のアクセス権を付与できます。共有ルールは、追加のアクセス権を付与するためにのみ使用できます。組織の共有設定によって最初に定められた範囲を超えたレコードへのアクセス権を制限するために、共有ルールを使用することはできません。
例として、社員募集アプリケーションの Position (職種) オブジェクトについて上記の質問に答えてみましょう。
-
このオブジェクトで最も制限されたユーザーは誰か?
職種の参照のみが許可されている標準従業員。
-
このオブジェクトにこのユーザーに参照を許可できないインスタンスがあるか?
いいえ。標準従業員には、ボーナスの最小値と最大値が表示されませんが、すべての職種レコードを参照できます。
-
このオブジェクトにこのユーザーに編集を許可できないインスタンスがあるか?
はい。標準従業員は、職種レコードを編集できません。
3 つ目の質問への答えが「はい」のため、Position (職種) オブジェクトの共有モデルを「公開/参照のみ」に設定する必要があります。他の採用オブジェクトについても同じ作業を繰り返すことによって、オブジェクトに適した組織の共有設定を簡単に決定できます。標準従業員は、各オブジェクトに対する制限が最も厳しいユーザーであり、特定の従業員が参照できない応募者、求人応募、審査レコードが存在します。そのため、Candidate (候補者) オブジェクト、Job Application (求人応募) オブジェクト、Review (審査) オブジェクトの共有モデルはすべて [非公開] に設定する必要があります。
組織の共有設定の設定
組織の共有設定は、制限が最も厳しいユーザーに付与されるベースラインのアクセス権を指定します。
- [Setup (設定)] の [Quick Find (クイック検索)] ボックスで [Sharing Settings (共有設定)] を検索して選択します。
- [組織の共有設定] 領域で [編集] をクリックします。
- オブジェクトごとに、デフォルトの内部アクセス権とデフォルトの外部アクセス権を選択します。先ほど説明したとおり、[Position (職種)] のデフォルトの内部アクセス権は [Public Read Only (公開/参照のみ)] に設定し、[Candidate (応募者)]、[Job Application (求人応募)]、[Review (審査)] は [Private (非公開)] に設定します。デフォルトの外部アクセスについては、4 つのオブジェクトとも [Private (非公開)] に設定します。
- ロール階層を使用した自動アクセスを無効にするには、デフォルトのアクセスが [Controlled by Parent (親レコードに連動)] ではないカスタムオブジェクトの [Grant Access Using Hierarchies (階層を使用したアクセス許可)] をオフにします。このチェックボックスをオフにすると、レコード所有者と共有機能によってアクセス権が付与されたユーザーのみがそのレコードにアクセスできます。
- アクセスの設定が終了したら、[Save (保存)] をクリックします。
組織の共有設定でデータをロックダウンした後で、一部のユーザーにとって制限が厳しすぎるのではないかと思われることがあります。その場合は、他のレコードレベルのセキュリティコントロール (ロール階層、共有ルール、共有の直接設定など) を使用して、必要に応じて特定の従業員に選択的にレコードへのアクセスを許可できます。
リソース