(57)【要約】【課題】アプリケーションユーザをデータベース活動のソースとして決定する方法を提供する。【解決手段】通知が受信される。その通知をハンドルするよう構成されたスレッドがアプリケーションユーザに関連付けられて前記通知が関連付けられる。アプリケーションユーザは、このスレッドによって生成されたデータベースクエリに関連付けられる。【選択図】図１
2008257738.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションユーザをデータベース活動のソースとして決定する方法であって、
通知を受信する段階と、
前記通知をハンドルするよう構成されたスレッドを前記通知が関連付けられたアプリケーションユーザに関連付ける段階と、
前記スレッドによって生成されたデータベースクエリを前記アプリケーションユーザに関連付ける段階と
からなる方法。
【請求項２】
ダウンストリームリーダに対し、前記クエリは前記アプリケーションユーザに関連付けられているという指示を提供することをさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記ダウンストリームはデータベース・セキュリティモニタであることを特徴とする請求項２に記載の方法。
【請求項４】
前記クエリにコメントを挿入することを含む指示を提供することを特徴とする請求項２に記載の方法。
【請求項５】
前記ダウンストリームリーダに電子メールを送信することを含む指示を提供することを特徴とする請求項２に記載の方法。
【請求項６】
ダミークエリを生成することを含む指示を提供することを特徴とする請求項２に記載の方法。
【請求項７】
前記ダミークエリは、後続のクエリが前記アプリケーションユーザに関連付けられているという指示を含むことを特徴とする請求項６に記載の方法。
【請求項８】
ログファイルに書き込むことを含む指示を提供することを特徴とする請求項２に記載の方法。
【請求項９】
前記通知はリクエストであることを特徴とする請求項１に記載の方法。
【請求項１０】
前記通知は、データベースとの相互作用を要請するリクエストであることを特徴とする請求項１に記載の方法。
【請求項１１】
前記通知をハンドルよう構成されたスレッドにアプリケーションユーザを関連付けることは、スレッド局所変数の使用を含むことを特徴とする請求項１に記載の方法。
【請求項１２】
前記通知は、トランザクションに関連付けられた複数の通知のうちの１つであることを特徴とする請求項１に記載の方法。
【請求項１３】
前記通知をハンドルするよう構成されたスレッドにアプリケーションユーザを関連付けることは、前記スレッドに少なくとも一片の抽出情報を関連付けることを含む請求項１に記載の方法。
【請求項１４】
アプリケーションユーザをデータベース活動のソースとして決定するシステムであって、
プロセッサと、
前記プロセッサに結合されたメモリと
を備え、
前記メモリは、実行された時に前記プロセッサに次の命令を提供するよう構成されたことを特徴とするシステム。
（１）通知を受信すること
（２）前記通知をハンドルするよう構成されたスレッドに、前記通知が関連付けられているアプリケーションユーザを関連付けること
（３）前記アプリケーションユーザに、前記スレッドによって生成されたデータベースクエリを関連付けること。
【請求項１５】
前記メモリは、実行された時に、前記クエリは前記アプリケーションユーザに関連付けられているという指示をダウンストリームリーダへ前記プロセッサに供給させる命令を、前記プロセッサに提供するようさらに構成されたことを特徴とする請求項１４に記載のシステム。
【請求項１６】
前記ダウンストリームリーダは、データベース・セキュリティモニタであることを特徴とする請求項１５に記載のシステム。
【請求項１７】
ダミークエリを生成することを含む指示を提供することを特徴とする請求項１５に記載のシステム。
【請求項１８】
アプリケーションユーザをデータベース活動のソースとして決定するコンピュータプログラム製品であって、前記コンピュータプログラム製品はコンピュータ読み取り可能媒体に実装され、次のコンピュータ命令を含むことを特徴とするコンピュータプログラム製品。
（１）通知を受信すること
（２）前記通知をハンドルするよう構成されたスレッドに、前記通知が関連付けられているアプリケーションユーザを関連付けること
（３）前記アプリケーションユーザに、前記スレッドによって生成されたデータベースクエリを関連付けること。
【請求項１９】
前記コンピュータプログラム製品は、前記クエリが前記アプリケーションユーザに関連付けられているという指示をダウンストリームリーダに提供するためのコンピュータ命令をさらに備えたことを特徴とする請求項１８に記載のコンピュータプログラム製品。
【請求項２０】
前記ダウンストリームリーダはデータベース・セキュリティモニタであることを特徴とする請求項１９に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
多種多様な構成要素は、データベース及びアプリケーションの組み合わせを使用し、情報を閲覧及び操作する能力をユーザに与えるようこれらのデータベースに要請する。例えば、電子商取引コンテクストにおいては、在庫品写真や製品記述、並びに価格／入手可能性情報といった製品情報を蓄積したデータベースを商人が所有する。潜在的な顧客は、商人のウェブサイトを訪れることによって、そして商人のウェブサーバによって生成された類別されたウェブページと相互作用（相互対話、interacting）することによって、この情報を閲覧することができる。事業コンテクストにおいては、従業員は、顧客関係管理（ＣＲＭ）アプリケーションを使用してＣＲＭデータベースに格納された顧客情報に対するアクセス及び／又は更新を行うことができる。
【背景技術】
【０００２】
データベースとの相互対話をエンドユーザに認めることは、これらのユーザが最新情報の提供を受けられることを保証する便利で有効な方法である。残念なことに、適所における十分な保護がなければ、邪悪な個人は、ＳＱＬインジェクション攻撃のような技術を用いてデータベースに対して悪意のある要請を行うことができ、その結果、クレジットカード又は他の機密情報の露見、あるいは価格情報の改竄が行われることとなる。
【０００３】
ログ解析ツールなどの伝統的なセキュリティ製品は、データベース攻撃が発生したことを明らかにするが、典型的には、その攻撃の責めを負うべき人の身元を提供することはできない。この理由の一つは、典型的には、どのエンドユーザがそのアプリケーションと相互対話しているかに関係なく、同一の組の証明書を使用してデータベースに対する自身の認証を行うためである。加えて、潜在的に非常に多数の同時のアプリケーションユーザによって発せられるクエリは、比較的少ない数のデータベース接続上で多重送信されて、異なるログを相関させるための議論の試みを困難なものとする。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
特定のデータベース活動に対して誰に責任があるのかを決定するための一つの方法は、アプリケーションを修正してその情報を記録することである。残念なことに、かかる方法は押しつけがましく不十分であり、個々のデータベースアプリケーションにおいて、将来潜在的な重荷となる修正、試験、保守をプログラマに強いることとなる。そして、そのアプリケーションが第三者によって供給される場合（例えば、在庫商品）には、アプリケーションの修正は不可能となる。
【０００５】
他の方法は、ユーザとアプリケーションとの間の相互作用（interactions）を記録し、そしてその後に、これらの相互作用において表れるリテラルをＳＱＬステートメントにおいて表れるリテラルと相関させるよう試みることである。残念なことに、複数のＳＱＬステートメントが同じリテラルを含む時（例えば、複数のユーザが同時にアプリケーション上で同様の活動を実行したとき）、あるいは、そのＳＱＬステートメントにおいてリテラルが存在しない時には、悪意のあるクエリのソースを確認することはできない。
【０００６】
それゆえ、データベース活動の根源を特定するためのより良い方法が望まれる。
【課題を解決するための手段】
【０００７】
アプリケーションユーザをデータベース活動のソースとして決定することが開示される。通知が受信され、その通知をハンドルするよう構成されたスレッドがアプリケーションユーザに関連付けられて、その通知が関連付けられる。アプリケーションユーザは、スレッドによって生成されたデータベースクエリに関連付けられる。いくつかの実施形態において、そのクエリはそのアプリケーションユーザに関連付けられているという指示は、ダウンストリームリーダに提供される。いくつかの実施形態においては、指示を提供することにはダミークエリの生成が含まれる。いくつかの実施形態において、ダミークエリは、後続のクエリがそのアプリケーションユーザに関連付けられているという指示を含む。
【発明を実施するための最良の形態】
【０００８】
本発明は、多くの方法で実施可能であり、プロセス、装置、システム、組成物、コンピュータ読み取り可能な記録媒体といったコンピュータ読み取り媒体、あるいはプログラム命令が光又は通信リンク上に送信されるコンピュータネットワークなどが含まれる。この明細書において、これらの実施、あるいは本発明が取りうる他のいかなる形態も技術と呼ばれるべきものである。タスクを実行するよう構成されているものとして記載されているプロセッサあるいはメモリは、所定の時刻にそのタスクを実行するよう一時的に構成された汎用コンポーネントと、そのタスクを実行するよう製造された特定のコンポーネントとの両方を含む。一般的には、開示されたプロセス段階の順序は、本発明の範囲内において変更することができる。
【０００９】
本発明の１又は複数の実施形態の詳細記述は、本発明の原則を例示する添付図面に沿って以下に与えられる。本発明はかかる実施形態に関して記載されているが、本発明はいずれの実施形態にも限定されない。本発明の範囲は、特許請求の範囲によってのみ限定され、本発明は多くの選択、修正、及び等価物を包含する。多くの具体的詳細は、本発明の十分な理解を提供するために以下の記述において述べられる。これらの詳細は、例示目的のために与えられ、本発明は、いくつかの若しくは全てのこれらの具体的詳細なしに、特許請求の範囲に基づいて実施することができる。明瞭性の目的のために、本発明が不必要に不明瞭になることがないよう、本発明の関する技術分野における既知の技術材料については詳細に述べていない。
【００１０】
ウェブアプリケーションサーバが新しいユーザリクエストを受信すると（例えば、ユーザ「ｕ１」）、典型的には、そのユーザリクエストに関連するアプリケーションモジュール、ビジネスロジック、及びデータベースステートメントの実行といったタスクを処理するために、スレッド（「ｔ１」）を量産（spawn）する。ウェブアプリケーションサーバは、典型的には、既存のウェブアプリケーションを邪魔することなしに、全てのリクエストとウェブアプリケーションへのレスポンスとを傍聴し、ウェブアプリケーションセッションオブジェクトへのアクセスを取得するためのカスタムモジュールを発展するために使用されるインタフェースを有している。いくつかの実施形態において、カスタムモジュールは、ｕ１のユーザネーム（及び／又は、他の身元あるいは他の関連情報）を取得し、これにスレッドｔ１を関連付けるよう構成されている。ステートメントｓ１がスレッドｔ１によって実行されるときは何時でも、ユーザ及びステートメントはアプリケーションコードを修正することなしに互いに関連付け可能である。
【００１１】
ウェブアプリケーションは、典型的には、カスタムデータベースコネクタによってラップすることができるデータベースコネクタを介してデータベースと通信する。スレッドｔ１がカスタムデータベースコネクタ内の関数をコールすると、カスタムデータベースコネクタは、スレッドｔ１の身元と、そのスレッドがその関数コールによって実行しているステートメントｓ１とを記録するよう構成することができる。特定のステートメントに対するエンドユーザのユーザネーム（ＩＰアドレス等）は、多くの技術を用いてデータベースセキュリティモニタに送信することができ、データベースセキュリティモニタは、その情報をモニタリングプロセスの中に適切に取り込むことができる。
【００１２】
図１に、データベースセキュリティを有する環境を例示したブロック構成図を示す。この例示において、多くのウェブアプリケーションユーザ１０２−１０６が、ネットワーク１０８を通してウェブアプリケーションサーバ１１０と通信する。ここに使用されるように、「アプリケーションユーザ」という用語はユーザ、人、又はその他を意味し、１又は複数の接続を介してデータベースと相互会話するものであり、データベースはアプリケーションに関連付けられているが、不必要にそのアプリケーションの特定又は個人のユーザには関連付けられていないものである。多くの実施形態において、ネットワーク１０８はインターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、或いはかかるネットワークのいくつかの組み合わせである。アプリケーションユーザは、多種多様なプラットフォームを使用してウェブアプリケーションサーバ１１０に適切にアクセスするが、これらには、パーソナルコンピュータ（例えば、１０２）、ラップトップ（１０４）、及びセルラーホン／携帯情報端末（１０６）などがあり、同様に他の形態の情報機器（不図示）であるセットトップボックス、ゲームコンソール、ブロードバンドルータ、及びデジタルビデオレコーダなどがある。
【００１３】
例示において、データベース１１２及び１１４は（スイッチ１１８を介して）ネットワーク化され、収集情報を蓄積し、そのうちのいくつかは機密となっている（例えば、クレジットカード番号、及び／又は、給与情報など）。多くの実施形態において、データベース１１２及び１１４はリレーショナルデータベース（例えば、オラクルデータベース、ＩＢＭ  ＤＢ２、及びマイクロソフトのＳＱＬサーバといった製品）、フラットファイルデータベースであり、或いは、ここに記載されている、タイプの異なるデータベース及び技術がしかるべく適合される。データベース管理者は、クライアント１２２を使用してデータベース１１２及び１１４にアクセスすることができ、この例では管理上のコンソールである。
【００１４】
ウェブアプリケーションサーバ１１０は、アプリケーションユーザ１０２−１０６といったアプリケーションユーザによって与えられる情報に基づいてデータベース１１２及びデータベース１１４といったデータベースへのクエリを生成する１又は複数のアプリケーションを実行する。ウェブアプリケーションサーバ１１０は、ログイン／パスワード対を使用してデータベース１１２に対する自身の認証を行う。多くの実施形態において、パスワード認証に代えて、或いはこれに加えて、例えばデジタル証明などの他の認証技術が使用される。
【００１５】
例示において、ウェブアプリケーションサーバ１１０はＨＴＴＰを使用してアプリケーションユーザ１０２−１０６と通信し、クエリはＳＱＬに書式化される。情報転送（例えば、ＸＭＬ，ＳＯＡＰ，ＬＤＡＰ，ＳＭＴＰ，及びメッセージキュー）及びクエリ表現に関する他の言語又は技術も使用することができ、ここで述べられた技術が適応可能なように構成される。以下に詳細に記載するように、アプリケーションは応答してクエリ結果を受信し、ウェブアプリケーションサーバ１１０は適切なアプリケーションユーザにこれらを提供するものである。
【００１６】
データベース・セキュリティモニタ１１６は、スイッチ１１８上のタップポートを使用することなどによって、データベース１１２とウェブアプリケーション１１０との間に送信されるトラフィックを監視する。多くの実施形態においては、インラインになっているデータベース・セキュリティモニタ１１６などによって他のトラフィックモニタリング技術が使用され、遠隔切替ポートアナライザ（ＲＳＰＡＮ）機能を使用し、あるいは、切替ポートアナライザ（ＳＰＡＮ）機能を使用するものである。いくつかの実施形態において、データベース・セキュリティモニタ１１６は、トレーニングに基づいて適法なクエリを認定するよう構成される。もし、異常なクエリが観察されると、そのクエリは記録され、管理者へアラートを送信するとか、クエリの実行をブロッキングするなどといった、他の動作が実行される。さらに詳細に以下に記載するように、ウェブアプリケーションサーバ１１０は、データベース活動の根源を識別する情報（例えば、ユーザネーム、ＩＰアドレス、マシンネーム、ＭＡＣアドレス等）をデータベース・セキュリティモニタ１１６に提供するよう構成される。
【００１７】
他のコンポーネントは、バックアップサーバ１２０及びファイアウォール、ネットワーク侵入検知システム等（不図示）といった環境に含まれるものである。
【００１８】
図２は、データベース活動の根源を決定するためのプロセスの実施形態を例示するフローチャートである。いくつかの実施形態において、図２に示されたプロセスは、ウェブアプリケーションサーバ１１０によって実行される。通知が受信されると、プロセスは段階２０２において開始する。ウェブアプリケーションサーバ１１０は、ＨＴＭＬ及び／又はＪａｖａ（登録商標）Ｓｃｒｉｐｔベースのフォームを備えたアプリケーションユーザ１０２のコンピュータ上で実行されるウェブブラウザを提供するように構成されているものである。このウェブブラウザは、アプリケーションユーザのコンピュータ上にこのフォームを表示し、ユーザは、このフォームのフィールドに対して入力を与える（例えば、製品についての検索）。アプリケーションユーザが依頼ボタンを押下すると、ウェブブラウザは、その入力をウェブアプリケーションサーバ１１０に提供する。段階２０２において、ウェブアプリケーションサーバ１１０はその入力（通知）を受信する。
【００１９】
段階２０４において、通知をハンドルするよう構成されたスレッドは、アプリケーションユーザに関連付けられてその通知が関連づけられる。例えば、アプリケーションユーザはまず、ウェブアプリケーションサーバ１１０（例えば、ログイン）にコンタクトし、ウェブアプリケーションサーバ１１０はそのウェブアプリケーションユーザのユーザネーム（及び／又は、ＩＰアドレス、ＭＡＣアドレス、ウェブブラウザタイプ、ホスト、クエリ文字列、クッキー等の他の情報。以下、「抽出情報」という。）を抽出するよう構成することができ、そうして、そのユーザネーム（及び抽出情報）に、ウェブアプリケーションサーバによって生成されるセッションオブジェクトを関連付ける。既存のセッションに対するリクエストが受信されたときは何時でも、そのリクエストがセッションＩＤに関連付けられたユーザネームの検索を実行することができる。ウェブアプリケーションサーバ１１０は、そのスレッドＩＤを読むことができ、そのスレッドＩＤにユーザネームを関連付ける。いくつかの実施形態において、ユーザネームは、スレッドよりはむしろ、あるいはスレッドに加えてプロセス（例えば、プロセスＩＤ）に関連付けられており、ここで述べられる技術は、適用可能なように構成されている。このように、「スレッド」という技術用語は、ここでは「プロセス」と相互互換の関係にある。
【００２０】
段階２０６において、スレッドによって生成されたデータベースクエリは、その処理スレッドと関連付けられたアプリケーションユーザに関連付けられている。ウェブアプリケーションサーバ１１０上にあるウェブアプリケーションは、データベースコネクタを通してデータベース１１２といったデータベースと通信する。リクエスト処理スレッドは、データベースコネクタ関数をコールしてデータベースにクエリを送信し、データベースからの結果を受信する。リクエスト処理スレッドがデータベースコネクタ内の関数をコールすると、データベースコネクタは、そのスレッドが関数コールを通して実行している呼び出し元スレッドＩＤ（caller thread ID）及びＳＱＬステートメントを記録する。所定のスレッドが実行するＳＱＬステートメントのセットは既知であり、かつ、そのスレッドに関連付けられたウェブアプリケーションユーザは既知であるので、彼／彼女の活動によって生成されるウェブアプリケーションユーザ及びＳＱＬステートメントは、リンク可能なものとなる。
【００２１】
さらに以下に詳細に記述するように、特定のウェブアプリケーションユーザと彼／彼女のＳＱＬステートメントとの間のリンクを指示する情報は、様々な方法でデータベース・セキュリティモニタ１１６（及び、この情報を利用するよう構成された他のあらゆるコンポーネント）に提供される。いくつかの実施形態において、データベース・セキュリティモニタ１１６は、データベース１１２、ウェブアプリケーションサーバ１１０（例えば、プロセスとして）、あるいは図１において示された環境の他のコンポーネント上に配置されている。同様に、ユーザネーム／ＳＱＬステートメント情報は、データベース・セキュリティモニタ１１６に加え、多様なコンポーネントに提供される。多くの実施形態において、示された環境の一部は、適用可能なように結合又は省略することができる。例えば、クライアント１２２及びバックアップサーバ１２０は省略することができる。
【００２２】
図３に、データベース活動の根源を決定するためのシステムの実施形態を例示するブロック構成を示す。ウェブアプリケーションサーバ１１０は、既存のウェブアプリケーションを邪魔することなしに、ウェブアプリケーションへの全てのリクエスト及び応答を傍受し、ウェブアプリケーションセッションオブジェクトへのアクセスを取得するためのカスタムモジュールを発展させるために使用可能なインタフェースを含む。示された例において、ウェブアプリケーションサーバ１１０は、ＪＢｏｓｓアプリケーションサーバを実行し、ＨＴＴＰリクエストを傍受するカスタムフィルタ３０２を含む。他のアーキテクチャ（例えば、マイクロソフトＩＩＳ）においては、マイクロソフトＩＳＡＰＩ拡張といったＨＴＴＰ（又は、ＸＭＬ，ＳＯＡＰ等）リクエストを傍受するために、他のコンポーネントが適用可能に使用される。
【００２３】
カスタムモジュールは、アプリケーションユーザがログインしたときカスタムモジュールがリクエストを傍受及び分析してそのユーザネームを抽出し、ウェブアプリケーションサーバ１１０によって生成されたセッションオブジェクトをそのユーザネームに対して関連付けるように構成される。そして、カスタムモジュールは、スタティックなメモリ領域に生成されたセッションオブジェクトのＩＤに基づいて抽出されたユーザネームを蓄積する。既存のセッションに対するリクエストが受信されれば何時でも、カスタムモジュールはそのスタティックメモリ領域を走査し、そのリクエストのセッションＩＤと関連付けられたユーザネームを検索する。また、カスタムモジュールは、それ自体のスレッドＩＤを読み込み、スタティックなメモリ領域から検索されたユーザネームとそのスレッドＩＤを関連付ける。アプリケーションユーザのユーザネーム（例えば、「ｕ１」）は、その上で所定のリクエスト処理スレッドがタスクを処理しているために、特定することができる。
【００２４】
ウェブアプリケーション３０４（例えば、電子商取引アプリケーション）は、データベースコネクタ３０８といったデータベースコネクタを介して、データベース１１２といったデータベースと通信する。リクエスト処理スレッドは、データベースコネクタ関数をコールし、データベース１１２にクエリを送信し、データベース１１２からの結果を受信する。示された例において、データベースコネクタ３０８はＪＤＢＣに基づくものである。示された例において、カスタムコネクタラッパ３０６は、ウェブアプリケーション３０４とデータベースコネクタ３０８との間に位置する。ウェブアプリケーション３０４は、データベースコネクタ３０８を通って全てのＳＱＬステートメント及びデータを通過するよう順次構成された、コネクタラッパ３０６を使用するように構成される。多くの実施形態において、ウェブアプリケーション３０４はサードパーティによって提供され、及び／又は、そのコードは修正されない。コネクタラッパ３０６は、データベースコネクタ３０８上のラッパとして機能し、いくつかの実施形態においては、アプリケーションのいかなる修正をも要求しない。
【００２５】
リクエスト処理スレッド（例えば、ｔ１）がコネクタラッパ３０６内の関数をコールすると、コネクタラッパ３０６は、呼び出し元スレッドＩＤ  ｔ１と、そのスレッドがその関数コールを通して実行するＳＱＬステートメント（例えば、ｓ１）とを記録する。
【００２６】
いくつかの場合において、ウェブアプリケーション３０４は、インタラクティブ及びトランザクション指向であるので、ウェブアプリケーションユーザはそれらのリクエストへの迅速な反応を期待する。いくつかの場合において、ウェブアプリケーション３０４は、メインアプリケーションスレッド（例えば、Ｔ１）からのスレッド（例えば、Ｔｘ，Ｔｙ，Ｔｚ）を量産するよう構成される。コネクタラッパ３０６は、スレッドＴｘがＳＱＬステートメント（例えば、「Ｓａ」）を実行する時、スレッドＴｘがユーザネームに関連付けられていないことを観測するよう構成される。かかる場合において、コネクタラッパ３０６は、関連付けられたユーザネームを有するリクエストハンドラスレッドＴ１に到達するまでＴｘスレッド階層の中を進むことになる。
【００２７】
多様な実施形態において、他のコンポーネントは、ウェブアプリケーションサーバ１１０とデータベース１１２との間に位置し、ここで述べられる技術は、これらの追加のコンポーネントを通して伝搬情報に適合可能である。このように、ここで述べられる３層アーキテクチャに加えて、追加のレベルのアーキテクチャ（例えば、４層）も使用することができ、それゆえここで述べられた技術が適応される。例えば、ＳＯＡＰサーバは、それ自体がフィルタフック及びラッパを備えるウェブサーバ１１０と同様の方法で構成可能である。
【００２８】
図４に、アプリケーションユーザとプロセス若しくはスレッドとの間の連合を決定するためのプロセスの実施形態を示すフローチャートである。プロセスは、通知を受信したとき段階４０２において開始する。図２の段階２０２に関連して上述した通り、受信されている通知の一例としては、ウェブアプリケーションサーバ１１０が、ＰＯＳＴ／ＧＥＴメソッドを含むＨＴＴＰ通知を受信することを含む。
【００２９】
段階４０４において、通知と関連付けられたアプリケーションユーザと、そのリクエストをハンドルするスレッドとの間の一意な連合が決定される。図２の段階２０４に関連して上述した通り、ウェブアプリケーションサーバ１１０は、通知からユーザネームを抽出するよう構成することもできる。
【００３０】
段階４０６において、スレッドはデータのダウンストリームリーダに対して決定された関連付けを示すデータにこれを関連付ける。例えば、段階４０６において、スレッド局所変数が、ユーザネームとスレッドを関連付けるように用いられる。多くの実施形態において（例えば、アーキテクチャに基づいて）、例えば、ユーザネームと、ダウンロードリーダによって読み取り可能なログファイルにおけるスレッドとを関連付ける情報を蓄積するようにウェブアプリケーションサーバ１１０を構成することによるものなど、他の方法での関連付けが行われる。
【００３１】
図５に、データベース活動の根源の指示を与えるプロセスの実施形態を例示するフローチャートを示す。いくつかの実施形態において、図５に示されたプロセスは、コネクションラッパ３０６などのコネクションラッパによって実行される。
【００３２】
データベースクエリが受信された時、プロセスは段階５０２において開始する。例えば、段階５０２において、コネクションラッパ３０６はウェブアプリケーション３０４からデータベースクエリを受信する。段階５０４において、そのクエリが関連付けられたスレッドが決定される。段階５０６において、そのスレッドが関連付けられたアプリケーションユーザを示すデータが読み込まれる。例えば、段階５０６において、ラッパコネクタ３０６は、図４の段階４０６においてスレッド局所変数に格納されたユーザネームを利用する。
【００３３】
段階５０８において、そのクエリはアプリケーションユーザに関連付けられているという指示が提供される。例えば、段階５０８において、コネクタラッパ３０６はクエリを修正し、そのクエリは特定のウェブアプリケーションユーザに起因するものであるというコメントを含ませることができる（及び／又は、ウェブアプリケーションユーザとアプリケーションサーバ１１０との間にセッションが確立された時に抽出することもできるネーム値の対として、ウェブアプリケーションユーザのＩＰアドレス、ＭＡＣアドレス等といった他の情報を提供することもできる）。このようなシナリオにおいて、データベース１１２はそのクエリのコメント部分を無視し、一方でデータベース・セキュリティモニタ１１６といったモジュールがこのようなコメントを含む情報を認識及び処理するように構成される。いくつかの実施形態において、指示はバンド外で提供される。例えば、コネクタラッパ３０６がデータベース３０８にクエリを転送すると、コネクタラッパ３０６は、そのクエリ及び関連付けられたユーザネームを含む電子メールを送信し、遠隔ログファイルに記述するといったように構成される。
【００３４】
いくつかの実施形態において、効率性を高め、必要なシステムリソースを低く保つといった理由のために、ウェブアプリケーション１１０と、データベース１１２などのデータベースとの間でオープンされる同時コネクションの数は、ウェブアプリケーション１１０でセッションをオープンするアプリケーションユーザの数よりも非常に少ない。例えば、数百若しくは数千のユーザが同時にウェブアプリケーションサーバ１１０にアクセスする許可を与えられる一方で、ウェブアプリケーションサーバ１１０はデータベース１１２との１０の同時接続を許可されるのみである。かかるシナリオにおいて、段階５０８において与えられた指示は、コネクタラッパ３０６による「ダミーの」クエリの送信を含んでおり、これは、特定のコネクション（例えば、１０接続のうちの１つ）上にデータベースコネクタ３０８によって送信された何れの後続クエリも（他のかかるダミーメッセージが送信されるまで）特定のユーザに関連付けられていないことを示すものである。ダミークエリは完全にコメントされているので、データベース１１２はこれらを無視する。したがって、データベースセキュリティモジュール１１６は、かかるダミークエリに対するデータベーストラフィックを監視するよう構成される。
【００３５】
いったん、データベースセキュリティ１１６が提供されると、通常のデータベース活動におけるデータベースセキュリティモジュールのプロファイルに組み込むことなどによって、情報は様々な目的で使用され、侵入発見を改善するためにこれが使用され、機能を検査し、及び／又は、より完全な機能セットに対して提供される。例えば、データベースセキュリティモジュール１１６に対するインタフェースを使用して、管理者は特定のユーザの活動範囲についての異変を探索することができる。どのユーザが特定のクエリを実行したかを学習し、異変に関連付けられたＩＰアドレスの範囲の決定等を行う。疑わしい異変を検査し、プロファイルを更新すると、管理者は、例えば特定のユーザがクエリを実行しているか否かを通知する、或いは、閾値になると自動的に適切なホワイトリスト化又はブラックリスト化を行うべき同一の異常クエリを多くのユーザが実行することを通知するといった、より精細な粒度でそのプロファイルを更新することができる。
【００３６】
明瞭性及び理解の目的で、上述の実施形態がいくつか詳細に記載されたが、本発明は与えられたこれらの細部に限定されるものではない。本発明を実施する多くの代替方法が存在する。開示された実施形態は例示であり限定的なものではない。
【図面の簡単な説明】
【００３７】
【図１】データベースセキュリティを有する環境を示すブロック構成図である。
【図２】データベース活動の根源を決定するためのプロセスの実施形態を例示するフローチャートである。
【図３】データベース活動の根源を決定するためのシステムの実施形態を例示するフローチャートである。
【図４】アプリケーションユーザとプロセス若しくはスレッドとの間の関連を決定するためのプロセスの実施形態を例示するフローチャートである。
【図５】データベース活動の根源の指示を提供するプロセスの実施形態を例示するフローチャートである。
【図１】
2008257738.tif 000003
【図２】
2008257738.tif 000004
【図３】
2008257738.tif 000005
【図４】
2008257738.tif 000006
【図５】
2008257738.tif 000007
【外国語明細書】
2008257738.tif 000008
2008257738.tif 000009
2008257738.tif 000010
2008257738.tif 000011
2008257738.tif 000012
2008257738.tif 000013
2008257738.tif 000014
2008257738.tif 000015
2008257738.tif 000016
2008257738.tif 000017
2008257738.tif 000018
2008257738.tif 000019
2008257738.tif 000020
2008257738.tif 000021
2008257738.tif 000022
2008257738.tif 000023
2008257738.tif 000024
2008257738.tif 000025
2008257738.tif 000026
2008257738.tif 000027
2008257738.tif 000028