(57)【要約】クエリプラン検出モジュールを使用してデータベースシステムを絶えずポーリングして疑わしいクエリプランを発見し、警報を出すことにより、マルチテナントデータベースネットワーク環境におけるネットワーク機密保護が強化される。機密保護はまた、受信されるクライアント要求それぞれに関してユーザ情報および組織情報を記録し、その情報を、アプリケーションサーバからの応答に含まれる情報と比較し、応答が適正なユーザに送信されていることを立証する、アプリケーションサーバとクライアントシステムとの間に位置するファイアウォールシステムを使用して強化することができる。機密保護はまた、クライアント側で格納されたユーザ情報および組織ID情報を応答の中の類似情報と比較することによってアプリケーションサーバからの応答が適正なユーザシステムに送信されているかどうかを立証する、クライアントシステム上で実行するロジックをクライアント側ファイアウォールシステムとともに使用して、強化することができる。2009518713.tif 000005
2009518713.tif 000002
【特許請求の範囲】
【請求項１】
多数のテナントそれぞれのデータを格納するためのデータベースシステム、
該多数のテナントそれぞれの該データベースシステムへのネットワークアクセスを提供するための、該データベースシステムおよびネットワークに通信可能に結合されたアプリケーションサーバ、および
クエリプランを求めて該データベースシステムをポーリングし、クエリプランを解析してクエリプランが疑わしいかどうかを判定するためのクエリプラン検出モジュール
を含む、マルチテナントデータベースシステム。
【請求項２】
クエリプラン検出モジュールが疑わしいクエリプランの実行を阻止する、請求項1記載のシステム。
【請求項３】
クエリプランが疑わしい場合、クエリプラン検出モジュールが警報を発する、請求項1記載のシステム。
【請求項４】
疑わしいクエリプランそれぞれに関して、クエリプラン検出モジュールが、該疑わしいクエリプランがクエリプラン例外に該当するかどうかを判定する、請求項1記載のシステム。
【請求項５】
クエリプラン例外に該当する疑わしいクエリプランが実行される、請求項4記載のシステム。
【請求項６】
クエリプランが疑わしい場合、クエリプラン検出モジュールがクエリプラン情報を記録する、請求項1記載のシステム。
【請求項７】
クエリプラン検出モジュールが製造および開発中に稼働する、請求項1記載のシステム。
【請求項８】
クエリプランを解析してクエリプランが疑わしいかどうかを判定することが、該クエリプランが、マルチテナントデータベースシステム中では決して起こらないはずであるクエリプランまたはマルチテナントデータベースシステム中の少数の特定された状況でしか起こらないはずであるクエリプランの少なくとも一つであるかどうかを判定することを含む、請求項1記載のシステム。
【請求項９】
多数のテナントのデータを格納するためのデータベースシステム、
該データベースシステムおよびネットワークに通信可能に結合された、少なくとも一つのクライアントシステムのデータベースシステムへのネットワークアクセスを提供するアプリケーションサーバ、ならびに
クライアント要求を受信し、
該クライアント要求からユーザ情報および組織情報を抽出し、
該クライアント要求を該アプリケーションサーバに転送し、かつ
該アプリケーションサーバから受信された応答メッセージに含まれるユーザ情報および組織情報を、該クライアント要求から抽出された該ユーザ情報および組織情報と比較するように動作可能である、
該アプリケーションサーバと該少なくとも一つのクライアントシステムとの間に通信可能に結合された、少なくとも一つのファイアウォールサーバ
を含む、マルチテナントデータベースシステム。
【請求項１０】
ユーザ情報および組織情報が、セッションID (SID)クッキーおよびストリングデータフィールドの少なくとも一つに含まれ、クライアント要求および応答メッセージそれぞれが該セッションID (SID)クッキーおよび該ストリングデータフィールドの少なくとも一つを含む、請求項9記載のマルチテナントデータベースシステム。
【請求項１１】
ファイアウォールサーバが、応答メッセージの一部として含まれるページの本体からユーザ情報および組織情報の部分を引き離し、該応答メッセージをクライアントシステムに転送する、請求項9記載のマルチテナントデータベースシステム。
【請求項１２】
応答の中のユーザ情報および組織情報が抽出されたユーザ情報および組織情報と一致しない時に、ファイアウォールサーバが警報を出す、請求項9記載のマルチテナントデータベースシステム。
【請求項１３】
応答の中のユーザ情報および組織情報が抽出されたユーザ情報および組織情報と一致しない時に、ファイアウォールサーバがクライアント要求に応答してエラーコードを生成し、かつ送信する、請求項9記載のマルチテナントデータベースシステム。
【請求項１４】
応答の中のユーザ情報および組織情報が抽出されたユーザ情報および組織情報と一致しない時に、ファイアウォールサーバがクライアント要求に応答してクライアントシステムをアプリケーションサーバからログアウトさせる、請求項9記載のマルチテナントデータベースシステム。
【請求項１５】
応答の中のユーザ情報および組織情報が抽出されたユーザ情報および組織情報と一致しない時に、ファイアウォールサーバがエラー情報を記録する、請求項9記載のマルチテナントデータベースシステム。
【請求項１６】
ファイアウォールサーバが、ユーザ情報および組織情報の一意IDを使用して、ページを要求しているユーザの身元を追跡する、請求項9記載のマルチテナントデータベースシステム。
【請求項１７】
ファイアウォールサーバが、応答メッセージに含まれるユーザ情報および組織情報を抽出する、請求項9記載のマルチテナントデータベースシステム。
【請求項１８】
ファイアウォールサーバが、応答メッセージのHTMLヘッダからユーザ情報および組織情報を抽出する、請求項9記載のマルチテナントデータベースシステム。
【請求項１９】
データベースシステムが、データベースシステムをネットワークに通信可能に結合するアプリケーションサーバを含み、アプリケーションサーバが、少なくとも一つのクライアントシステムのデータベースシステムへのネットワークアクセスを提供する、データベースシステムにおいて、第一のクライアントシステムから受信されたログイン要求に応答して、ユーザ情報および組織情報ならびに第一の検証ロジックを含むログイン応答メッセージで該第一のクライアントシステムに応答する工程、
該第一のクライアントシステムにおいて、該第一の検証ロジックを実行して該ユーザ情報および組織情報を設定する工程、
該データベースシステムにおいて、該第一のクライアントシステムから受信された後続の要求に応答して、ユーザ情報および組織情報ならびに第二の検証ロジックを含む応答メッセージによって該第一のクライアントシステムに応答する工程、および
該第一のクライアントシステムにおいて、該第二の検証ロジックを実行して、該応答メッセージで受信されたユーザ情報および組織情報が該第一のクライアントシステムにおいて設定されたユーザ情報および組織情報と一致することを妥当性検証する工程
を含む、マルチテナントデータベースシステム中でクライアント側ファイアウォールを提供して多数のテナントのためのデータを格納する方法。
【請求項２０】
ユーザ情報および組織情報がセッションID (SID)クッキーおよびストリングデータフィールドの少なくとも一つに含まれ、ログイン応答および応答メッセージそれぞれが該セッションID (SID)クッキーおよび該ストリングデータフィールドの少なくとも一つを含む、請求項19記載の方法。
【請求項２１】
応答メッセージで受信されたユーザ情報および組織情報が第一のクライアントシステムにおいて設定されたユーザ情報および組織情報と一致しない場合、ユーザを自動的にアプリケーションサーバからログアウトさせる、請求項19記載の方法。
【請求項２２】
応答メッセージで受信されたユーザ情報および組織情報が第一のクライアントシステムで設定されたユーザ情報および組織情報と一致しない場合、該第一のクライアントシステムがシステム管理者に警報を送信する、請求項19記載の方法。
【請求項２３】
マルチテナントデータベースシステムのクエリプランをモニタリングして、任意のクエリプランが、マルチテナントデータベースシステム中では決して起こらないはずであるクエリプランまたはマルチテナントデータベースシステム中の少数の特定された状況でしか起こらないはずであるクエリプランの少なくとも一つであるかどうかを判定する工程、および
クエリプランが、マルチテナントデータベースシステム中では決して起こらないはずであるクエリプランまたはマルチテナントデータベースシステム中の少数の特定された状況でしか起こらないはずであるクエリプランの少なくとも一つであると判定される場合、マルチテナント環境において顧客データを機密保護するための措置を講じる工程
を含む、マルチテナント環境において顧客データを機密保護する方法。
【請求項２４】
クエリプランが、マルチテナントデータベースシステム中では決して起こらないはずであるクエリプランまたはマルチテナントデータベースシステム中の少数の特定された状況でしか起こらないはずであるクエリプランの少なくとも一つであると判定される場合、マルチテナント環境において顧客データを機密保護するための措置を講じる工程が、警報を出す工程、監査メッセージを記録する工程、ならびに該クエリプランを放棄する工程、および該クエリプランの実行を延期する工程の少なくとも一つを含む、請求項23記載の方法。
【請求項２５】
マルチテナントデータベースシステム中では決して起こらないはずであるクエリプランまたはマルチテナントデータベースシステム中の少数の特定された状況でしか起こらないはずであるクエリプランの少なくとも一つであると判定される特定のクエリプランが、クエリプランの例外クラスのメンバーであるかどうかを判定する工程、および
該クエリプランがクエリプランの例外クラスのメンバーであることがわかった時に、警報を出すことなく該クエリプランの実行を許す工程
をさらに含む、請求項23記載の方法。
【請求項２６】
実行されると、一つまたは複数のプロセッサにマルチテナントデータベースシステムのクエリプランをモニタリングさせて任意のクエリプランが疑わしいかどうかを判定させるコードを転送する工程、および
クエリプランが疑わしいと判定される場合、実行されると、一つまたは複数のプロセッサにマルチテナント環境において顧客データを機密保護するための措置を講じさせるコードを転送する工程
を含む、マルチテナント環境において顧客データを機密保護するためのコードを転送する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の分野
本発明は、概してデータベースネットワークシステムにおけるデータ機密保護に関し、より具体的には、マルチテナントデータベースネットワークシステムにおけるデータ機密保護に関する。
【０００２】
著作権表示
本特許文献の開示の一部は、著作権保護の対象となる内容を含む。著作権所有者は、特許庁の特許ファイルまたは記録に見られるような特許文献または特許開示の複製には異議を唱えないが、他の点ではすべての著作権を留保する。
【０００３】
関連出願の相互参照
本出願は、全体として参照により本明細書に組み入れられる「SYSTEMS AND METHODS FOR SECURING CUSTOMER DATA IN A MULTI-TENANT ENVIRONMENT」と題する2005年12月2日出願の米国特許仮出願第60/741,995号の恩典を主張する。
【背景技術】
【０００４】
背景
最新のデータベースシステムでは、一つまたは複数の顧客がデータベースシステムのハードウェアおよびソフトウェアの種々の要素を共用することができる。このような共用ハードウェアおよびソフトウェア手法は、データベース関連のサービスを、各顧客がハードウェアおよびソフトウェアを自分用に購入しなければならない場合に比べ、はるかに廉価で提供することを可能にする。そのようなシステムでは、顧客データが機密保護され、組織内の適正なユーザのみが閲覧可能かつ更新可能であることを保証することが非常に望ましい。
【０００５】
データ機密保護は、侵入検出および物理的アクセス規制をはじめとする物理的機密保護から始まる。典型的には、ネットワーク層では、HTTPプロトコルを介する適正なアクセスの場合を除き、データセンタ内のすべての機器へのアクセスを遮断するために工業規格ネットワークファイアウォールが使用される。また、ネットワークファイアウォールがすべての無許可アクセスを遮断していることを保証するため、ネットワークをデータセンタの外からスキャンすることもできる。それでもなお、アプリケーションソフトウェア、システム・ネットワークソフトウェアおよび／またはシステム・ネットワークハードウェアにおいて起こりうる、間違ったページまたはデータをユーザに返送しかねないエラーまたは欠陥に対する防御として、追加的または代替的な機密保護システムおよび方法を提供することは有用である。
【０００６】
したがって、共用ハードウェアおよびソフトウェアインフラストラクチャにおける任意のエラーまたは欠陥が、重大な顧客データを間違ったユーザに送り渡してしまうことがないことを保証するシステムおよび方法を提供することが望ましい。
【発明の開示】
【０００７】
概要
本発明は、マルチテナントデータベースネットワーク環境においてシステムおよびネットワーク機密保護を強化するためのシステムおよび方法を提供する。これらのシステムおよび方法は、一つまたは複数の技術、たとえば疑わしいクエリプランを識別する技術、クエリに含まれるユーザ情報および組織情報を、アプリケーションサーバからの応答に含まれるユーザ情報および組織情報と比較して、その応答が実際に適正なユーザに送信されていることを立証する技術、およびクライアント側で格納されたユーザ情報および組織ID情報を応答の中の類似情報と比較することによってアプリケーションサーバからの応答が実際に適正なユーザシステムに送信されているかどうかを立証する技術を使用する。これらの技術の一つまたは複数を使用して、態様は、マルチテナント環境において顧客データを機密保護することができる。
【０００８】
本明細書で使用する「マルチテナントデータベースシステム」とは、データベースシステムのハードウェアおよびソフトウェアの種々の要素を一つまたは複数の顧客が共用することができるシステムをいう。たとえば、所与のアプリケーションサーバは、多数の顧客からの要求を同時に処理することができ、所与のデータベーステーブルは、潜在的にはるかに多数の顧客のための行を格納することができる。本明細書で使用する「クエリプラン」とは、データベースシステム中の情報にアクセスするために使用される一連のステップをいう。
【０００９】
ある態様にしたがって、一例として、クエリプラン検出モジュールがデータベースシステムをポーリングして、クエリプランが疑わしいクエリプランであるかどうかを判定し、そうである場合、警報を出す。疑わしいクエリプランとしては、マルチテナントデータベースシステム中では決して起こらないはずであるクエリプランおよび数少ない特定された状況でしか起こらないはずであるクエリプラン、たとえば多数のパーティションを読むジョインおよびハッシュジョインがある。各組織のデータはマルチテナントデータベース中の単一の物理的データベースパーティションに格納されることができるため、多数のパーティション中のデータにアクセスする、ユーザによって起動されるクエリは、疑わしいクエリプランとみなすことができる。同様に、多数のテナントにまたがってデータを格納するために大きなテーブルが使用される場合、テーブル中のデータ行の全部または大部分を読む任意のクエリプランは、疑わしいとみなすことができる。簡潔に記すためにここでは列挙しない他の疑わしいクエリプランもまた、態様において考えられる。さらに、態様は、警報を出すことに代えてまたはそれに加えて、他の動作、たとえば非限定的に、疑わしいクエリプランの放棄、クエリプランの実行の延期、監査メッセージの記録等を実行することもできる。態様はまた、特定の疑わしいクエリプランがクエリプランの例外クラスのメンバーであるかどうかを判定し、そうである場合、警報を出すことなく、そのクエリプランの実行を許すこともできる。
【００１０】
もう一つの態様にしたがって、サーバ側ファイアウォールシステムが、アプリケーションサーバとクライアントシステムとの間に位置する一つまたは複数のファイアウォールサーバのスタックを含む。ファイアウォールサーバが、受信されたクライアント要求それぞれに関してユーザ情報および組織情報を記録し、この情報を、アプリケーションサーバからの応答に含まれるユーザ情報および組織情報と比較して、該応答が実際に適正なユーザに送信されていることを立証する。もう一つの態様では、クライアント側ファイアウォールシステムが、クライアント側で格納されたユーザ情報および組織ID情報を応答の中の類似情報と比較することによってアプリケーションサーバからの応答が実際に適正なユーザシステムに送信されているかどうかを立証する、クライアントシステム上で実行するロジックを含む。クライアント側ファイアウォールは、ネットワークハードウェアおよび／またはソフトウェアメッセージ移送におけるエラーを検出するのに有用である。
【００１１】
クライアントおよびサーバファイアウォール態様は、類似した原理、すなわち、どのユーザ情報および組織がページを要求しているのかを追跡したのち、ユーザに返送されるページが実際にそのユーザに宛てられていることを保証するという原理に基づくことができる。いくつかの態様では、これらの手法は、間違ったページをユーザに返送するおそれのある、アプリケーションソフトウェア、システムソフトウェアまたはハードウェアにおけるエラーまたは欠陥に対する防御を提供することができる。
【００１２】
例示的なクライアント側ファイアウォール態様では、ユーザ情報および組織の一意ID(たとえばユーザハッシュクッキー中)を使用して、どのユーザがページを要求しているのかを追跡する。サーバファイアウォールは、認証されたユーザのために直接作成された、各セッションに割り当てられたセッションID (SID)を使用してこれを追跡する。SIDは、ページごとに返送するには望ましくない可能性がある潜在的に慎重に扱うべき情報であるため、この態様におけるアプリケーションサーバは、ユーザハッシュを、返送されるページのHTML (Hyper-text Markup Language)に直接注入し、SIDをHTTP (Hyper-Text Transport Protocol)ヘッダに注入する。サーバファイアウォールは、各ページのヘッダ中のSIDをスキャンし、そのSIDを取り除いたのち、ページをクライアントに返送する。しかし、一つの局面では、ユーザハッシュは、クライアントファイアウォールによって妥当性検証された場合、html中に残る。
【００１３】
サーバファイアウォール態様は、サーバファイアウォールが要求ごとに稼働するという利点を有することができるが、クライアントファイアウォールは、そのファイアウォールを実現するロジックプラットフォーム(たとえば、Java、JavaScript、ActiveX等)をサポートするクライアントの場合にしか稼働しない。しかし、クライアントファイアウォール態様は、クライアントファイアウォールが、サーバファイアウォールによっては捕らえられないと考えられるネットワーク層中のエラーをサーバファイアウォールとクライアントとの間で捕らえることができるという利点を有することができる。
【００１４】
特許請求の範囲および本明細書の図面を含む残り部分を参照すると、本発明の他の特徴および利点が理解される。以下、添付の図面を参照しながら本発明のさらなる特徴および利点ならびに本発明の様々な態様の構造および動作を詳細に説明する。図中、同種の番号は同一または機能的に類似した要素を示す。
【００１５】
本発明の様々な態様を図面を参照しながら説明する。
【００１６】
詳細な説明
本発明の態様は、マルチテナントデータベースネットワーク環境において顧客データを機密保護するためのシステムおよび方法を提供する。特に、これらのシステムおよび方法は、マルチテナントデータベースネットワークシステムの共用ソフトウェアおよびハードウェアインフラストラクチャで起こりうる任意のエラーまたは欠陥が、間違ったユーザへのページまたはデータの送り渡しを生じさせることがないことを保証するのに役立つ。特定の局面で、これらのシステムおよび方法は、クエリプランを解析し、起こらないはずである、または十分に限定された数少ない状況でしか起こらないはずである特定のクエリプランを検出する。また、いくつかの態様にしたがって、サーバ側ファイアウォールシステムおよび方法が、ユーザに送信されるデータおよびページの機密保護がサーバ側インフラストラクチャ問題による影響を受けないことを保証する。特定の態様では、ユーザに送信されるデータおよびページの機密保護がネットワーク層インフラストラクチャ問題による影響を受けないことを保証するために、クライアント側ファイアウォールシステムおよび方法が提供される。
【００１７】
機密保護概観
アプリケーションレベルでの機密保護は、三つの主要なファセット、すなわち認証、許可および監査を含むものとして概念化することができる。認証機構は典型的には、サービスにログインする各ユーザが自らのパスワードを入力することを要求する。このパスワードを、たとえばデータベースに格納されたパスワードに照らして検査して、ユーザの身元を立証することができる。ひとたび立証されるならば、そのユーザに対してセッションが作成され、ユーザID、組織ID、クライアントIPアドレスおよび期限切れ時期のような情報を含むことができるセッションID (SID)がそのセッションに割り当てられる。また、SIDは、悪意のあるハッカーがその内容を改ざんすることを防ぐために暗号化することもできる。
【００１８】
SIDは典型的には、ブラウザによってアクセスするクライアントの場合にはハイパーテキスト転送プロトコル(HTTP)クッキーとしてユーザに返送され、アプリケーションプログラミングインターフェース(API)によってアクセスするクライアントの場合にはストリングデータフィールドとしてユーザに返送される。後続の要求のたびに、クライアントは、SIDを含むこのクッキーまたはデータフィールドを返送する。アプリケーションサーバは、要求を処理するとき、まずSIDを読み取り、SIDを解読してそのSIDが改ざんされていないことを立証し、SIDが期限切れではないこと、かつユーザが指定のIPアドレスからシステムにアクセスする許可をまだ有していることを立証する。SIDが期限切れになる(たとえば15分)前にウィンドウ内に起こるいかなる要求に関しても、アプリケーションサーバは、より遅い期限切れ時期を有する新たなSIDを作成することによって「セッションの寿命を延長」することができる。
【００１９】
許可機構は典型的には、ひとたびアプリケーションがユーザの身元およびそのユーザが属する組織を(たとえば上記のSID機構から)知るならば、ユーザプロフィールに基づいて種々の特徴および機能への適正なアクセスを強要するアプリケーションを含む。アプリケーションはまた、組織のために構成された任意のデータ共用規則に基づく適正なデータ行アクセスを強要する。
【００２０】
監査機構は典型的には、たとえば、ユーザログインの日時ならびにSIDからのユーザIDおよび組織IDに基づいてユーザがシステムに対して実行する動作を記録するアプリケーションを含む。この情報は、種々の監査活動のために使用することができる。
【００２１】
次に、例示的な態様を参照しながら、一つまたは複数の認証、許可および監査ファセットでアプリケーション機密保護に対する改善を提供するための機構および方法を説明する。
【００２２】
システム概観
図1は、マルチテナントデータベースシステムを使用することができる環境を示す。図1 (さらに詳細には図2)に示すように、ユーザシステム12は、ネットワーク14を介して、マルチテナントデータベースシステム(MTS)16と対話することができる。これらのユーザシステム12のユーザは、異なる能力を有するユーザであることができ、ある特定のユーザシステム12の能力は、現在のユーザに対する許可(許可レベル)によってすべて決まる。たとえば、ある販売員が特定のユーザシステム12を使用してMTS16と対話している場合、そのユーザシステムは、その販売員に割り当てられた能力を有する。しかし、管理者がそのユーザシステムを使用してMTS16と対話している場合、そのユーザシステムは、その管理者に割り当てられた能力を有する。階層ロールモデルを有するシステムでは、ある許可レベルのユーザは、より低い許可レベルのユーザがアクセス可能であるアプリケーション、データおよびデータベース情報にアクセスすることはできるが、より高い許可レベルのユーザがアクセス可能である特定のアプリケーション、データベース情報およびデータにアクセスすることはできない。このように、アプリケーションおよびデータベース情報にアクセスし、それを変更することに関して、異なるユーザは、ユーザの機密保護または許可レベルに依存して異なる能力を有する。
【００２３】
ネットワーク14は、LAN (ローカルエリアネットワーク)、WAN (ワイドエリアネットワーク)、ワイヤレスネットワーク、二地点間ネットワーク、星状ネットワーク、トークンリングネットワーク、ハブネットワークまたは他の適切な構成であることができる。現在使用されているもっとも一般的なタイプのネットワークは、TCP/IP (トランスファーコントロールプロトコルおよびインターネットプロトコル)ネットワーク、たとえば本明細書における例の多くで使用される、「インターネット(Internet)」(「I」は大文字)と呼ばれることが多いネットワークの全世界的相互ネットワークである。しかし、TCP/IPは現在好ましいプロトコルであるが、本発明が使用することができるネットワークはそれに限定されないということが理解される。
【００２４】
ユーザシステム12は、TCP/IPを使用してMTS16と通信することもできるし、より高いネットワークレベルでは、他の一般的なインターネットプロトコル、たとえばHTTP、FTP、AFS、WAP等を使用して通信することもできる。HTTPが使用される例では、ユーザシステム12は、MTS16側のHTTPサーバとの間でHTTPメッセージを送受信するための、一般に「ブラウザ」と呼ばれるHTTPクライアントを含むことができる。このようなHTTPサーバは、MTS16とネットワーク14との間の唯一のネットワークインターフェースとして実現することもできるが、他の技術を併用または代用してもよい。いくつかの実現態様では、MTS16とネットワーク14との間のインターフェースは、負荷分担機能、たとえば、負荷を平衡させ、入って来るHTTP要求を複数のサーバで均等に分配するための総当たり式HTTP要求分配装置を含む。好ましくは、複数のサーバそれぞれは、少なくともそのサーバにアクセスしているユーザに関しては、MTSのデータへのアクセスを有する。
【００２５】
一つの局面で、図1に示すシステムは、ウェブベースの顧客関係管理(CRM)システムを実現する。たとえば、一つの局面で、MTS16は、CRMソフトウェアアプリケーションを実現し、実行し、関連のデータ、コード、フォーム、ウェブページおよび他の情報をユーザシステム12との間で提供し、データベースシステム関連データ、オブジェクトおよびウェブページコンテンツに格納し、そこから検索するように構成されたアプリケーションサーバを含む。マルチテナントシステムでは、多数のテナントのためのデータを同じ物理的データベースオブジェクトに格納することができるが、しかしテナントデータは典型的には、明示的に共用される場合を除き、一つのテナントが別のテナントのデータにアクセスすることのないよう、一つのテナントのデータが他のテナントのデータから論理的に別々に維持されるように編成される。特定の局面では、システム16は、CRMアプリケーションに代わるアプリケーションまたはCRMアプリケーションに追加されるアプリケーションを実現する。たとえば、システム16は、CRMアプリケーションをはじめとする多数のホストされた(標準およびカスタム)アプリケーションへのテナントアクセスを提供することができる。
【００２６】
ネットワークインターフェース20、テナントデータのための格納装置22、MTS16およびおそらくは多数のテナントにとってアクセス可能なシステムデータのための格納装置24、MTS16の種々の機能を実現するためのプログラムコード26ならびにMTSシステムプロセスおよびテナント固有プロセスを実行する、たとえばアプリケーションホストサービスの一部としてアプリケーションを稼働させるためのプロセススペース28を含む、MTS16の要素の一つの編成が図1に示されている。MTS16上で実行することができるさらなるプロセスとしては、データベース索引付けプロセスがある。
【００２７】
図1に示すシステム中のいくつかの要素は、本明細書で詳細に説明する必要のない従来の周知の要素を含む。たとえば、各ユーザシステム12は、デスクトップパーソナルコンピュータ、ワークステーション、ラップトップ、PDA、携帯電話もしくは任意のワイヤレスアクセスプロトコル(WAP)使用可能装置またはインターネットもしくは他のネットワーク接続と直接または間接的にインターフェースすることができる他のコンピューティング装置を含むことができる。ユーザシステム12は典型的には、HTTPクライアント、たとえばブラウザプログラム、たとえばMicrosoftのInternet Explorerブラウザ、NetscapeのNavigatorブラウザ、Operaのブラウザ、または携帯電話、PDAもしくは他のワイヤレス装置の場合にはWAP使用可能ブラウザ等を稼働させて、ユーザシステム12のユーザ(たとえばマルチテナントデータベースシステムの加入者)が、MTS16からネットワーク14を介してそれに利用可能な情報、ページおよびアプリケーションにアクセスし、それを処理し、閲覧することを可能にする。各ユーザシステム12はまた、典型的には、MTS16または他のシステムもしくはサーバによって提供されるページ、フォーム、アプリケーションおよび他の情報とともにブラウザによって表示装置(たとえばモニタスクリーン、LCD等)上に提供されるグラフィカルユーザインターフェース(GUI)と対話するための一つまたは複数のユーザインターフェース装置、たとえばキーボード、マウス、タッチスクリーン、ペン等を含む。たとえば、ユーザインターフェース装置は、MTS16によってホストされるデータおよびアプリケーションにアクセスし、格納されたデータに対して探索を実行し、ユーザがユーザに提示されることができる種々のGUIページと対話することを他のやり方で可能にするために使用することができる。
【００２８】
上述したように、本発明は、ネットワークの特定の全世界的相互ネットワークを指すインターネットとの使用に適している。しかし、インターネットに代えて他のネットワーク、たとえばイントラネット、エクストラネット、仮想プライベートネットワーク(VPN)、非TCP/IPベースのネットワーク、LANまたはWAN等を使用することもできることが理解される。
【００２９】
一つの態様にしたがって、各ユーザシステム12およびそのコンポーネントのすべては、Intel Pentiumプロセッサ等といった中央処理ユニットを使用して稼働されるコンピュータコードを含む、ブラウザのようなアプリケーションを使用してオペレータ構成可能である。同様に、MTS16(および、二つ以上ある場合には、MTSのさらなるインスタンス)およびそれらのコンポーネントのすべては、Intel Pentiumプロセッサ等といったの中央処理ユニットまたは多数のプロセッサユニットを使用して稼働されるコンピュータコードを含むアプリケーションを使用してオペレータ構成可能である。MTS16を、本明細書に記載するようにウェブページ、アプリケーションならびに他のデータおよび媒体コンテンツを相互通信し、処理するように作動させ、構成するためのコンピュータコードは、好ましくは、ダウンロードされ、ハードディスクに格納されるが、プログラムコード全体またはその部分は、周知であるような他の揮発性または不揮発性記憶媒体または装置、たとえばROMまたはRAMに格納することもできるし、プログラムコードを格納することができる任意の媒体、たとえばコンパクトディスク(CD)媒体、デジタル多用途ディスク(DVD)媒体、フロッピーディスク等に提供することもできる。さらには、プログラムコード全体またはその部分は、周知であるようにたとえばインターネットを介してソフトウェアソースまたは別のサーバから転送し、ダウンロードすることもできるし、周知であるように他の従来のネットワーク接続(たとえばエクストラネット、VPN、LAN等)を介して、周知であるように任意の通信媒体およびプロトコル(たとえばTCP/IP、HTTP、HTTPS、イーサネット等)を使用して転送することもできる。また、本発明の局面を実現するコンピュータコードは、クライアントシステムおよび／またはサーバもしくはサーバシステム上で実行することができる任意のプログラミング言語、たとえばC、C++、HTML、他のマークアップ言語、Java、JavaScript、ActiveX、任意の他のスクリプト言語、たとえばVBScriptおよび周知であるような他多くのプログラミング言語で実現することができるということが理解される。
【００３０】
一つの態様にしたがって、各MTS16は、ウェブページ、フォーム、アプリケーション、データおよび媒体コンテンツをユーザ(クライアント)システム12に提供して、MTS16のテナントとしてのユーザシステム12によるアクセスをサポートするように構成されている。そのようなものとして、MTS16は、データが共用されない限り各テナントのデータを別々に維持するための機密保護機構を提供する。一つより多いMTSが使用される場合、それらは、互いに近接させて(たとえば、一つのビルまたは敷地の中に配置されたサーバファーム中に)位置させることもできるし、互いに離れた場所に分散させることもできる(たとえば、一つまたは複数のサーバをA市に位置させ、一つまたは複数のサーバをB市に位置させる)。本明細書で使用するように、各MTSは、局所的にまたは一つもしくは複数の地理的場所に分散した一つもしくは複数の論理的および／または物理的に接続されたサーバを含むことができる。さらには、「サーバ」とは、当技術分野で周知であるように、処理ハードウェアおよびプロセススペースならびに対応する格納システムおよびデータベースアプリケーション(たとえばOODBMSまたはRDBMS)を含むコンピュータシステムを含むことを意図する。また、「サーバシステム」と「サーバ」とが本明細書でしばしば互換可能に使用されるということが理解される。同様に、本明細書に記載するデータベースは、単一のデータベース、分散データベース、分散データベースの集合体、冗長オンラインもしくはオフラインバックアップまたは他の冗長性を有するデータベース等として実現することができ、分散データベースまたは格納ネットワークおよび対応する処理知能(processing intelligence)を含むこともできる。
【００３１】
図2は、MTS16の要素および種々の相互接続をさらに詳細に示す。この例では、ネットワークインターフェースは、一つまたは複数のHTTPアプリケーションサーバ100として実現されている。同じく、個々のテナントプロセススペース104を含むシステムプロセススペース102、システムデータベース106、テナントデータベース108およびテナント管理プロセススペース110が示されている。テナントデータベース108は、物理的編成または、論理的編成のいずれかであることもできる個々のテナント格納区域112に分割されていてもよい。各テナント格納区域112内で、ユーザ格納装置114は、各ユーザに対して同様に割り当てられることができる。たとえば、ユーザが最も頻繁に使う(MRU：most recently used)項目のコピーがユーザ格納区域114に格納されてもよい。同様に、テナントである編成全体とってのMRU項目のコピーがテナント格納区域112に格納されてもよい。
【００３２】
また、各アプリケーションサーバ100を異なるネットワーク接続によってデータベースシステム、たとえばシステムデータベース106およびテナントデータベース108に通信可能に結合してもよいことが理解される。たとえば、一つのサーバ1001をインターネット14によって結合し、別のサーバ100N-1を直接ネットワークリンクによって結合し、別のサーバ100Nをさらに異なるネットワーク接続によって結合してもよい。トランスファーコントロールプロトコルおよびインターネットプロトコル(TCP/IP)が、サーバ100とデータベースシステムとの間の通信に典型的なプロトコルであるが、使用されるネットワーク相互接続に依存して、他のトランスポートプロトコルを使用してシステムを最適化してもよいということが当業者には明らかである。
【００３３】
特定の局面で、各アプリケーションサーバ100は、テナントである任意の組織に対応する任意のユーザのための要求を取り扱うように構成されている。何らかの理由で任意の時機にサーバをサーバプールに追加したり、そこから取り去ったりすることができることが望ましいため、好ましくは、特定のアプリケーションサーバ100に対するユーザおよび／または組織のサーバ相性はない。したがって、一つの態様で、負荷分散機能(たとえばF5 Big-IP負荷分散装置)を実現するインターフェースシステム(たとえば図4を参照)がサーバ100とユーザシステム12との間に通信可能に結合されてサーバ100への要求を分散する。一つの局面では、負荷分散装置は、最小接続アルゴリズムを使用してユーザ要求をサーバ100に経路指定する。総当たりおよび観測応答時間のような負荷分散アルゴリズムの他の例を使用することもできる。たとえば、特定の局面では、同じユーザからの三つの連続する要求が三つの異なるサーバ100にヒットすることもあり、異なるユーザからの三つの要求が同じサーバ100にヒットすることもある。このようにして、MTS16は、異なるユーザ情報および組織にまたがって異なるオブジェクト、データおよびアプリケーションの格納およびそれらへのアクセスを取り扱うところのマルチテナント式である。
【００３４】
格納の一例として、一つのテナントは、販売戦力を雇用し、各販売員がMTS16を使用して販売プロセスを管理する会社であってもよい。したがって、ユーザは、すべてそのユーザの個人販売プロセスに適用可能な接触データ、リードデータ、顧客フォローアップデータ、業績データ、目標および進捗データ等を維持することができる(たとえばテナントデータベース108中に)。好ましいMTS編成では、アクセス、閲覧、変更、報告、転送、計算等をするためのこのデータおよびアプリケーションのすべてが、ネットワークアクセス以上のものを有しないユーザシステムによって維持し、アクセスすることができるため、ユーザは、自らの販売努力およびサイクルを多くの異なるユーザシステムのいずれかからでも管理することができる。たとえば、販売員が顧客を訪問し、その顧客がロビーにインターネットアクセスを有する場合、その販売員は、顧客がロビーに到着するのを待つ間その顧客に関する重要な更新を得ることができる。
【００３５】
各ユーザの雇用主にかかわらず各ユーザデータは他のユーザのデータから別々にされてもよいが、一部のデータは、テナントである所与の組織に関して複数のユーザまたは全ユーザによって共用される、またはアクセス可能である全組織的データであってもよい。したがって、MTS16によって管理される、テナントレベルで割り当てられるデータ構造があってもよいし、一方で、他のデータ構造はユーザレベルで管理されてもよい。MTSは、考えられる競合他社を含む多数のテナントをサポートする可能性があるため、MTSは、データ、アプリケーションおよびアプリケーション使用を別々に維持する機密保護プロトコルを有するべきである。また、多くのテナントは、自らのシステムを維持するよりもMTSにアクセスすることを選択するため、冗長性、使用可能時間およびバックアップがさらなる重要な機能であり、MTSにおいて実現される必要がある。
【００３６】
ユーザ固有のデータおよびテナント固有のデータに加えて、MTS16はまた、多数のテナントによって使用可能なシステムレベルデータまたは他のデータを維持する。このようなシステムレベルデータは、テナント間で共用可能である業界レポート、ニュース、投稿等を含む可能性がある。
【００３７】
特定の局面で、クライアントシステム12は、アプリケーションサーバ100と通信して、データベースシステム106および／またはデータベースシステム108への一つまたは複数のクエリを要する可能性があるシステムレベルおよびテナントレベルデータをMTS16から要求し、更新する。MTS16 (たとえば、MTS16中のアプリケーションサーバ100)が、所望の情報にアクセスするように設計された一つまたは複数のSQLステートメント(SQLクエリ)を自動的に生成する。データベースシステム108はまた、データベースからの要求されたデータにアクセスするためのクエリプランを生成することもできる。
【００３８】
各データベースは、一般に、既定のカテゴリーに当てはめられたデータを含むオブジェクトの集合体、たとえば論理テーブルの集合とみなすことができる。「テーブル」とは、データオブジェクトの一つの表現であり、本明細書では、本発明にしたがってオブジェクトおよびカスタムオブジェクトの概念的記述を簡素化するために使用される。本明細書では「テーブル」と「オブジェクト」とは互換可能に使用することができるということが理解される。各テーブルは一般に、列またはフィールドとして論理的に編成された一つまたは複数のデータカテゴリーを閲覧可能なスキーマで含む。テーブルの各行またはレコードは、フィールドによって規定される各カテゴリーに関するデータのインスタンスを含む。たとえば、CRMデータベースは、名前、住所、電話番号、ファックス番号等の基本的接触情報のためのフィールドによって顧客を記述するテーブルを含むこともできる。もう一つのテーブルが、顧客、製品、販売価格、日付等の情報のためのフィールドを含め、購入オーダを記述することができる。一部のマルチテナントデータベースシステムでは、標準エンティティテーブルがすべてのテナントによる使用のために設けられる可能性がある。CRMデータベースアプリケーションの場合、そのような標準エンティティは、それぞれが既定のフィールドを含む、会計、接触、リードおよび機会データのためのテーブルを含む可能性がある。本明細書では「エンティティ」はまた、「オブジェクト」および「テーブル」とで互換可能に使用することもできるということが理解される。
【００３９】
一部のマルチテナントデータベースシステムでは、テナントは、カスタムオブジェクトを作成し、格納することを許されることもできるし、たとえば標準オブジェクトのためのカスタムフィールド、たとえばカスタム索引フィールドを作成することによって標準エンティティまたはオブジェクトをカスタマイズすることを許されることもできる。2004年4月2日に出願された「Custom Entities and Fields In a Multi-Tenant Database System」と題する、参照により本明細書に組み入れられる米国特許第出願第10/817,161号は、マルチテナントデータベースシステムにおいてカスタムオブジェクトを作成し、標準オブジェクトをカスタマイズするためのシステムおよび方法を教示している。特定の局面では、たとえば、すべてのカスタムエンティティデータ行が、1組織あたり多数の論理テーブルを含むことができる一つのマルチテナント物理的テーブルに格納される。多数の「テーブル」が実際には一つの大きなテーブルに格納される、またはそれらのデータが他の顧客のデータと同じテーブルに格納されることができるということが顧客に対して透過的である。
【００４０】
マルチテナントデータベースシステムでは、すべての顧客が、そのシステムを稼働させるハードウェアおよびソフトウェアの種々の要素を共用することができる。たとえば、所与のアプリケーションサーバは、何百もの顧客の要求を同時に処理することができる。そして、所与のデータベーステーブルが何千もの顧客からの行を格納することができる。そのようなシステムでは、顧客のデータが機密保護され、組織中の適正なユーザによってのみ閲覧可能かつ更新可能であることを保証することが非常に望ましい。従来のデータ機密保護、たとえば侵入検出および物理的アクセス規制ならびに工業規格ネットワークファイアウォールを実現することもできるが、それでもなお、アプリケーションソフトウェア、システム・ネットワークソフトウェアおよび／またはシステム・ネットワークハードウェアにおいて起こりうる、間違ったページまたはデータをユーザに返送しかねないエラーまたは欠陥に対する防御として、追加的または代替的な機密保護システムおよび方法を提供することは有用である。
【００４１】
機密保護機能
図3は、一つの態様のデータベースクエリプラン検出システム200を示す。一つの局面で、図3のデータベースクエリプラン検出システムは、図1のマルチテナントデータベースシステム16中で実現される。図示するように、データベースクエリプラン検出システム200は、データベースシステム220(たとえば、図2のシステムデータベース106および／またはテナントデータベース108)に通信可能に結合されたデータベースクエリプラン検出モジュール210を含む。データベースクエリプラン検出モジュール210は、定期的にデータベース220に問い合わせしてクエリプランを検索し、解析するプロセスを実現する。特定の局面では、データベースクエリプラン検出モジュール210は、図示するような別個の装置、たとえば別個のサーバまたはコンピュータシステムとして実現されるが、アプリケーションサーバ100またはデータベースサーバとして実現されてもよいということが理解される。
【００４２】
典型的なマルチテナントデータベーススキーマでは、特定のクエリプランは決して起こらないはずであり、他のクエリプランは数少ない特定された状況でしか起こらないはずである。そのようなものとしては、多数のパーティションを読むジョインおよびハッシュジョインを挙げることができる。たとえば、各組織のデータは一つの物理的データベースパーティションに格納することができるため、多数のパーティション中のデータにアクセスする、ユーザによって起動される任意のクエリは疑わしいクエリである。同様に、多数のテナントにまたがってデータを格納するために大きなテーブルが使用される場合、テーブル中のデータ行の全部または大部分を読む任意のクエリプランは疑わしいクエリプランと考えられる。
【００４３】
一つの局面で、データベースクエリプラン検出モジュールは、データベースから独立して稼働するバックグラウンドプロセスを実行し、データベースが使用しているクエリプランのためのデータベースを頻繁にポーリングして、任意の予想外のプランまたは疑わしいプランを探す。不適正または疑わしいクエリプランを検出する場合、一つの局面で、モジュールは、その疑わしいプランが例外、たとえばシステムハウスキーピングタスクを実行するクエリプランに該当するかどうかを判定し、該当しない場合、モジュールは、その情報を記録し、適切な警報を出す。プランが例外に該当する場合、プランを進行させることができる。製造サービスに対して、ならびに開発および試験中の両方にこのクエリプラン検出モジュールを稼働させることは、間違ったデータが間違った顧客によってアクセスされる結果を招くおそれのあるコードまたはインフラストラクチャ問題を検出するのに有用である。
【００４４】
疑わしいと考えられるさらなるクエリプランの例としては、全テーブルスキャン、マージ・ジョイン・カルテシアン(Cartesian)または「Partition Hash All」クエリもしくは類似した処理を含む任意のプランがある。「Partition Hash All」クエリ実行ステップまたは類似のステップでは、データベースは、全パーティションをメモリに読み込み、それを包括的アクセスに備えて編成することができる。これは、クエリが物理的パーティションにまたがってスキャンしていることを意味する。任意の全テーブルスキャンを実行するクエリプランは、組織フィルタを含まないクエリを示す可能性がある。一つの典型的なマルチテナントデータベーススキーマの場合、所与の組織の行は、典型的に、データベーステーブルの低い割合である。データベースが「索引を使用しない」全テーブルスキャンを実行している場合、これは、クエリが組織IDフィルタをミスしている可能性が高いことを示す。マージ・ジョイン・カルテシアンは、データベース(たとえば、Oracle, Inc.(Redwood Shores, California)によって提供されるデータベース)が、そのテーブル中の行の高い割合にアクセスするクエリに関して、二つのテーブルからすべてのデータをメモリに読み込むことによってクエリを最適化しようとしていることを示す特定のプランである。これらのプランのすべては数少ないケースで有効であり、したがって、一つの局面では「例外」リストに載ると考えられる。
【００４５】
図4は、一つの態様のサーバ側ファイアウォールシステム300を示す。一つの局面で、図4のファイアウォールシステムは、図1のマルチテナントデータベースシステム16で実現される。図示するように、ファイアウォールシステム300は、アプリケーションサーバ100に通信可能に結合された一つまたは複数のファイアウォールサーバ310を含む。一つまたは複数の負荷分散サーバを含む負荷分散システム305が存在する場合、ファイアウォールサーバ310は、負荷分散システム305とアプリケーションサーバ100との間に位置する。しかし、ファイアウォールサーバ310の機能を負荷分散システム305またはアプリケーションサーバ100中で実現することもできるということが理解される。しかし、ファイアウォールサーバ機能がアプリケーションサーバと切り離されており、ファイアウォールサーバが、アプリケーションサーバとは異なるハードウェアおよびソフトウェアプラットフォームで作動するということが好ましい。これは、一つのシステム(たとえば、アプリケーションサーバシステムまたはファイアウォールサーバシステム)に影響するインフラストラクチャ問題が他のシステムに影響するという可能性を大きく減らす。同様に、負荷分散システム305がファイアウォールサーバ310とは異なるハードウェアおよびソフトウェアプラットフォームで作動することが望ましい。
【００４６】
一つの局面で、図4に示すように、ファイアウォールシステム300は、UIをレンダリングし、ビジネス論理を実行するアプリケーションサーバ100からの一つまたは複数のサーバ310の別個のスタックを含む。これらのファイアウォールサーバ310の目的は、負荷分散システム305とアプリケーションサーバ100との間(または、負荷分散システム機能が存在しない場合、ネットワーク14とアプリケーションサーバ100との間)で要求を中継することである。中継する要求それぞれに関して、各ファイアウォールサーバ310は以下のステップを実行する：
(1)クライアント12から受信された要求中のSID (またはクライアントハッシュ)を記録する；および
(2)要求をアプリケーションサーバ100に転送する。
【００４７】
特定の局面で、負荷分散装置とファイアウォールサーバとの間に1対1、1対多または多対多の対応があってもよい。すなわち、負荷分散サーバは、一つまたは複数の特定のファイアウォールサーバにアドレス指定するように構成されてもよいし、または任意のファイアウォールサーバにアドレス指定することもできる。同様に、ファイアウォールサーバとアプリケーションサーバとの間に1対1、1対多または多対多の対応があってもよい。
【００４８】
アプリケーションサーバ100は、受信されたクライアント要求に応答するとき、典型的には、その応答のためのSID (または、ユーザIDおよび組織ID情報を備えたクライアントハッシュ)を含む応答ヘッダを付加する。ファイアウォールサーバ310は、応答メッセージを受信し、SID (またはクライアントハッシュ)を抽出し、応答の中のSID (またはクライアントハッシュ)中の情報を、はじめにクライアントによって発行されたSID中の情報に比較する。それらが異なる場合、ファイアウォールサーバは、何らかのエラーがあったことを認識し、クライアントに対し、間違ったページではなくエラーコードで応答する。ファイアウォールは、このエラーを記録し、たとえばシステム管理者に通知を送信することによって適切な警報を出す。情報が一致する場合、ファイアウォールサーバ310は、ページの本体および／またはHTTPヘッダからSIDを引き離し、応答を要求側クライアントに転送することができる。
【００４９】
図5は、一つの態様の典型的なクライアントファイアウォールプロセスを示す。典型的な動作で、クライアントシステムは、ログイン要求をMTS16に送信することによってセッションを開始し、そのログイン要求がアプリケーションサーバ100によって受信される。応答して、アプリケーションは、ログイン応答を要求側クライアントシステム12に返送する。一つの局面で、応答はログインページを含む; ページ「frontdoor.jsp」が、常に、ログインする際にユーザが遭遇する最初のページである。このページは、簡単なログインスクリプトを稼働させて(クライアント側で)、クライアントが検証ロジックをサポートするということを立証する。クライアントファイアウォールはクライアント側検証ロジック処理に依存するため、これは重要である。一つの局面で、検証ロジックはJavaScriptで実現され、ログインスクリプトは、クライアントがJavaScriptをサポートするということを立証する。クライアントがJavaScript(または、ファイアウォールが実現されているクライアントロジックプラットフォームなら何でも)をサポートしない場合、アプリケーションは作動するが、ファイアウォールなしで作動する。
【００５０】
一つの局面で、ユーザがログインするとき、「frontdoor.jsp」ページがSIDクッキーを設定する。SIDが期限切れになる(たとえば15分)前にウィンドウ内で要求される最初のページである場合、サービス中の他の任意のページがSIDクッキーを設定することもできる。SIDクッキーが設定されるたび、「ユーザハッシュ」と呼ばれるもう一つのクッキーが同じく設定される。このクッキーは、所与のユーザ情報および組織を一意に識別する文字数字列を含む。
【００５１】
SIDおよびユーザハッシュクッキーは、HTTPクッキーヘッダではなくクライアントロジック(たとえばJavaScript)を使用して設定されなければならない。これは、SIDまたはユーザハッシュクッキーが設定される前にそのページが本当にクライアントに宛てられているということをクライアントファイアウォールロジックが妥当性検証することを可能にする。標準のHTTPヘッダを使用してクッキーが設定される場合、クライアントファイアウォールコードが稼働する前にブラウザがSIDおよびユーザハッシュクッキーを設定して検査を無用にする。
【００５２】
図5に戻ると、ユーザがシステムにログインしたのち、要求またはクエリをシステムに送信することができる。アプリケーションサーバ100が要求を受信し、処理し、応答メッセージを要求側クライアントに返送する。一つの局面では、アプリケーションサーバ100は、クライアントに返送される各ページに関して、そのページが生成されたユーザ情報および組織のためのユーザIDおよび組織IDのハッシュを含む。また、クライアントベースのロジック(たとえばJavaScript)を各ページに含む。クライアントによって受信されると、クライアントロジックが実行し、ページが生成されたユーザIDおよび組織IDが、最初の要求を出したユーザIDおよび組織と同じであることを妥当性検証する。一つの局面で、このロジックは、クライアント側で(たとえばSIDおよび／またはユーザハッシュクッキー中に)格納されたユーザIDおよび組織IDを、ページとともに返送されるIDと比較する。このクライアント側ロジックのためのJavaScriptソースコードの一例を以下に示す。
2009518713.tif 000003
【００５３】
「needsClientHash」という関数および他の関連するJavaScript関数のためのJavaScriptソースコードの例を以下に示す。
2009518713.tif 000004
【００５４】
サーバファイアウォール態様と同様に、クライアントファイアウォールが、あるページが間違ったユーザまたは組織に送り渡されていることを検出する場合、ファイアウォールはただちにユーザをアプリケーションからログアウトさせ、適切な警報を出す。
【００５５】
他のプログラミングロジックを使用してクライアントファイアウォール検証ロジックを実現してもよいということが理解される。たとえば、JavaまたはActiveXプラグイン等を使用することもできる。たとえばActiveXプラグインとして実現される場合、クライアントに送信される各ページは、検証ロジックを実行するためにActiveXプラグインへの呼出しを含むことができる。
【００５６】
実施例および具体的な態様に関して本発明を説明したが、本発明は、開示された態様に限定されないということを理解しなければならない。むしろ、本発明は、当業者には自明であるような種々の改変および類似形態を包含することを意図する。したがって、請求の範囲は、そのような改変および類似形態をすべて包含するために、もっとも広義な解釈を与えられるべきである。
【図面の簡単な説明】
【００５７】
【図１】マルチテナントデータベースシステムを使用することができる環境を示す。
【図２】図1の要素および種々の相互接続をさらに詳細に示す。
【図３】一つの態様のデータベースクエリプラン検出システム200のアーキテクチャを示す。
【図４】一つの態様のサーバ側ファイアウォールシステム300のアーキテクチャを示す。
【図５】本発明の一つの態様のクライアントファイアウォールプロセスを示す。
【図１】
2009518713.tif 000006
【図２】
2009518713.tif 000007
【図３】
2009518713.tif 000008
【図４】
2009518713.tif 000009
【図５】
2009518713.tif 000010
【手続補正書】
【提出日】平成20年8月7日(2008.8.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
多数のテナントそれぞれのデータを格納するためのデータベースシステム、
該多数のテナントそれぞれの該データベースシステムへのネットワークアクセスを提供するための、該データベースシステムおよびネットワークに通信可能に結合されたアプリケーションサーバ、および
クエリプランを求めて該データベースシステムをポーリングし、クエリプランを解析してクエリプランが疑わしいかどうかを判定するためのクエリプラン検出モジュール
を含む、マルチテナントデータベースシステム。
【請求項２】
クエリプラン検出モジュールが疑わしいクエリプランの実行を阻止する、請求項1記載のシステム。
【請求項３】
クエリプランが疑わしい場合、クエリプラン検出モジュールが警報を発する、請求項1記載のシステム。
【請求項４】
疑わしいクエリプランそれぞれに関して、クエリプラン検出モジュールが、該疑わしいクエリプランがクエリプラン例外に該当するかどうかを判定する、請求項1記載のシステム。
【請求項５】
クエリプラン例外に該当する疑わしいクエリプランが実行される、請求項4記載のシステム。
【請求項６】
クエリプランが疑わしい場合、クエリプラン検出モジュールがクエリプラン情報を記録する、請求項1記載のシステム。
【請求項７】
クエリプラン検出モジュールが製造および開発中に稼働する、請求項1記載のシステム。
【請求項８】
クエリプランを解析してクエリプランが疑わしいかどうかを判定することが、該クエリプランが、マルチテナントデータベースシステム中では決して起こらないはずであるクエリプランまたはマルチテナントデータベースシステム中の少数の特定された状況でしか起こらないはずであるクエリプランの少なくとも一つであるかどうかを判定することを含む、請求項1記載のシステム。
【請求項９】
多数のテナントのデータを格納するためのデータベースシステム、
該データベースシステムおよびネットワークに通信可能に結合された、少なくとも一つのクライアントシステムのデータベースシステムへのネットワークアクセスを提供するアプリケーションサーバ、ならびに
クライアント要求を受信し、
該クライアント要求からユーザ情報および組織情報を抽出し、
該クライアント要求を該アプリケーションサーバに転送し、かつ
該アプリケーションサーバから受信された応答メッセージに含まれるユーザ情報および組織情報を、該クライアント要求から抽出された該ユーザ情報および組織情報と比較するように動作可能である、
該アプリケーションサーバと該少なくとも一つのクライアントシステムとの間に通信可能に結合された、少なくとも一つのファイアウォールサーバ
を含む、マルチテナントデータベースシステム。
【請求項１０】
ユーザ情報および組織情報が、セッションID (SID)クッキーおよびストリングデータフィールドの少なくとも一つに含まれ、クライアント要求および応答メッセージそれぞれが該セッションID (SID)クッキーおよび該ストリングデータフィールドの少なくとも一つを含む、請求項9記載のマルチテナントデータベースシステム。
【請求項１１】
ファイアウォールサーバが、応答メッセージの一部として含まれるページの本体からユーザ情報および組織情報の部分を引き離し、該応答メッセージをクライアントシステムに転送する、請求項9記載のマルチテナントデータベースシステム。
【請求項１２】
応答の中のユーザ情報および組織情報が抽出されたユーザ情報および組織情報と一致しない時に、ファイアウォールサーバが警報を出す、請求項9記載のマルチテナントデータベースシステム。
【請求項１３】
応答の中のユーザ情報および組織情報が抽出されたユーザ情報および組織情報と一致しない時に、ファイアウォールサーバがクライアント要求に応答してエラーコードを生成し、かつ送信する、請求項9記載のマルチテナントデータベースシステム。
【請求項１４】
応答の中のユーザ情報および組織情報が抽出されたユーザ情報および組織情報と一致しない時に、ファイアウォールサーバがクライアント要求に応答してクライアントシステムをアプリケーションサーバからログアウトさせる、請求項9記載のマルチテナントデータベースシステム。
【請求項１５】
応答の中のユーザ情報および組織情報が抽出されたユーザ情報および組織情報と一致しない時に、ファイアウォールサーバがエラー情報を記録する、請求項9記載のマルチテナントデータベースシステム。
【請求項１６】
ファイアウォールサーバが、ユーザ情報および組織情報の一意IDを使用して、ページを要求しているユーザの身元を追跡する、請求項9記載のマルチテナントデータベースシステム。
【請求項１７】
ファイアウォールサーバが、応答メッセージに含まれるユーザ情報および組織情報を抽出する、請求項9記載のマルチテナントデータベースシステム。
【請求項１８】
ファイアウォールサーバが、応答メッセージのHTMLヘッダからユーザ情報および組織情報を抽出する、請求項9記載のマルチテナントデータベースシステム。
【請求項１９】
マルチテナントデータベースシステムのクエリプランをモニタリングして、任意のクエリプランが、マルチテナントデータベースシステム中では決して起こらないはずであるクエリプランまたはマルチテナントデータベースシステム中の少数の特定された状況でしか起こらないはずであるクエリプランの少なくとも一つであるかどうかを判定する工程、および
クエリプランが、マルチテナントデータベースシステム中では決して起こらないはずであるクエリプランまたはマルチテナントデータベースシステム中の少数の特定された状況でしか起こらないはずであるクエリプランの少なくとも一つであると判定される場合、マルチテナント環境において顧客データを機密保護するための措置を講じる工程
を含む、マルチテナント環境において顧客データを機密保護する方法。
【請求項２０】
クエリプランが、マルチテナントデータベースシステム中では決して起こらないはずであるクエリプランまたはマルチテナントデータベースシステム中の少数の特定された状況でしか起こらないはずであるクエリプランの少なくとも一つであると判定される場合、マルチテナント環境において顧客データを機密保護するための措置を講じる工程が、警報を出す工程、監査メッセージを記録する工程、ならびに該クエリプランを放棄する工程、および該クエリプランの実行を延期する工程の少なくとも一つを含む、請求項19記載の方法。
【請求項２１】
マルチテナントデータベースシステム中では決して起こらないはずであるクエリプランまたはマルチテナントデータベースシステム中の少数の特定された状況でしか起こらないはずであるクエリプランの少なくとも一つであると判定される特定のクエリプランが、クエリプランの例外クラスのメンバーであるかどうかを判定する工程、および
該クエリプランがクエリプランの例外クラスのメンバーであることがわかった時に、警報を出すことなく該クエリプランの実行を許す工程
をさらに含む、請求項19記載の方法。
【請求項２２】
実行されると、一つまたは複数のプロセッサにマルチテナントデータベースシステムのクエリプランをモニタリングさせて任意のクエリプランが疑わしいかどうかを判定させるコードを転送する工程、および
クエリプランが疑わしいと判定される場合、実行されると、一つまたは複数のプロセッサにマルチテナント環境において顧客データを機密保護するための措置を講じさせるコードを転送する工程
を含む、マルチテナント環境において顧客データを機密保護するためのコードを転送する方法。
【国際調査報告】
2009518713.tif 000011