Force.com のセキュリティの概要

摘要

アプリケーション、データ、ロジックへのアクセスに対するセキュリティを確保することは、アプリケーション開発やシステム構成にとって重要課題です。承認されていない外部からのアクセスをブロックできるだけでなく、内部からのアクセスにおいても、適切な権限を持つユーザのみに参照を許可するなどの方法で未承認のアクセスからデータやロジックを保護できることが必要です。Force.com は、堅牢かつ柔軟なセキュリティアーキテクチャ上に構築されており、ユーザ、ネットワーク、データの詳細なコントロールが可能です。このドキュメントでは、ユーザ、クライアントの認証、管理者権限、データアクセス、共有モデルといった Force.com のさまざまなセキュリティ機能の特色を説明します。


Force.com のセキュリティ

このドキュメントでは、Force.com のセキュリティ機能を以下の 3 つのセクションに分けて説明します。1 つ目の「ユーザとセキュリティ」セクションでは、ユーザの認証方法、IP アドレス範囲にもとづいてアクセスを制限するネットワークベースのセキュリティ、セッションのコントロール、履歴の追跡などを取り上げます。

2 つ目のセクションは「プログラム的なセキュリティ」です。Force.com プラットフォームへのログインが必要となるソフトウェアクライアントでは、Web サービスの SOAP インターフェースを使用してログインを実行します。このセクションでは、そうした処理にかかわるセキュリティトークンなどの機能を説明します。

3 つ目のセクションは「Force.com のセキュリティフレームワーク」です。このフレームワークにより、組織内で認証対象となるユーザにさまざまなアクセス権限を付与することが可能になります。ユーザやプロファイルに対するセキュリティの設定、タブや永続オブジェクトといった広範なコンポーネントでのアクセス制御、レコード別にアクセスを制限するデータ共有設定などが実行可能です。このフレームワークは、システム管理の用途 (アプリケーションにアクセスできるユーザプロファイルの指定など) に使用したり、アプリケーションアーキテクチャの定義 (マネージャに対して常に参照を許可するレコードの指定など) に使用したりできます。

セールスフォース・ドットコムは、インフラストラクチャとネットワークに対して、SysTrust、SAS 70 Type II をはじめとする厳格なセキュリティ基準を適用しています。今回はこうしたセキュリティについては触れませんが、概要はこちらの弊社サイト (英語) からご確認いただけます。そのほか、trust.salesforce.com ではシステムのパフォーマンスやセキュリティに関する情報 (セキュリティ上の警告など) をリアルタイムでご覧いただけます。

一口にセキュリティといっても課題はさまざまで、ユーザ認証を IP アドレスの範囲にもとづいて制御したい、永続オブジェクト内の特定の項目でのみ参照を許可したいなど、多岐にわたります。そのためこのドキュメントでは、個々の課題に関する詳細よりも、セキュリティ機能の概要や利用可能な設定オプションに焦点を当てて説明します。Force.com プラットフォームが備えるセキュリティ機能を包括的に把握して、アプリケーション開発やシステム管理に役立ててください。


ユーザとセキュリティ

このセクションでは、ユーザの認証方法、ログイン時間帯や IP アドレスの範囲にもとづく制限、セッションの設定、履歴の追跡機能などを取り上げます。


ユーザ

Force.com プラットフォームへのアクセスは、そのユーザが正当なユーザであると証明された場合にのみ許可されます。前提として、該当のユーザのレコードが作成されていることが必要になりますが、これは通常、特別なセキュリティ権限を割り当てられたシステム管理者プロファイルを持つユーザが実行します。

  • [<あなたの名前>]、[設定]、[ユーザの管理]、[ユーザ] の順にクリックしてユーザを作成します (作成可能なユーザの数はライセンスの種類によって異なります)。ユーザの作成時には、パスワードポリシーなどの重要な設定も行います。
  • パスワードポリシーの設定を行うには、[<あなたの名前>]、[設定]、[セキュリティのコントロール]、[パスワードポリシー] の順にクリックします。ここでは、パスワードの有効期間、パスワード文字列の制限、ロックアウトの有効期間などを指定できます。
  • 特定のユーザのパスワードをリセットする場合は、[<あなたの名前>]、[設定]、[ユーザの管理]、[ユーザ] の順にクリックし、該当のユーザを選択して [パスワードのリセット] ボタンをクリックします。
  • すべてのユーザのパスワードをリセットする場合は、[<あなたの名前>]、[設定]、[セキュリティのコントロール]、[すべてのユーザのパスワードをリセット] の順にクリックして表示されたページで操作を行います。

すべてのユーザには必ずプロファイルを割り当てます。詳細については、ユーザベースのアクセス権限に関するセクションで後述します。


ユーザの認証

ほとんどのユーザは、ログインページ (通常は https://login.salesforce.com/) で認証を行います。認証に成功すると、ユーザはアクセス権限を付与されているアプリケーションやデータ、ロジックにアクセスできます。なお、アクセス権限を付与する方法については、後続の「Force.com のセキュリティフレームワーク」セクションで解説します。

上記のほかには、次に示す 2 種類のユーザ認証方法があります。これらは通常、企業内でのシングルサインオンの実装で使用します。

  • 代理認証 - この方法では、ユーザは通常どおり Force.com プラットフォームにログインしますが、Force.com プラットフォーム側では Web サービスのコールアウトを使用してユーザ名とパスワードを外部の認証機関に送信します。そこでログイン情報が承認されると、Force.com プラットフォームに承認通知が返され、ユーザのログイン処理が完了します。代理認証を使用するには、セールスフォース・ドットコムに連絡して機能を有効化する必要があります。
  • SAML (Security Assertion Markup Language) - SAML を使用すると、ユーザの要求はユーザの組織がホスティングするログインページである SAML の IdP (Identity Provider) に送信され、そこでユーザの ID が確認された後、トークンが返されます。Force.com プラットフォームでは、返されたトークンに適切な IdP の署名が含まれているかどうかにもとづいてユーザを検証します。この方法は、ユーザがポータル経由で Force.com プラットフォームアプリケーションにアクセスする場合によく使用されます。これにより、ユーザはいったん認証に成功すれば、その後アプリケーションを切り替えるたびに Force.com に再ログインを行う必要はなくなります。SAML は、[<あなたの名前>]、[設定]、[セキュリティのコントロール]、[シングルサインオン設定] の順にクリックして設定できます。


ネットワークベースのセキュリティ

ユーザの設定ではログインを許可するユーザを決定しますが、ネットワークベースのセキュリティではユーザにログインを許可する場所や時間帯を指定します。セールスフォース・ドットコムでは、ユーザのネットワーク上のロケーションにもとづいてアクセスを制限するオプションを 2 つ用意しています。1 つ目のオプションは、「信頼できる場所からのユーザアクセスは許可するが、新しい場所や信頼されていない場所からのアクセスに対しては別途確認処理を行う」というものです。[<あなたの名前>]、[設定]、[セキュリティのコントロール]、[ネットワークアクセス] の順にクリックして、ログインを許可する IP アドレスの範囲を指定します。指定した IP アドレスの範囲内にあるコンピュータからユーザがアクセスを試みた場合は、通常どおりログインが可能です。指定した IP アドレスの範囲外にある場所からアクセスを試みた場合は、Force.com プラットフォームはユーザに対して警告を発し、アクセスを有効化するリンクを記載したメールを送信します。ユーザはそのリンクをクリックして、新しい IP アドレスからのアクセスを有効にします。一度この処理が完了すれば、その後は新しい IP アドレスからも通常どおりのログインが可能になります。

Security trusted.jpg

2 つ目のオプションは、ユーザプロファイルを使用する方法です。ここでは、より厳格な制限を適用することができます。プロファイルでログイン IP アドレスを指定すると、指定した IP アドレス以外の場所からのログインは許可されなくなります。指定外の IP アドレスからログインしようとしても、有効化用のリンクが記載されたメールが送信されることはなく、ログインは失敗します。

プロファイルでは、ログインを許可する時間帯を指定することもできます。[<あなたの名前>]、[設定]、[ユーザの管理]、[プロファイル] の順にクリックして、プロファイルを選択後、ログイン時間帯の制限を指定します。

IP アドレスの制限はフィッシング攻撃の防止に役立ちます。悪意のある人物が正確なユーザ名とパスワードを取得したとしても、IP アドレスが指定範囲外であれば攻撃は実行できないためです。


セッションのセキュリティ

セッションは、ユーザが Force.com プラットフォームにログインすることで確立されます。[<あなたの名前>]、[設定]、[セキュリティのコントロール]、[セッションの設定] の順にクリックして表示されたページでセッションを管理できます。たとえば、セッションのタイムアウトを設定して、ユーザが一定時間操作をせず、警告のポップアップウィンドウを表示しても応答がなかった場合に自動的にログアウトすることが可能です。タイムアウトのポップアップウィンドウの表示を行わず、一定時間操作しなかった場合に自動的にログアウトすることもできます。さらに、ページにアクセスする場合に常に安全な HTTPS (SSL) 接続を使用する設定が可能です。この設定はデフォルトで有効になっています。


履歴の追跡

最後に取り上げるのは、履歴の追跡機能です。[<あなたの名前>]、[設定]、[ユーザの管理]、[ログイン履歴] の順にクリックすると、直近 20 件のログイン履歴を確認できるほか、IP アドレスやブラウザの種類といった情報を含む過去 6 ヶ月分のログインデータをダウンロードできます。

[<あなたの名前>]、[設定]、[セキュリティのコントロール]、[設定変更履歴の参照] の順にクリックして表示されたページでは、メタデータやシステムに対する変更の追跡が可能です。たとえば、Visualforce ページが作成、変更された時期、セッションのセキュリティ設定が変更された時期などを確認できます。


データの変更履歴

オブジェクトレベルでの履歴追跡もワンクリックで有効化できます。この機能では、オブジェクトレコード全体を対象に、新規レコードの作成といった変更履歴を追跡できます。また、個々の項目に対して履歴の追跡を有効化し、特定項目の値の変更を追跡することも可能です。なお、この機能は、すべてのカスタムオブジェクトをサポートしますが、標準オブジェクトでは追跡不可となっているものが複数存在します。

ここでは詳しくは触れませんが、履歴の追跡は非常に強力な機能であり、かつ、簡単な設定で有効化できます。項目に対して履歴の追跡を有効化する手順は次のとおりです。

  1. [<あなたの名前>]、[設定]、[作成]、[オブジェクト] の順にクリックし、変更したいオブジェクト名の横にある [編集] をクリックします。
  2. [項目履歴管理] チェックボックスをオンにして、[保存] をクリックします。
  3. オブジェクト名をクリックして、オブジェクトを選択します。オブジェクトの詳細ページ内の [カスタム項目 & リレーション] セクションで [項目履歴管理の設定] をクリックして、追跡する項目を指定します。

次の図は、追跡対象の項目でテキストが変更されたことにもとづいて自動生成された履歴の内容です。

Security field track.jpg


プログラム的なセキュリティ

Force.com では、Force.com Web サービス API と Force.com メタデータ API を使用して、ロジック、データ、メタデータなどにプログラム的にアクセスすることが可能です。なお、これらの API を利用するにあたっては、認証するセッションの設定を行う必要があります。前のセクションで説明した機能と一部異なる点がありますので注意してください。

  • パスワードの有効期限は設定可能ですが、期限切れとして処理されたパスワードの確認をログイン時にプログラム的に実行する必要があります。
  • セッションの有効期限は設定可能ですが、前のセクションで説明したオンラインユーザインターフェースの場合とは異なり、警告のポップアップウィンドウは表示されません。
  • ネットワークベースのセキュリティとして、ログインを許可する IP アドレス範囲を指定することは可能ですが、ユーザが指定外の IP アドレスからログインするには、パスワードにセキュリティトークンを追加する必要があります。

Force.com SOAP API Developer's Guideの「クイックスタート」セクションでは、Java コードを使用したログイン方法や例外 (期限切れのパスワードなど) の確認方法などを説明しています。

Force.com アプリケーションで実行するアプリケーションコードに対して、アクセスを許可する Web アドレスを指定することもできます。たとえば、Web サービスのエンドポイントをホスティングしているサーバと Force.com 間のみに通信を限定することなどが可能です。外部との通信が必要となるコードを作成する際には、[<あなたの名前>]、[設定]、[セキュリティのコントロール]、[リモートサイトの設定] の順にクリックして表示されたページで、対象のサイトを追加してアクセスを明示的に許可する必要があります。


セキュリティトークン

指定範囲外の IP アドレスからのアクセスを有効にする場合、通常は、メールに記載されたリンクをクリックしてユーザ確認を行いますが、プログラム的なクライアントの場合は異なる処理が必要です。クライアント実行元の IP アドレスが指定範囲外のものである場合は、クライアント側で、認証対象のユーザのパスワードにセキュリティトークンを追加します。セキュリティトークンを作成するには、[<あなたの名前>]、[設定]、[私の個人情報]、[私のセキュリティトークンのリセット] の順にメニューを選択し、[セキュリティトークンのリセット] ボタンをクリックします。これにより、トークンを記載したメールがユーザに送信されます。

Force.com 関連の多くのツールでは Web サービス API を使用しています。そのため、コンピュータの IP アドレスによっては、ツールの実行時にセキュリティトークンが必要となる場合があります。


OAuth

Force.com Web サービス API は、OAuth 2.0 を使った認証にも対応します。OAuth とはオープンなプロトコルの 1 つで、これによりユーザの資格情報を提示することなく、ある Web サイトから別の Web サイトのリソースにアクセスすることが可能になります。OAuth では、ユーザ名とパスワードの代わりにセキュリティトークンを使用して、特定のサイトの特定のリソースへのアクセスを所定の時間に限って許可します。詳細は、Using OAuth to Authorize External Applications (OAuth による外部アプリケーションの認証)、Digging Deeper into OAuth 2.0 on Force.com (Force.com での OAuth 2.0 のサポートの詳細) を参照してください。


ソースコードのセキュリティチェックツール

開発作業では、プログラム的なさまざまなベストプラクティスに準拠する必要がありますが、そうした対応にはソースコード解析ツールが役立ちます。Force.com にはソースコードのセキュリティをチェックできるツールが用意されており、 セキュリティリソースのページからアクセスできます。このツールでは、組織内のソースコード (Apex コードや Visualforce コードなど) を静的に解析し、コードのセキュリティに関するレポートを取得できます。


Force.com プラットフォームのセキュリティフレームワーク

このセクションでは、Force.com プラットフォームのセキュリティ機能を、次のような区分にもとづいて解説します。

  • システムレベルのアクセス権限: さまざまなアクションを実行したり、Force.com プラットフォームの特定の領域にアクセスしたりできる権限を組織内のユーザに対して付与する
  • コンポーネントレベルのアクセス権限: 組織内のさまざまなコンポーネントへのアクセス権限を設定する
  • レコードレベルの共有設定: オブジェクト内の個々のレコードに対するアクセス権限を設定する

では、この 3 つを順番に説明していきます。


システムレベルのアクセス権限

システムレベルのアクセス権限は、Force.com 環境全体に対するアクセスを規定するもので、プロファイルを使って設定します。Force.com では、各ユーザに必ず 1 つのプロファイルを割り当てます。プロファイルにアクセスするには、[<あなたの名前>]、[設定]、[ユーザの管理]、[プロファイル] の順にクリックします。なお、デフォルトで提供されている標準のプロファイルの内容を変更することはできません。標準のプロファイルが要件に合わない場合は、カスタムのプロファイルを作成して対応します。

システムレベルのアクセス権限は、次のようなカテゴリに分類することができます。


システム管理に関係した権限

この権限は通常システム管理者が設定し、主要な設定メニューへのアクセス権限など、システムレベルのアクセスを全体的にコントロールします。具体的には、ユーザプロファイルで次のような権限を指定できます。

  • [ユーザの管理] - すべてのユーザの属性を変更できます。この権限を持つユーザは、他のユーザに対してこの権限以外のあらゆる権限を付与することが可能になります。そのため、この権限はごく限られた一部のユーザにのみ付与するようにします。
  • [API の有効化] - この権限が付与されたユーザは Force.com 以外の外部システムから Force.com システムにアクセスすることが可能になります。
  • [API 限定ユーザ] - この権限が付与されたユーザは Force.com プラットフォームに直接ログインすることはできず、Web サービス API を介したアクセスのみが許可されます。
  • [設定・定義を参照する] - この権限が付与されたユーザは設定メニューの内容をすべて参照できますが、変更は行えません。
  • [パスワード無期限] - パスワードの有効期限が無期限になります。
  • [アプリケーションのカスタマイズ] - Force.com アプリケーションのオプションに対する完全な編集権限が付与されます。開発者には必須の強力なアクセス権限ですが、開発者以外のユーザへの付与には注意が必要です。
  • [HTML テンプレートの編集]、[レターヘッドの管理]、[公開テンプレートの管理] - Force.com のメッセージングコンポーネントに関する権限です。
  • [Apex 開発] - この権限が付与されたユーザは、Apex を作成、編集できます。ただし、[すべてのデータの編集] 権限があらかじめ付与されていることが必要です。


レポートに関係した権限

レポート機能に関係したシステム管理者権限について説明します。

  • [レポートの作成とカスタマイズ] - 新規レポートの作成と既存レポートの変更を許可します。
  • [レポート実行] - レポートタブへのアクセスを許可します。
  • [レポートのエクスポート] - レポートのデータを Excel スプレッドシート形式でエクスポートすることを許可します。
  • [カスタムレポートタイプの管理]、[ダッシュボードの管理]、[公開レポートの管理]、[レポートのスケジュール] - 各コンポーネントの管理、変更を許可します。


データに関係した権限

次に取り上げるデータ関連の権限は、管理目的でのデータ操作を許可します。開発目的でのデータ操作については、後続の「レコードレベルの共有設定」セクションで取り上げます。

  • [すべてのデータの編集] - 非常に強力な権限で、グローバルに付与すると、ユーザは Force.com 組織のすべてのデータを変更できるようになります。このアクセス権限は、オブジェクトレベルで付与することもできます。
  • [すべてのデータの参照] - グローバルに付与すると、ユーザは Force.com 組織のデータすべてを参照できるようになります。このアクセス権限は、オブジェクトレベルで付与することもできます。
  • [参照のみ項目の編集] - プロファイルでこのアクセス権限が付与されているユーザは、ページレイアウトで参照のみとして設定されている項目を編集できます。
  • [暗号化されたデータの参照] - プロファイルでこのアクセス権限が付与されているユーザは、暗号化されたデータをプレーンテキストで表示できます。
  • [ウィークリーデータのエクスポート] - プロファイルでこのアクセス権限が付与されているユーザは、週単位でデータをエクスポートできます。
  • [アウトバウンドメッセージの無効化] - プロファイルでこのアクセス権限が付与されているユーザは、アウトバウンドメッセージを使用できません。


コンポーネントレベルのアクセス権限

Force.com プラットフォームでは、上記のような詳細なシステムレベルのアクセス権限に加えて、Force.com の各コンポーネントレベルでアクセス権限を設定することができます。プロファイルの設定で、次の各コンポーネントに対するアクセス権限を付与することが可能です。

なお、これらのアクセス権限はそれぞれ個別に適用されるという点に注意してください。たとえば、あるアプリケーションへのアクセスを禁止した場合、その設定によってアプリケーション内のタブへのアクセスも禁止されるということはありません。タブに対するアクセス権限を個別に設定する必要があります。こうした設定の変更は [プロファイル] ページで行う以外に、対象のコンポーネント上で行う場合があります。たとえば、Visualforce ページのセキュリティを設定するには、[開発]、[ページ] の順にクリックし、対象となる Visualforce ページの横にある [セキュリティ] リンクをクリックし、そのページへのアクセスを許可するプロファイルを選択します。Apex クラスの場合も同様です。

プロファイルの設定では、すべての Force.com オブジェクトに対して参照、作成、編集、削除という基本的な権限を指定できます (下図参照)。

Security crud.jpg

さらに、オブジェクト内の任意の項目に対して項目レベルでセキュリティを設定することが可能です (下図参照)。項目に対する参照のみのアクセス権限を付与したり、項目そのものを非表示にしたりできます。この設定は、[<あなたの名前>]、[設定]、[セキュリティのコントロール]、[項目アクセス許可] の順にメニューをクリックして実行します。

Security field.jpg

データレベルのアクセス権限は、常に Force.com プラットフォーム全体に適用されます。たとえば、ユーザが特定のオブジェクトに対するアクセス権限を持っていない場合、そのオブジェクトのユーザインターフェースは表示されず、レポートでそのオブジェクトを使用することもできません。


レコードレベルの共有設定

前のセクションで紹介したアクセス権限は、特定のコンポーネントに対するアクセスの可否を設定するなど、コンポーネント別に広範なアクセス権限を付与するものでした。レコードレベルの共有設定を使用すると、よりきめ細かくデータへのアクセスをコントロールできます。

レコードレベルの共有設定では、特定のオブジェクト内の個々のレコードに対するアクセス権限を指定できます。レコードの共有設定にもとづき、レコードに対するアクセスを禁止したり、参照のみを許可したり、参照と更新の両方を許可したりすることが可能です。この機能は強力で柔軟性にすぐれていますが、個々のレコードに対する共有オプションの設定が複雑になるおそれがあります。そこで、Force.com プラットフォームでは組織全体に適用できるデフォルトの共有設定を用意し、作業の簡素化をサポートしています。


組織の共有設定

組織の共有設定はあらゆる Force.com オブジェクトに対して適用できます。名前が示すとおり、この機能では特定のオブジェクト内の全レコードに対する共有レベルを、組織の全ユーザに対して適用します。共有設定のタイプには、所有者のみが対象レコードにアクセスできる [非公開]、組織の全ユーザが対象レコードを参照できる [公開/参照のみ]、全ユーザが対象レコードを参照、変更できる [公開/参照・更新可能] などがあります。

Security sharing org.jpg

組織の共有設定では、各オブジェクト内のレコードに対してこれだけは絶対に必要であるとみなされるアクセス権限を設定します。ユーザには、組織の共有設定の指定よりも強い制限が適用されることはありません。オブジェクトに対する組織の共有設定は、そのオブジェクトに何らかの形でアクセスを許可されたユーザが利用できる、レコードに対する最低限のアクセス権限です。つまり、この設定は個々のレコードに対するもっとも厳しいアクセス制限となります。

組織の共有設定には、[<あなたの名前>]、[設定]、[セキュリティのコントロール]、[共有設定] の順にクリックしてアクセスします。


共有

組織の共有設定で最低限のアクセス権限を規定したら、続いてそれをベースに権限を拡張していきます。つまり、組織の共有設定で許可したアクセス権限よりも強力なアクセス権限を指定します。たとえば、組織の共有設定で非公開または参照のみのアクセス権限を設定したレコードに対して、参照・更新のアクセス権限を付与することなどができます。

方法としては次の 3 つがあります。

  • 手動操作: レコードの詳細ページにある [共有] ボタンを使用します。このボタンはデフォルトですべてのレコードの詳細ページに表示されますが、ページレイアウトから削除することもできます。なお、組織の共有設定で、もっとも強力な権限である [公開/参照・更新可能] が指定されているレコードでは、[共有] ボタンは表示されません。
  • 共有ルールの適用: あるユーザグループが所有するレコードを別のユーザグループと自動的に共有します。レコードは、ロールやグループにもとづいて共有できるほか (詳細は次のパラグラフを参照)、CRM の導入を支援するために設計されたカテゴリである「テリトリー」を基準に共有することも可能です。
  • Apex: レコード作成時に共有を自動設定するか、Apex による共有管理 (カスタムオブジェクトでのみ使用可能) を使用します。

共有ルールの適用を効率よく行えるように、Force.com プラットフォームではユーザをグループ化する方法を 2 種類用意しています。1 つ目はロールです。ユーザにロールを割り当てることで、ロール階層におけるユーザの位置が決まります。ロール階層では、自分が属するロール階層よりも下位のロール階層に付与されたすべての共有権限が自動的に付与されます。たとえば、マネージャのロールを割り当てられたユーザには、そのマネージャのロールよりも下位のロールに属するユーザに付与されたすべての共有権限が付与されます。ロール階層は、1 つの組織に対して 1 つのみ作成できます。

2 つ目は公開グループです。公開グループを作成してユーザを追加することで、追加された全ユーザにそのグループ共通の権限が付与されます。権限はグループ間で共有可能であり、複数のグループが同一の共有権限を持つ場合もあります。相互での共有が可能であるということが、ロール階層における共有とは異なる点です。

次の図は、[Question] オブジェクト用に作成した共有ルールです。このルールでは、Direct Sales ロールのメンバーが作成した Question レコードを、Channel Sales Team ロールとその下位ロールに属する全メンバーが、参照・更新の権限レベルで共有します。なお、この機能は大変強力です。データに対して共有ルールを作成する場合には、慎重に検討を行ってください。

Security sharing.jpg


共有に影響を与える変更

Force.com では、条件に応じて、共有対象のレコードがレコードのアクセスレベルにもとづいて自動的に割り当てられます。レコードの所有者、ロールや階層、グループのメンバーシップなどを基準に共有設定が適用されるケースのほか、Apex によって個別に設定が適用される場合があります。レコード所有者、レコード所有者のロール、ロール階層におけるレコード所有者の位置、グループのメンバーシップなどが変更されると、関連付けられたすべてのレコードを対象に共有設定が再計算されます。

通常は、最新の状況を反映する形ですべての共有設定を再計算します。一方、所有者、ロール、グループなどに変更があったが Apex で追加した共有設定をそのまま維持したい、といった場合は、[Apex 共有の理由] を指定します。共有の理由が関連付けられた共有設定では、共有権限に影響を与えるような変更が加えられた場合でも Force.com プラットフォームによる再計算は行われません。レコードの詳細ページで [共有] ボタンをクリックすると、共有の理由を割り当てたり、共有の状況を参照したりできます。なお、この場合は、関連オブジェクトの共有を再計算する Apex クラスを作成する必要があります。


まとめ

Force.com は、非常に強力で柔軟なセキュリティアーキテクチャを備えています。ユーザのログイン方法、ログインを許可する IP アドレスの範囲や時間帯、セッションの有効期限などを定義できるほか、Web サービス API によるユーザの検証、アプリケーション利用時に Force.com との通信を許可するエンドポイントの指定など、プログラム的な制御が可能です。また、設定ページの [プロファイル] メニューでは、アクセスを許可する機能やコンポーネントを制限したり、オブジェクトや項目レベルで参照、更新などの権限を指定したりすることが可能で、組織の運用状況に即したセキュリティを実装できるようになっています。

さらに、レコードレベルの共有設定では、データのセキュリティを詳細に規定できます。レコードへのアクセス権限をユーザ、ロール、グループ単位で指定できるほか、ユーザ間でデータレコードを共有する方法も定義可能です。


参考資料



(原文の)執筆者について

Jon Mountjoy は Developerforce コミュニティの管理者および編集長として、新しいテクノロジーを意欲的に探求し、コミュニティにフィードバックしています。Jon は Developerforce でBlogを執筆しているほか、Twitter、FriendFeed などにも参加しています。以下に Jon 本人からのメッセージをお伝えします。「この場を借りて、素晴らしいコンテンツを作成してくれた Force.com プラットフォームドキュメンテーションチームに対して、執筆者より感謝の意を表したいと思います。また、このドキュメント作成に多大な貢献をしてくれた Rick Greenwald 氏、貴重な助言ならびに誤りのご指摘をいただいた Leah Cutter 氏および Peter Dapkus 氏に、厚くお礼申し上げます。このドキュメントに関する皆様からのご意見をお待ちしています」