進行状況の追跡を始めよう
Trailhead のホーム
Trailhead のホーム

Force.com アプリケーションの認証のしくみについて

学習の目的

この単元を完了すると、次のことができるようになります。

  • 組織内のデータへのアクセスを保護できる主な方法を区別する。
  • どのような場合にプラットフォームで認証設定が自動的に適用されるのかを理解する。

認証とは?

一般的にオンラインデータへのアクセスは識別、認証、および承認されたユーザのみに制限されます。このモジュールでは、どのリソースに誰がアクセスできるのかを判別する認証に焦点を絞ります。

この概念を理解するために、あなた自身の Salesforce 組織のデータについて考えてみましょう。たとえば、各ユーザに関する情報を保存してあるとします。この情報のなかには、給与情報や社会保障番号などの機密があります。認証では、人事または給与担当のみが、組織内全員のこれらの項目へのアクセス権を持つように指定することができ、通常のユーザは自分のデータのみを表示できます。これが認証の力です。

Salesforce での認証: 入門

Salesforce プラットフォームでは、認証の設定やデータへのアクセスの制限を簡単に行うことができます。特定のプロファイルまたは権限セットをユーザに割り当てるだけで、システム管理者は組織内に保存されているデータへのユーザのアクセスレベルを定義できます。 

これは次の 3 つ方法で行います。

  • 作成、参照、更新、削除 (CRUD) 設定
    • ユーザが作成、参照、更新、削除できるオブジェクトを決定する。
  • 項目レベルセキュリティ (FLS) 設定
    • ユーザが参照および編集できる項目を決定する。
  • 共有ルール
    • ユーザに表示されるレコードを決定する。

これら 3 つの概念を視覚化する最も簡単な方法は、スプレッドシートです。

CRUD をタブ、FLS を列、共有を行で示すスプレッドシート

  • CRUD はユーザがアクセスできるタブ (オブジェクト) を制限する。
  • FLS はユーザがアクセスできる列 (オブジェクトの項目) を制限する。
  • 共有はユーザがアクセスできる行 (オブジェクトレコード) を制限する。

これらの設定の動作とシステム管理者としての設定方法の詳細は、「データセキュリティ」モジュールを参照してください。

開発者と認証

システム管理者が、[設定] でプロファイルと権限セットを使用して認証を設定します。システム管理者にすべて任せておけば大丈夫ですね。

ところが、それは大間違いでした。認証制御の適用では、あなたにも開発者として果たす役割があります。システム管理者はルールを設定しますが、アプリケーションでルールが適切に順守されるようにするのは、あなたの仕事です。

Salesforce プラットフォームでは認証がどのように適用されるのか

ほとんどの場合、プラットフォームではシステム管理者が設定した認証設定が自動的に適用されるので、あなたの仕事は簡単です。ただし、プラットフォームには柔軟性があるので、開発者が認証設定をスキップできる特定のケースがあります。 

このようなケースが発生する理由と場所を理解するには、ユーザとシステムという、Force.com アプリケーションが実行される 2 つの実行コンテキストについて理解する必要があります。 

ユーザコンテキスト

ユーザコンテキストは、Salesforce で基本的な UI 操作を行っているときに表示されるデフォルトのコンテキストです。ユーザコンテキストでは、UI を閲覧またはコードを実行するときに、現在のユーザの権限、項目レベルセキュリティ、および共有ルールが考慮されます。

プラットフォームは、次の場合にユーザコンテキストで実行されます。

  • ユーザが Salesforce の標準 UI でアプリケーションを参照する。
  • ユーザが標準コントローラを使用する Visualforce ページを表示する。
  • ユーザが標準のオブジェクト表記を使用するオブジェクトを参照する Visualforce ページを表示する。
  • コンソールまたは API コールによってプラットフォームで匿名 Apex が実行される。
  • プラットフォーム上のアプリケーションが標準の API コールを実行する。

このモードは、システム管理者が設定したすべての認証設定がデフォルトで適用されるので、開発者に最適です。ただし、ユーザコンテキストでは、カスタムコードで操作できるデータが制限されることがあります。 

システムコンテキスト

幅広い機能とより充実した UI の操作性をサポートするために、プラットフォームはシステムコンテキストでも実行できます。このモードでは、コード実行時に、現在のユーザの権限、項目レベルセキュリティ、および共有ルールは考慮されません。 

これは、ルートまたはシステム管理者として実行し、昇格された権限を使用したコード実行と考えることができます。このモードでは、アプリケーションには、暗号化項目も含め、組織内で使用可能なすべてのオブジェクトおよび項目へのアクセス権があります。

プラットフォームでは、次の場合にシステムコンテキストでコードが実行されます。

  • Apex クラス (Web サービスを含む)
  • Apex トリガ
  • API からコールされた Apex Web サービス

複数のコンテキストの目的は何か?

トランザクション全体を通してユーザアクセス制御が維持されるので、セキュリティの観点から見て推奨されるのはユーザコンテキストです。このため、標準コントローラ上に作成された標準ページおよび Visualforce ページは、ユーザコンテキストで実行されます。ただし、ユーザコンテキストの制限は、カスタムビジネスプロセスおよびアプリケーションには適切でないことがあります。 

カスタム Apex および Visualforce アプリケーションでは、ユーザのアクセス権の範囲を超える権限が必要な場合があります。システムコンテキストには、このようなアプリケーションに必要な柔軟性があります。開発者は、この柔軟性を熟慮のうえ慎重に使用する必要があります。大いなる力には、大いなる責任が伴うのです。 

Kingdom Management アプリケーションを使用した認証の概要

この概念を説明するために、Kingdom Management というサンプルアプリケーションを使用します。このモジュールでは、城の住人であるユーザがインベントリを追跡できるようにするアプリケーションの、リード Apex 開発者の役割をあなたが担います。このアプリケーションでは王国に関する機密データが処理される可能性があるので、許可されていないユーザにデータが公開されたり、変更されたりしないように、全体を通して認証チェックを適切に実行する必要があります。 

メモ

メモ

このトレイルの他のモジュールを完了している場合は、前のモジュールでこの組織にすでにサインアップしている可能性があります。ただし、2017 年 3 月 27 日より前に Kingdom Management 組織にサンアップした場合は、再度サインアップする必要があります。最新のコンテンツを取得するために組織の新しいコピーが必要です。 

Kingdom Management 開発者組織を開始できるようにするには、サインアップする必要があります。

  1. Kingdom Management 開発者組織のカスタムサインアップページ (https://developer.salesforce.com/promotions/orgs/trust-de) に移動します。
  2. 有効なメールアドレスを使用してフォームに入力し、[サインアップ] をクリックします。
    Kingdom Management 組織のサインアップページ

  3. 有効化を要求するメールを確認します。
  4. メールのリンクをクリックし、新しいパスワードと確認の質問を設定して登録を完了します。

Kingdom Management 開発者ユーザ名を設定したら、侵入者からデータを守る方法を学ぶための準備は完了です。

メモ

メモ

Kingdom Management アプリケーションのコードには、意図的に特定の種類の脆弱性が多数含まれています。開発者組織ではこれらの脆弱性が問題になることはありませんが、Salesforce の本番環境に複製された場合、深刻な問題を引き起こす可能性があります。Kingdom Management アプリケーションは、教育目的でのみ使用してください。

Kingdom Management 開発者組織のナビゲーション

このモジュールを含め、このトレイルの各モジュールでは、Kingdom Management アプリケーションおよびアプリケーションに含まれるデモや課題を参照します。以下に、開発者組織をナビゲートするためのさまざまな機能を示します。

  • 右上のアプリケーションピッカーには、モジュールや単元で取り上げるさまざまなトピックを参照するアプリケーションが含まれます。同じトピックを共有している場合は、複数の単元で 1 つのアプリケーションを参照することもあります。
  • 各アプリケーションのタブバーには、デモや課題に固有のタブが含まれます。コンテンツでは、名前によってこれらのデモや課題を参照します。
  • 各タブの Visualforce ページには、デモ中の問題のコンテンツを示す [デモ] セクションがあります。
  • 各タブの Visualforce ページには、デモまたは課題に関連するコードへのクイックリンクを含む [コードリンク] セクションがあります。リンクをクリックすると、Visualforce ページ、Apex コントローラ、またはデモや課題に関連するその他の項目に移動できます。

この組織および基盤となるアプリケーションは更新されることがあります。最新のコピーを使用しているかどうかを確認するには、各カスタムアプリケーションの [概要] タブを確認します。

Kingdom Management 開発者組織の [概要] タブのスクリーンショット

組織が最新ではない場合、リリースノートを参照し、組織の新しいバージョンにサインアップしてください。

リソース