JP2012530288A - データベース操作からのトランザクションデータを監査するための方法およびシステム - Google Patents
データベース操作からのトランザクションデータを監査するための方法およびシステム Download PDFInfo
- Publication number
- JP2012530288A JP2012530288A JP2012515035A JP2012515035A JP2012530288A JP 2012530288 A JP2012530288 A JP 2012530288A JP 2012515035 A JP2012515035 A JP 2012515035A JP 2012515035 A JP2012515035 A JP 2012515035A JP 2012530288 A JP2012530288 A JP 2012530288A
- Authority
- JP
- Japan
- Prior art keywords
- data
- transaction
- column
- database
- log
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1865—Transactional file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Computer Security & Cryptography (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
SRSレジストリトランザクションデータを検証するための方法は、第1のデータベースからOLTPトランザクションデータを受信することと、OLTPトランザクションデータをパースすることと、パースされたOLTPトランザクションデータを1組のプロファイルのうちの1つ以上と比較することと、を含む。1組のプロファイルのうちの1つ以上の各々が、XMLファイルの中のメタデータを含む。本方法はまた、パースされたOLTPトランザクションデータを第1のデータキャッシュにキャッシュすることと、OLTPトランザクションデータに関連するログデータを受信することと、ログデータを第2のデータキャッシュにキャッシュすることと、を含む。本方法はさらに、第1のデータキャッシュにキャッシュされているパースされたトランザクションデータを第2のデータキャッシュにキャッシュされているログデータと相関させることを含む。
Description
本発明は、データベース操作からのトランザクションデータを監査するための方法およびシステムに関する。
インターネットは、多様な形態およびレベルの通信をサポートするますます国際的なコンピュータのネットワークとなっている。例えば、ワールドワイドウェブ(WWW)上では、情報を、ウェブサイトとして一般的に知られる世界共通で使用可能なページ上に提示することができる。インターネットはまた、電子メールおよび/またはインターネット掲示板サービスを介して、エンドユーザ間の1対1の通信をサポートする。しかしながら、インターネット上での通信のあらゆる形態の共通項は、接続されるコンピュータを特定するためにドメイン名を使用することである。インターネットプロトコル(IP)番号と呼ばれるドメイン名は、実際には、小数点によって区切られる数字の一意の組み合わせである。
IP番号は、インターネットユーザが記憶または使用するには面倒かつ難解であり得るため、IP付番システムは、より使いやすいドメイン名システムと置き換えられてきた。このシステムにより、インターネットアドレスが、割り当てられるIP番号と直接相関する英数字表示またはドメイン名を割り当てられることが可能になる。ドメインネームサーバとして知られる特殊なコンピュータが、ドメイン名をそれらのそれぞれのIP番号に連結する表を維持する。
IP番号は、インターネットユーザが記憶または使用するには面倒かつ難解であり得るため、IP付番システムは、より使いやすいドメイン名システムと置き換えられてきた。このシステムにより、インターネットアドレスが、割り当てられるIP番号と直接相関する英数字表示またはドメイン名を割り当てられることが可能になる。ドメインネームサーバとして知られる特殊なコンピュータが、ドメイン名をそれらのそれぞれのIP番号に連結する表を維持する。
ドメイン名の構造は、ピリオド(ドットと呼ばれる)によって区切られ、ドメインレベルと呼ばれる3つ以上の部分から構成される。インターネットゾーン表示、「.com」、または「.gov」、「.uk」等によって参照される、トップレベルドメイン(TLD)レベルが、ドットの右側に見出される。特定の国を表すTLDは、国別コードTLD、またはccTLDと呼ばれる。一般的にドメイン名と呼ばれる、セカンドレベルドメイン(SLD)またはサードレベルドメインは、ドットのすぐ左側に位置する文字(文字、数字、およびハイフンを含む)から構成される。
ドメイン名アドレスシステムが適切に動作するためには、特定のTLD内の各ドメイン名は、別のドメインからたとえ1文字の違いであっても、一意でなければならない。重複する「ドメイン名」が割り当てられることを防止するために、一般的にはレジストリと呼ばれる単一の機関が、各特定のTLDのドメイン名全ての完全なデータベースを維持することに最終的な責任を負う。このデータベースは、レジストリデータベースと呼ばれる。大部分のジェネリック(例えば、.com、.net、.org)ドメイン名登録では、登録過程にはほとんど、または全く人間が介在しない。レジストリによって維持されるレジストリデータベースは、より容易に記憶されるドメイン名とその対応するIP番号(全てのIP番号を割り当てることが課せられた国際機関から受信される)との間に割り当てられた関係を電子的に記録し、全てのドメイン名のマスタデータベースに記録するために、この情報をTLDレジストリに報告する。登録機関はまた、各登録者との登録合意(契約)を締結し、重要な登録者の連絡および請求情報を記録し、保持する。
インターネット通信においてドメイン名が果たす重要な役割から、インターネットの急速な成長の継続には、容易、迅速、安全、確実なドメイン名の登録および保守が必要である。このため、当技術分野において、レジストリデータベースに関連するトランザクションの監査および検証に関する方法およびシステムの向上に対する必要が存在する。
本発明は、概して、データベースシステムに関する。より具体的には、本発明は、レジストリデータベースで実施されるトランザクションを監査するための方法およびシステムに関する。例に過ぎないが、本発明は、レジストリ操作を記述するプロファイルを使用してトランザクションデータを検証し、検証されたトランザクションデータをトランザクションログファイルと比較するシステムに適用されている。本方法および技法は、データの整合性を検証するために、他の高価値データベースシステムに適用することができる。
本発明の実施形態に従い、SRSレジストリトランザクションデータを検証するための方法が提供される。本方法は、第1のデータベースからOLTPトランザクションデータを受信することと、OLTPトランザクションデータをパースすることと、パースされたOLTPトランザクションデータを1組のプロファイルのうちの1つ以上と比較することと、を含む。1組のプロファイルのうちの1つ以上の各々が、XMLファイルの中のメタデータを含む。本方法はまた、パースされたOLTPトランザクションデータを第1のデータキャッシュにキャッシュすることと、OLTPトランザクションデータに関連するログデータを受信することと、を含む。本方法はさらに、ログデータを第2のデータキャッシュにキャッシュすることと、第1のデータキャッチュにキャッシュされているパースされたトランザクションデータを第2のデータキャッシュにキャッシュされているログデータと相関させることと、を含む。
本発明の別の実施形態に従い、トランザクションデータを検証するための方法が提供される。本方法は、第1のデータベースからトランザクションデータを受信することと、トランザクションデータをパースすることと、を含む。本方法はまた、パースされたトランザクションデータを1組のプロファイルのうちの1つ以上と比較することと、トランザクションデータに関連するログデータを受信することと、を含む。本方法はさらに、パースされたトランザクションデータをログデータと相関させることを含む。
本発明の特定の実施形態に従い、トランザクションログデータベースに記憶されたトランザクションログファイルを用いて、SRSレジストリデータベースに関連するトランザクションデータを検証するためのシステムが提供される。システムは、SRSレジストリデータベースからOLTPトランザクションデータを受信し、OLTPトランザクションデータをパースするように動作可能なデータベースリーダと、データベースリーダに結合され、パースされたOLTPトランザクションデータを1組のプロファイルのうちの1つ以上と比較するように動作可能なデータベースデータバリデータとを含む。システムはまた、トランザクションログデータベースからトランザクションログファイルを受信するように動作可能なトランザクションログファイルリーダと、データベースデータバリデータおよびトランザクションログファイルリーダに結合され、パースされたトランザクションデータをトランザクションログファイルと相関させるように動作可能なデータコリレータとを含む。
本発明の別の特定の実施形態に従い、トランザクションデータを検証するようにデータプロセッサを制御するための複数の命令を記憶するコンピュータ可読媒体が提供される。複数の命令は、データプロセッサに、第1のデータベースからトランザクションデータを受信させる命令と、データプロセッサに、トランザクションデータをパースさせる命令とを含む。複数の命令はまた、データプロセッサに、パースされたトランザクションデータを1組のプロファイルのうちの1つ以上と比較させる命令と、データプロセッサに、トランザクションデータに関連するログデータを受信させる命令とを含む。複数の命令はさらに、データプロセッサに、パースされたトランザクションデータをログデータと相関させる命令を含む。
本発明によって、従来の技術に優る多数の利点が達成される。例えば、本発明の実施形態は、既知のアプリケーション外でSRSレジストリデータベースに対して何らかの変更が実施されると、運用担当者に警告を提供する。このように、本明細書に説明される実施形態によって、レジストリデータベースに関連する悪意のある行為に関する情報が提供される。さらに、本発明の実施形態は、レジストリデータの検証がデータの整合性を強化するので、レジストリデータベース運用者に競合他社に対する競争上の優位性を提供する。本明細書に説明される方法およびシステムを利用することによって、システム運用者は、侵入者および悪意のある行為をより容易かつ迅速に検出することができ、それにより、レジストリデータベースに対する潜在的な損害を限定する。さらに、本発明の実施形態を利用して、運用担当者は、データベース内のデータを操作するあらゆるトランザクションの発生源を特定することが可能であり、したがって、セキュリティオーディタは、アプリケーションとデータベースとの間に信頼の連鎖を確立する。加えて、本発明の実施形態は、データベースにコミットされるあらゆるトランザクションが既知の情報源からであることを確実にする。本発明のこれらおよび他の実施形態は、その利点および特徴の多くとともに、以下の記載および添付の図面を参照して詳細に説明する。
図1は、本発明の実施形態に従い、トランザクションデータを検証するためのシステムの簡略化されたブロック図である。本明細書に説明されるシステムおよび方法は、データに対する全ての変更が既知の情報源からであること、顧客とデータとの間の保管の連鎖を検証し、監査できること、顧客のトランザクションの目的がデータベース内で正しく持続されたこと、業務規則が適切に徹底されていることを確実にし、データベースに関する悪意のある行動を迅速に特定し、システム運用者に警告するために、データベース(例えば、SRSレジストリデータベース)を監査する。
システムは、オンライントランザクション処理(OLTP)データを含む、レジストリデータベース110を含む。本発明の実施形態は、他のデータベースに適用可能であるが、本明細書において、代表的なデータ源としてOLTPデータを説明する。データベースリーダ112は、データベース110からデータを引き出し、データベースバリデータ120へデータを送信するために利用される。データベースリーダ112は典型的に、例えば、OLTPデータ等のデータをパースする。データベースバリデータ120は、プロファイルデータベース122からプロファイルデータを受信し、データベースリーダからのデータを、プロファイルデータベースからの1つ以上のマッチングプロファイルに対して検証する。例えば、ドメイン追加操作に関係するデータがOLTPデータの中にある場合、データベースバリデータ120は、正しいデータベース操作が、ドメイン追加操作の一部として実施されたかどうかを判定するために、このOLTPデータをドメイン追加のプロファイルと比較することができる。プロファイルを使用してデータを検証することに関する追加の検討は、本明細書全体で提供され、以下に具体的に提供する。検証後、データを、データキャッシュ130にキャッシュすることができる。
システムはまた、トランザクションログファイル150からデータを受信する、トランザクションログファイルリーダ152を含む。トランザクションログデータは、トランザクションログデータキャッシュ160にキャッシュするか、データコリレータ140へ直接渡すことができる。図1に示されるように、データコリレータ140は、データベースバリデータ120、トランザクションログファイルリーダ152、ならびに/またはデータキャッシュ130およびトランザクションログデータキャッシュ160から入力を受信する。データコリレータ140は、データベースバリデータからの検証されたデータおよびトランザクションログデータを比較して、これらの2つのデータ源の間に整合性が存在するかどうかを判定する。これらのデータ源の相関に関する追加の検討は、本明細書全体で提供され、以下に具体的に提供する。任意選択のレポートジェネレータ170は、データ相関プロセスの結果を受信し、システム運用者等にレポートを提供するように適合される。
図1に図示されるデータベースリーダ112、データベースバリデータ120、トランザクションログファイルリーダ152、データコリレータ140、および任意選択のレポートジェネレータ170を含む、本明細書においてシステム、プロセッサ、エンジン等他の名称で称される多様な機能ブロックが、命令およびデータを実行するように構成される1つ以上の汎用プロセッサの中に含まれる場合があることが理解される。このため、図1に図示される多様なプロセスが、多様なタスクに適合され、プロセッサによって実行されるように適合される命令を記憶する1つ以上のメモリに結合されるプロセッサによって実施することができる。プロセッサは、California州Santa ClaraのIntel Corporationによって製造されるPentium(登録商標)プロセッサ等、命令およびデータを実行するように構成される汎用マイクロプロセッサとすることができる。また、本発明に従って方法を実施するための命令の少なくとも一部をソフトウェア、ファームウェア、および/またはハードウェアに具現化する、特定用途集積回路(ASIC)とすることもできる。例えば、そのようなプロセッサとして、専用回路、ASIC、組み合わせ論理、他のプログラマブルプロセッサ、これらの組み合わせ等が挙げられる。メモリは、RAM、フラッシュメモリ、ハードディスク、CD等、デジタル情報を記憶することが可能な任意のデバイスとすることができる。プロセッサは、例えば、OLTPデータの情報源、プロファイルデータ、トランザクションログファイルデータ、データキャッシュ130、トランザクションログデータキャッシュ160、または他の関連情報を記憶することができる他のデータベース等、多様なデータベースに結合することができる。このように、本明細書に提供されるプロセッサは広義に定義され、データ検証、相関等を実施するプロセッサを含むが、これらに限定されない。したがって、これらのプロセスは、本発明の範囲内に含まれる方法の少なくとも一部を実施するための複数の命令を記憶する、コンピュータ可読媒体を使用して実装することができる。
本明細書全体により完全に説明されるように、本発明の実施形態は、データベーストランザクションを既知のトランザクションプロファイルと比較する。アプリケーションは、有限のコードパスを有するため、これらを、トランザクションが承認されたかどうかを判定するために、データベーストランザクションに対して比較することができる。加えて、データベーストランザクションをアプリケーションサーバログと相関させることによって、システム間に信頼の連鎖が作成され、それによってシステムの信頼性を向上する。
図2は、本発明の実施形態に従う、トランザクションデータを検証するためのハイレベル実行フローチャートである。トランザクションデータは、OLTPデータストリーム210によって表されるデータベースに記憶される。図2に図示される実施形態において、トランザクションデータは、オンライントランザクション処理(OLTP)データであるが、本発明はこの特定のデータセットに限定されない。データベースリーダ230は、トランザクションデータストリームからトランザクション(例えば、OLTPトランザクション)を読み出し、次いで、データをパースする。データベースリーダの制御は、より大型のセキュリティオーディタシステムの一部を表す、セキュリティオーディタ制御220によって提供される。本明細書において、データベースリーダ230、セキュリティオーディタ制御220、トランザクションログファイルリーダ260、データベースバリデータ240、プロファイルリスト250、データコリレータ270、およびレポートジェネレータ280の構成要素を含むセキュリティオーディタが参照され、本明細書全体でより完全に説明され、以下に具体的に説明する。したがって、セキュリティオーディタへの参照は、本明細書に説明される方法を実施するように適合されるシステムへの参照として理解されるべきである。
トランザクションデータがパースされた後、パースされたトランザクションデータは、プロファイルリスト250に記憶された既存のプロファイルとの比較によって検証される。SRSレジストリデータベースにおいて、各アプリケーションは、コード自体に基づいて有限のコードパスを有する。このため、アプリケーション全体で発生する各トランザクションは、既知のプロファイルに一致するはずである。プロファイルは、監査可能なレジストリ操作を記述するメタデータ(XMLファイル内に表現)である。以下により詳細に検討するように、システムは、1つのレジストリ操作あたり1つのプロファイルを提供する。プロファイルを使用してSRSレジストリデータベースへの全ての成功した書き込み可能操作を監査することによって、データベースの中のトランザクションは、承認されたと検証することができる。例に過ぎないが、プロファイルは、レジストリ操作(例えば、特定の表への挿入(INSERT))中に実施された操作、レジストリ操作中に適用される業務論理規則等に関係するメタデータを含有する場合がある。
本発明の実施形態は、各トランザクションがプロファイルに一致するかどうかを判定するために、データベースがマイニングされ、トランザクションが全ての既知のプロファイルと比較される、方法およびシステムを提供する。トランザクションが既知のプロファイルのうちの1つに一致しない場合、これは、異常が発生したという兆候を提供する。データを検証することによって、セキュリティオーディタは、顧客の意図がデータベースの中で正しく持続され、全ての業務規則が適切に徹底されていることを確実にする。検証後、検証されたトランザクションデータは、データベースデータキャッシュと呼ばれるキャッシュに記憶することができる。
トランザクションデータの検証に加えて、セキュリティオーディタは、アプリケーション側で作成されたトランザクションログを利用し、これらのトランザクションログを検証されたデータと相関させる。トランザクションログファイルリーダ260は、トランザクションログファイルデータベース255からトランザクションログを引き出す。トランザクションログファイルは、アプリケーションサーバによって作成される。トランザクションログファイルは、パースされ、任意選択のステップにおいて、トランザクションデータログデータキャッシュにキャッシュされる。データコリレータ270は、SRSレジストリデータベースに対して行われた変更が、既知の情報源からであったことを確実にするように、検証されたトランザクションデータを対応するトランザクションログデータと相関させるために使用される。異常の例として、トランザクションデータ(検証後)が、対応するトランザクションログに一致しない場合、それは、データベースに対する変更が既知の情報源からではなかったことの兆候を提供する。したがって、警告を発することができる。
レポートジェネレータ280は、データベースデータバリデータ240ならびにデータコリレータ270から情報を受信するために使用される。したがって、レポートは、データ検証エラー(すなわち、トランザクションデータが既知のプロファイルに一致していない)または相関エラーに基づいて生成することができる。レポートは、検証に失敗したトランザクションのリスト、個別の検証エラーの件数、監査されたトランザクションの合計数、トランザクションを検証するためにかかった時間等の情報を含むことができる。アプリケーションサーバ上のトランザクションログ内の識別子は、データベースのトランザクションと比較され、これらの要素が意図されたように一致することを確実にする。このように、トランザクションログ内の顧客の意図は、OLTPデータストリーム210によって表現される、データベースに適切に持続される。
本発明の実施形態を利用して、レジストリデータベース内のデータを操作する全てのトランザクションは、既知の情報源からであり、既存のアプリケーションコードパスに関連する既知のプロファイルに一致することが検証される。トランザクションは、既知のアプリケーション論理フローがトランザクションを実施する際に利用されたかどうかを判定するために、データベースからのトランザクションデータをマイニングし、トランザクションをトランザクションに関連するプロファイルと比較することによって検証される。プロセスフローのプロファイルを使用してデータが検証されると、次いで、アプリケーショントランザクションログと比較される。これらの比較は、従来のシステムを使用して得ることができないレベルのデータの整合性を提供する。検証プロセスに基づいて、本明細書に説明される方法およびシステムは、悪意を示唆し得る、データがアプリケーション外で更新されたかどうかについて運用担当者に警告するという追加の利点を提供する。
本明細書に説明される方法およびシステムの例示的な使用事例は、ハッカーがレジストリデータベースへのアクセスを取得し、承認されたアプリケーション外で1日あたり所定の数のドメインを徐々に削除する場合である。本明細書に説明されるセキュリティオーディタは、変更がドメインの削除のために確立されたプロファイルに適合せず、既知の情報源からではないため、未承認の削除を検知することになる。変更の未承認の特性を特定すると、警告を発することができ、それによって、システム運用者が修正措置をとることが可能になる。
図3は、本発明の実施形態に従い、トランザクションデータを検証するための方法を示す簡単なフローチャートである。方法300は、第1のデータベースからOLTPトランザクションデータを受信することを含む(310)。第1のデータベースは、SRSレジストリデータベースを含む場合がある。トランザクションデータは、CA州、Redwood ShoresのOracle Corporationから入手可能なLogMiner(商標)監査ツール、またはCA州、San FranciscoのGoldenGate Softwareから入手可能なGoldenGateトランザクションデータ統合ソフトウェア等のデータベースリーダによって読み出すことができる。方法はまた、OLTPトランザクションデータをパースすることも含む(312)。OLTPトランザクションデータは、ドメイン名を追加すること、ドメイン名を削除すること、ドメイン名を更新すること等を含む、いくつかのSRSデータベース操作に関係することができる。他の実施形態において、OLTPトランザクションデータは、ドメインネームサーバを追加すること、ドメインネームサーバを削除すること、またはドメインネームサーバを変更することに関係してもよい。
パースされたOLTPトランザクションデータは1組のプロファイルのうちの1つ以上と比較される(314)。1組のプロファイルのうちの1つ以上の各々が、XMLファイルのメタデータを含む。受信されるトランザクションデータのタイプに応じて、プロファイルは、ドメイン名を追加すること、ドメイン名を削除すること、ドメイン名を更新すること等の操作に関係するプロファイルを含むことができる。他の実施形態において、プロファイルは、ドメインネームサーバを追加すること、ドメインネームサーバを削除すること、またはドメインネームサーバを変更することに関係することができる。
一実施形態において、方法は、パースされたOLTPトランザクションデータを第1のデータキャッシュにキャッシュすること(316)を任意選択的に含むが、これは本発明によって要求されない。方法はさらに、OLTPトランザクションデータに関連するログデータを受信すること(318)と、パースされたOLTPトランザクションデータをログデータと相関させること(320)と、を含む。一実施形態において、ログデータは、第2のデータキャッシュにキャッシュすることができるが、これは本発明によって要求されない。キャッシュを利用する実施形態において、相関プロセスは、キャッシュされているパースされたデータおよびキャッシュされているログデータを利用することができる。
方法300はまた、検証エラーを判定すること(322)と、検証エラーに関する警告を生成すること(324)と、を任意選択的に含むことができる。警告の例として、システム運用者または他者によって使用されるために、1つ以上のレポート(例えば、詳細レポートおよび要約レポート)を生成することができる。
図3に図示される特定のステップは、本発明の実施形態に従い、トランザクションデータを検証する特定の方法を提供することを理解されたい。代替の実施形態に従い、ステップを他のシーケンスで実施することもできる。例えば、本発明の代替実施形態は、上記に示したステップを異なる順序で実施する場合がある。さらに、図3に図示される個別のステップは、個別のステップに適した多様なシーケンスで実施される場合がある、複数のサブステップを含む場合がある。さらにまた、特定のアプリケーションに応じて、さらなるステップが追加または削除される場合がある。当業者は、多数の変形、変更、および代替を認識するであろう。
図4は、本発明の実施形態に従い、トランザクションデータ検証中の実行フローを示す簡単な図である。セキュリティオーディタ400は、以下に説明されるいくつかの構成要素を含むように図示される。
本発明の実施形態に従い、セキュリティオーディタは、APE(非同期プロセスエンジン)フレームワークによってインスタンス化される。APEフレームワークは、トランザクションログファイル(例えば、Golden Gateのトレイルファイル)からOLTPトランザクションを読み出すことと、ダウンストリームアプリケーションによる消費のためにメモリキューの中でそれらを使用可能にすることの役割がある。セキュリティオーディタは、1つのそのようなダウンストリームアプリケーションである。セキュリティオーディタは、構成ファイルおよびトランザクションが監査される予定の開始時間でインスタンス化される。本明細書に説明される実装において、スタートアップ時にセキュリティオーディタは、次の構成要素をインスタンス化し、開始する。
・処理されるトランザクション数等の統計を表示するために、多様なmbeanを登録するためのMBeanサーバ。
・SQLキャッシュとも呼ばれる、有効なSQLサマリキャッシュ430、およびトランザクションログサマリキャッシュ428を初期化する。有効なSQLサマリキャッシュ430は、データストリームからメモリへロードされたSQL文のリストである。このキャッシュには、データベースで発生した挿入、更新、および削除が含まれ、したがって、ストリームのためのデータストアを提供する。
・例外マネージャ458を初期化する。
・監査対象のレジストリ操作のプロファイルを読み出し、パースし、キャッシュするためのプロファイルマネージャ440。プロファイルは、OPERATIONIDおよび操作に関連する概念クラス名を使用してキャッシュされる。
・DBProcessor402は、APEフレームワークからOLTPトランザクションを呼び出すことを開始できる状態であるように初期化される。
・トランザクションログファイルのための指定されたディレクトリをポールするように、トランザクションログファイルポーラ420を開始する。
・サマリコリレータマネージャ450は、それらのそれぞれのキャッシュからのSQLおよびトランザクションログサマリを相関することを開始できる状態であるように初期化される。
・全てのトランザクションが監査された後、レポートを生成するように準備されるセキュリティオーディタレポートマネージャ460。セキュリティオーディタレポートマネージャ460は、次いで、セキュリティオーディタ詳細レポートスレッド466をインスタンス化し、開始する。
・セキュリティオーディタは、リセット可能な構成要素として、リセット可能SA構成要素マネージャ470を用いて自己を登録する。
・処理されるトランザクション数等の統計を表示するために、多様なmbeanを登録するためのMBeanサーバ。
・SQLキャッシュとも呼ばれる、有効なSQLサマリキャッシュ430、およびトランザクションログサマリキャッシュ428を初期化する。有効なSQLサマリキャッシュ430は、データストリームからメモリへロードされたSQL文のリストである。このキャッシュには、データベースで発生した挿入、更新、および削除が含まれ、したがって、ストリームのためのデータストアを提供する。
・例外マネージャ458を初期化する。
・監査対象のレジストリ操作のプロファイルを読み出し、パースし、キャッシュするためのプロファイルマネージャ440。プロファイルは、OPERATIONIDおよび操作に関連する概念クラス名を使用してキャッシュされる。
・DBProcessor402は、APEフレームワークからOLTPトランザクションを呼び出すことを開始できる状態であるように初期化される。
・トランザクションログファイルのための指定されたディレクトリをポールするように、トランザクションログファイルポーラ420を開始する。
・サマリコリレータマネージャ450は、それらのそれぞれのキャッシュからのSQLおよびトランザクションログサマリを相関することを開始できる状態であるように初期化される。
・全てのトランザクションが監査された後、レポートを生成するように準備されるセキュリティオーディタレポートマネージャ460。セキュリティオーディタレポートマネージャ460は、次いで、セキュリティオーディタ詳細レポートスレッド466をインスタンス化し、開始する。
・セキュリティオーディタは、リセット可能な構成要素として、リセット可能SA構成要素マネージャ470を用いて自己を登録する。
以下は、セキュリティオーディタの実行ステップのハイレベルの説明である。
1.セキュリティオーディタは、トランザクションが監査されるべき開始日時で初期化される。トランザクションの監査が一時停止され、レポートが生成されるべき終了日時は、構成ファイルに指定されたレポートチャンクサイズ時間数を加えることによって計算される。この終了日時は次いで、DBプロセッサスレッドおよびサマリコリレータクラスに渡される。
2.DBプロセッサ構成要素402は、DBプロセッサスレッドオブジェクト410のプールのスレッドを作成する。DBプロセッサスレッドは、再開可能構成要素マネージャ442によって、APEフレームワークからのOLTPトランザクションを呼び出すことを開始するように通知されることを待機している待機状態にある。
3.サマリコリレータマネージャ450構成要素は、サマリコリレータオブジェクトのプールのスレッドを作成する。サマリコリレータスレッドは、再開可能構成要素マネージャ442によって、SQLサマリをトランザクションログサマリと相関することを開始するように通知されることを待機している待機状態にある。
4.トランスログファイルポーラ420は、トランザクションログファイルが出現していないか、入力トランザクションログファイルフォルダをポーリングする。
5.トランザクションログファイルが、提供されたログコピー(logcopy.pl)Perlスクリプトを使用するクローンジョブ(すなわち、スケジュールされたタスク)を介して、入力トランザクションログファイルフォルダにコピーされると、以下の一連のイベントが発生する。
oトランスログファイルポーラ420は、ファイルをトランスログファイルディスパッチャ424に送る。
oトランスログファイルディスパッチャ424は、セキュリティオーディタの中の開始日時を使用して日付別にトランザクションログファイルをソートし、グループ化する。
o次いで、1日分のトランザクションログファイルがトランスログファイルプロセッサ426に渡され、次いで、これが、トランスログファイルプロセッサスレッドオブジェクトの数に均等にトランザクションログファイルを分散する。
■各トランスログファイルプロセッサスレッドは次いで、割り当てられたトランザクションログファイルの各々に対してトランスログファイルリーダをインスタンス化する。
■次いで、各トランスログファイルプロセッサスレッドは、トランザクションログファイルのチャンクを読み出す1組のトランスログファイルリーダオブジェクト全体をラウンドロビン方式で処理する。
■トランザクションログエントリは、トランスログサマリオブジェクトの中でパースされ、トランスログサマリキャッシュ428にキャッシュされる。
oトランスログファイルディスパッチャ424は次いで、他の待機している構成要素に監査を再開するように通知するように、再開可能構成要素マネージャ442に通知する。
oトランスログファイルディスパッチャ424は次いで、サマリコリレータマネージャ450によって、翌日のトランザクションログファイルの処理を開始するように通知されることを待機している待機状態になる。
6.再開可能構成要素マネージャ442は次いで、監査を再開するように、DBプロセッサスレッドおよびサマリコリレータスレッドに通知する。
7.DBプロセッサスレッドは、APEフレームワークからOLTPトランザクションを呼び出しすることを開始する。レジストリ操作のための関連プロファイルの中の検証規則に合格したトランザクションは次いで、SQLサマリオブジェクトに変換され、SQLサマリキャッシュ430にキャッシュされる。
8.サマリコリレータスレッドは、SQLサマリキャッシュ430からSQLサマリ、およびトランスログサマリキャッシュ428から対応するトランスログサマリを呼び出すことを開始する。トランザクションログ検証規則は、両方のサマリに適用される。任意の検証エラーは、ログに記録される。
9.DBプロセッサスレッド410が、APEフレームワークから、作成タイムスタンプがセキュリティオーディタに指定された終了日時よりも大きいOLTPトランザクションを呼び出すと、スレッドは、待機状態に入る。このスレッドは、次の日の分のトランザクションログファイルが受信されると、再開するように通知される。
10.同様に、サマリコリレータスレッドが、作成タイムスタンプがセキュリティオーディタに指定された終了日時よりも大きいSQLサマリを呼び出すと、スレッドは、待機状態に入る。このスレッドは、翌日分のトランザクションログファイルが受信されると、アクティビティを再開するように通知される。
11.サマリコリレータマネージャ450は次いで、レポートを生成するように、セキュリティオーディタレポートマネージャ460に通知する。
12.セキュリティオーディタレポートマネージャ460は、トランザクションログおよびSQLサマリキャッシュをフラッシュし、エラーのタイプおよび件数のハイレベルのレポートを与える要約レポート468および詳細エラーレポート464の2つのレポートを生成する。特定のアプリケーションに応じて、他のレポートを生成することができる。
13.セキュリティオーディタレポートマネージャ460は次いで、翌日のトランザクションログファイルを処理する準備ができている状態であるように、リセット可能な構成要素に対して、reset()を指示するように、リセット可能SA構成要素マネージャ470に通知する。
14.サマリコリレータマネージャ450は次いで、進行することができ、翌日のトランザクションログファイルを処理することを開始できることをトランスログファイルディスパッチャ424に通知する。
1.セキュリティオーディタは、トランザクションが監査されるべき開始日時で初期化される。トランザクションの監査が一時停止され、レポートが生成されるべき終了日時は、構成ファイルに指定されたレポートチャンクサイズ時間数を加えることによって計算される。この終了日時は次いで、DBプロセッサスレッドおよびサマリコリレータクラスに渡される。
2.DBプロセッサ構成要素402は、DBプロセッサスレッドオブジェクト410のプールのスレッドを作成する。DBプロセッサスレッドは、再開可能構成要素マネージャ442によって、APEフレームワークからのOLTPトランザクションを呼び出すことを開始するように通知されることを待機している待機状態にある。
3.サマリコリレータマネージャ450構成要素は、サマリコリレータオブジェクトのプールのスレッドを作成する。サマリコリレータスレッドは、再開可能構成要素マネージャ442によって、SQLサマリをトランザクションログサマリと相関することを開始するように通知されることを待機している待機状態にある。
4.トランスログファイルポーラ420は、トランザクションログファイルが出現していないか、入力トランザクションログファイルフォルダをポーリングする。
5.トランザクションログファイルが、提供されたログコピー(logcopy.pl)Perlスクリプトを使用するクローンジョブ(すなわち、スケジュールされたタスク)を介して、入力トランザクションログファイルフォルダにコピーされると、以下の一連のイベントが発生する。
oトランスログファイルポーラ420は、ファイルをトランスログファイルディスパッチャ424に送る。
oトランスログファイルディスパッチャ424は、セキュリティオーディタの中の開始日時を使用して日付別にトランザクションログファイルをソートし、グループ化する。
o次いで、1日分のトランザクションログファイルがトランスログファイルプロセッサ426に渡され、次いで、これが、トランスログファイルプロセッサスレッドオブジェクトの数に均等にトランザクションログファイルを分散する。
■各トランスログファイルプロセッサスレッドは次いで、割り当てられたトランザクションログファイルの各々に対してトランスログファイルリーダをインスタンス化する。
■次いで、各トランスログファイルプロセッサスレッドは、トランザクションログファイルのチャンクを読み出す1組のトランスログファイルリーダオブジェクト全体をラウンドロビン方式で処理する。
■トランザクションログエントリは、トランスログサマリオブジェクトの中でパースされ、トランスログサマリキャッシュ428にキャッシュされる。
oトランスログファイルディスパッチャ424は次いで、他の待機している構成要素に監査を再開するように通知するように、再開可能構成要素マネージャ442に通知する。
oトランスログファイルディスパッチャ424は次いで、サマリコリレータマネージャ450によって、翌日のトランザクションログファイルの処理を開始するように通知されることを待機している待機状態になる。
6.再開可能構成要素マネージャ442は次いで、監査を再開するように、DBプロセッサスレッドおよびサマリコリレータスレッドに通知する。
7.DBプロセッサスレッドは、APEフレームワークからOLTPトランザクションを呼び出しすることを開始する。レジストリ操作のための関連プロファイルの中の検証規則に合格したトランザクションは次いで、SQLサマリオブジェクトに変換され、SQLサマリキャッシュ430にキャッシュされる。
8.サマリコリレータスレッドは、SQLサマリキャッシュ430からSQLサマリ、およびトランスログサマリキャッシュ428から対応するトランスログサマリを呼び出すことを開始する。トランザクションログ検証規則は、両方のサマリに適用される。任意の検証エラーは、ログに記録される。
9.DBプロセッサスレッド410が、APEフレームワークから、作成タイムスタンプがセキュリティオーディタに指定された終了日時よりも大きいOLTPトランザクションを呼び出すと、スレッドは、待機状態に入る。このスレッドは、次の日の分のトランザクションログファイルが受信されると、再開するように通知される。
10.同様に、サマリコリレータスレッドが、作成タイムスタンプがセキュリティオーディタに指定された終了日時よりも大きいSQLサマリを呼び出すと、スレッドは、待機状態に入る。このスレッドは、翌日分のトランザクションログファイルが受信されると、アクティビティを再開するように通知される。
11.サマリコリレータマネージャ450は次いで、レポートを生成するように、セキュリティオーディタレポートマネージャ460に通知する。
12.セキュリティオーディタレポートマネージャ460は、トランザクションログおよびSQLサマリキャッシュをフラッシュし、エラーのタイプおよび件数のハイレベルのレポートを与える要約レポート468および詳細エラーレポート464の2つのレポートを生成する。特定のアプリケーションに応じて、他のレポートを生成することができる。
13.セキュリティオーディタレポートマネージャ460は次いで、翌日のトランザクションログファイルを処理する準備ができている状態であるように、リセット可能な構成要素に対して、reset()を指示するように、リセット可能SA構成要素マネージャ470に通知する。
14.サマリコリレータマネージャ450は次いで、進行することができ、翌日のトランザクションログファイルを処理することを開始できることをトランスログファイルディスパッチャ424に通知する。
図4に図示される特定のステップは、本発明の実施形態に従い、セキュリティマネージャを操作する特定の方法を提供することを理解されたい。代替の実施形態に従い、ステップの他のシーケンスを実施することもできる。例えば、本発明の代替実施形態は、上記に示したステップを異なる順序で実施する場合がある。さらに、図4に図示される個別のステップは、個別のステップに適した多様なシーケンスで実施される場合がある、複数のサブステップを含む場合がある。さらにまた、特定のアプリケーションに応じて、さらなるステップが追加または削除される場合がある。当業者は、多数の変形、変更、および代替を認識するであろう。
本発明の実施形態に従い、セキュリティオーディタは、異なる構成要素を追加および削除できることを確実にするために、サービスプロバイダインターフェース(SPI)モデルを利用する。例えば、1つのデータベースサービスアプリケーションから移動する(例えば、CA州Redwood ShoresのOracle Corporationから入手可能なLogMiner(商標)監査ツールから、CA州San FranciscoのGoldenGate Softwareから入手可能なGoldenGateトランザクションデータ統合ソフトウェアへ)という決定が行われる場合、GoldenGateをパースするためのコードは、LogMiner(商標)を使用して提供される場合と同じ情報を提供するように作成される。
特定の実施形態に従い、全てのプログラミングは、SPIによって公開されるインターフェースを使用して実行される。実施形態に応じて、以下の機能を提供するために、いくつかの異なるハイレベルのインターフェースを利用することができる。
・キャッシュマネージャによって実装されるインターフェース。
・SQLサマリの情報をトランザクションログサマリの情報と相関させる、Correlatorクラスのインターフェース。
・イベントを送るためのインターフェース(現在、トランザクションログファイルを送るために使用)
・セキュリティオーディタによって投げる、または発することができる、様々な種類の検証例外のサブクラスjava.lang.Exceptionのクラス。
・レジストリ操作のプロファイル情報を公開するためのインターフェース。
・1単位のトランザクションログファイルを処理後、リセットすることが必要な構成要素によって実装されるインターフェース。
・1単位のトランザクションログファイルが使用可能である時、プロセスを再開することが必要な構成要素によって実装されるインターフェース。
・異なる構成要素の適切なシャットダウンを支援するためのインターフェース。
・SQL文の中の情報を表現するためのインターフェース。
・SQLおよびトランザクションログサマリのためのインターフェース。
本発明は、これらの特定のインターフェースおよびそれらが提供する機能に限定されない。代替の実施形態において、当業者に明らかであるように、他のインターフェースが利用される。
・キャッシュマネージャによって実装されるインターフェース。
・SQLサマリの情報をトランザクションログサマリの情報と相関させる、Correlatorクラスのインターフェース。
・イベントを送るためのインターフェース(現在、トランザクションログファイルを送るために使用)
・セキュリティオーディタによって投げる、または発することができる、様々な種類の検証例外のサブクラスjava.lang.Exceptionのクラス。
・レジストリ操作のプロファイル情報を公開するためのインターフェース。
・1単位のトランザクションログファイルを処理後、リセットすることが必要な構成要素によって実装されるインターフェース。
・1単位のトランザクションログファイルが使用可能である時、プロセスを再開することが必要な構成要素によって実装されるインターフェース。
・異なる構成要素の適切なシャットダウンを支援するためのインターフェース。
・SQL文の中の情報を表現するためのインターフェース。
・SQLおよびトランザクションログサマリのためのインターフェース。
本発明は、これらの特定のインターフェースおよびそれらが提供する機能に限定されない。代替の実施形態において、当業者に明らかであるように、他のインターフェースが利用される。
非同期プロセスエンジン(APE)フレームワーク
上記のように、1つの実装は、セキュリティオーディタをAPEフレームワークに統合する。APEフレームワークは、次の2つの主な役割を有する。
・SecurityAuditorFacadeをインスタンス化し、これによって、SecurityAuditorエンジンをインスタンス化する。SecurityAuditorFacadeは、SecurityAuditorとAPEフレームワークとの間の統合クラスである。SecurityAuditorFacadeは、Springインジェクションを介してインスタンス化される場合がある。トランザクションが監査されることが必要な開始および終了日時が計算され、セキュリティオーディタに設定される。
・SecurityAuditorFacadeを介して、OLTPトランザクションをメモリキューの中で使用可能にする。
・SecurityAuditorFacadeをインスタンス化し、これによって、SecurityAuditorエンジンをインスタンス化する。SecurityAuditorFacadeは、SecurityAuditorとAPEフレームワークとの間の統合クラスである。SecurityAuditorFacadeは、Springインジェクションを介してインスタンス化される場合がある。トランザクションが監査されることが必要な開始および終了日時が計算され、セキュリティオーディタに設定される。
・SecurityAuditorFacadeを介して、OLTPトランザクションをメモリキューの中で使用可能にする。
管理サーバ(JMX)
セキュリティオーディタは、管理サーバをホストする。管理サーバに登録されるいくつかのMBeanが存在し、以下のリストのMBeanを含む場合がある。このMBeanのリストは、例として提供されるに過ぎず、特定のアプリケーションに適切に、さらなるMBeanを追加することができる。当業者は、多数の変形、変更、および代替を認識するであろう。
・ExceptionManagerMBean:検証例外の数およびタイプのカウントを提供する。
・SecurityAuditorConfigMBean:構成ファイルの中の構成情報に関する詳細を提供する。
・SecurityΑuditorMBean:セキュリティオーディタおよびその構成要素全てを順番にシャットダウンするための操作を提供する。
・SQLSummaryCacheManagerMBean:キャッシュの中のSQLサマリの数に関する情報を提供する。
・TransLogSummaryCacheManagerMBean:キャッシュの中のトランザクションログサマリの数に関する情報を提供する。
・SummaryCorrelatorManagerMBean:相関されたトランザクションの数、ならびに処理された最後のSQLおよびトランザクションログサマリのタイムスタンプに関する情報を提供する。
・ExceptionManagerMBean:検証例外の数およびタイプのカウントを提供する。
・SecurityAuditorConfigMBean:構成ファイルの中の構成情報に関する詳細を提供する。
・SecurityΑuditorMBean:セキュリティオーディタおよびその構成要素全てを順番にシャットダウンするための操作を提供する。
・SQLSummaryCacheManagerMBean:キャッシュの中のSQLサマリの数に関する情報を提供する。
・TransLogSummaryCacheManagerMBean:キャッシュの中のトランザクションログサマリの数に関する情報を提供する。
・SummaryCorrelatorManagerMBean:相関されたトランザクションの数、ならびに処理された最後のSQLおよびトランザクションログサマリのタイムスタンプに関する情報を提供する。
プロファイルマネージャは、XMLフォーマットのプロファイルを読み出し、それらをメモリにキャッシュする、シングルトンクラスである。スタートアップ時、セキュリティオーディタは、プロファイルの場所でプロファイルマネージャを初期化する。一実装において、プロファイルは、java.util.TreeMapにキャッシュされる。各プロファイルは、以下のキーで、メモリの中の2つのツリーマップにキャッシュされる場合がある。
・操作ID(整数):プロファイルは、「INSERT INTO TRANSACTION」表のSQL文に指定された「OPERATIONID」列の値に基づいて呼び出される。このモードのアクセスは、OLTPトランザクションのデータを使用して、一致するプロファイル情報を発見するように、DBプロセッサスレッドクラスによって実行される。
・概念クラス名(文字列):プロファイルは、概念クラス名トランザクションログエントリの値に基づいて呼び出される。このモードのアクセスは、トランザクションログエントリのデータを使用して、一致するプロファイル情報を発見するように、トランスログプロセッサスレッドクラスによって実行される。
・操作ID(整数):プロファイルは、「INSERT INTO TRANSACTION」表のSQL文に指定された「OPERATIONID」列の値に基づいて呼び出される。このモードのアクセスは、OLTPトランザクションのデータを使用して、一致するプロファイル情報を発見するように、DBプロセッサスレッドクラスによって実行される。
・概念クラス名(文字列):プロファイルは、概念クラス名トランザクションログエントリの値に基づいて呼び出される。このモードのアクセスは、トランザクションログエントリのデータを使用して、一致するプロファイル情報を発見するように、トランスログプロセッサスレッドクラスによって実行される。
プロファイルの例として、レジストリ操作プロファイルは、以下のインターフェースによって表現される。
public interface RegistryOperationProfile extends Serializable {
Operationlnfo getOperationlnfo ();
DatabaseInfo getDatabaseInfo ();
Validator getValidator ();
}
public interface RegistryOperationProfile extends Serializable {
Operationlnfo getOperationlnfo ();
DatabaseInfo getDatabaseInfo ();
Validator getValidator ();
}
SQLサマリキャッシュマネージャ(SQLSummaryCacheManager)は、SQLサマリのキャッシュである、シングルトンクラスである。SQLサマリは、java.util.LinkedBlockingQueueでキャッシュされる。DBProcessorスレッドは、このキューに有効なSQLサマリを追加する。全てのデータベース検証規則に合格していないデータベーストランザクションに関連するトランザクションIDは、HashSetにキャッシュされる。このように、対応するトランザクションログエントリの有効期限が切れると、そもそも無効なSQLサマリに関連していたことがわかる。
SQLサマリのSCNが、トランザクションログファイルの最大SCN読み出し値からSCN閾値を差し引いたよりも小さい場合、エントリはキャッシュから削除され、SQLSummaryExpired例外が投げられる。SQLサマリキャッシュの最大サイズは、「sa.config」構成ファイルの中のパラメータによって制御される。この値は、初期化段階の間にセキュリティオーディタによって、SQLSummaryCacheManagerに渡される。
トランスログサマリキャッシュマネージャ(TransLogSummaryCacheManager)は、トランザクションログサマリのキャッシュである、シングルトンクラスである。トランザクションログサマリは、java.util.LinkedHashMapを拡張する、インナークラスExpiringTransSummaryCacheにキャッシュされる。トランスログプロセッサスレッドクラスは、有効なトランザクションログサマリをこのマップに追加する。
ExpiringTransSummaryCacheに追加されるそれぞれのトランザクションログサマリに対して、マップの中の最長時間未使用の(LRU)エントリを用いてremoveEldestEntry()メソッドが起動される。トランザクションログエントリのSCNが、データベーストランザクションの最大SCN読み出し値からSCN閾値を差し引いたよりも小さい場合、エントリはキャッシュから削除され、TransLogSummaryExpired例外が投げられる。SCN閾値は、「sa.config」構成ファイルの中のパラメータによって設定される。トランザクションログサマリキャッシュの最大サイズは、「sa.config」構成ファイルの中のパラメータによって制御される。この値は、初期化段階の間にセキュリティオーディタによって、トランスログサマリキャッシュマネージャに渡される。
例外マネージャ458は、図4に図示される。セキュリティオーディタで例外が投げられると必ず、基底のSA例外クラスのコンストラクタは、次の2つの機能を実施する。
・提供されるロガーを使用して、ERRORレベルで所与のエラーメッセージをログする。
・指定の例外のカウントを増分するために、例外マネージャクラスのメソッドを起動する。
・提供されるロガーを使用して、ERRORレベルで所与のエラーメッセージをログする。
・指定の例外のカウントを増分するために、例外マネージャクラスのメソッドを起動する。
シングルトンクラスのcom.verisign.sa.spi.exception.ExceptionManagerが提供され、キャッシュ(HashMap<String className,AtomicInteger>)が使用されて、エラータイプに基づいて検証エラーの数を追跡する。セキュリティオーディタレポートクラスは、レポートを生成する時にこの情報を使用する。
本発明の実施形態は、トランスログファイルポーラによって監視されている入力トランザクションログフォルダに関連のトランザクションログファイル全てをコピーするために使用されるパールスクリプト(すなわち、logcopy.pl)である、ログコピー(Log Copy)スクリプトを提供する。スクリプトは次いで、入力トランザクションログフォルダにトランザクションログファイル全てを「scp」する。ファイル「build.properties」は、トランザクションログファイルを有するサーバ全てのIPアドレスを含むように必要に応じて変更される。
パラメータ、logcopy.date.intervalは、何日前までのトランザクションログファイルをコピーするかを指定する。「1」の値は、昨日からのトランザクションログファイルがコピーされることが必要であることを指定する。同様に、「2」の値は、一昨日および昨日のトランザクションログファイルをコピーする。全てのログファイルがコピーされた後、Log Copyは、次いで、入力トランザクションログフォルダに「trigger」という名前のファイルを作成する。これは、セキュリティオーディタが、全てのトランザクションログファイルがコピーされた後にのみ処理を開始することを確実にするためである。Log Copyは、毎日午前2時に実行するようにクローンジョブとしてスケジュールされる。
図4に図示されるトランザクションログファイルポーラ(TransLogFilesPoller)420は、「trigger」という名前の特定のファイルに対して設定ファイルに指定されたディレクトリをポーリングするために使用される。トランザクションログファイルパラメータは、構成ファイルの中に指定される。
再び図4を参照すると、トランザクションログファイルは、提供されるログコピー(logcopy.pl)のパールスクリプトを使用するクローンジョブを介して、入力トランザクションログファイルフォルダにコピーされ、以下の一連のイベントが発生する。
・TransLogFilePoller420は、triggerファイルをトランスログファイルディスパッチャへ送る。
・トランスログファイルディスパッチャ424は、triggerファイルを削除する。入力トランザクションログフォルダの中の全てのトランザクションログファイルは、プロセス内トランザクションログフォルダに移動される。
・トランスログファイルディスパッチャ424は、セキュリティオーディタの中の開始日時を使用して日付別にトランザクションログファイルをソートし、グループ化する。
・次いで、1日分のトランザクションログファイルがトランスログファイルプロセッサ426に渡され、次いで、これが、トランスログファイルプロセッサスレッドオブジェクトの数で均等にトランザクションログファイルを分散する。作成されたトランスログファイルプロセッサスレッドの数は、構成ファイルの中で、次のように指定される:
sa.translogsummary.threadpool.size=2
・トランザクション
■各トランスログファイルプロセッサスレッドは次いで、割り当てられたトランザクションログファイルの各々に対してトランスログファイルリーダをインスタンス化する。
■次いで、各トランスログファイルプロセッサスレッドは、トランザクションログファイルのチャンクを読み出す1組のトランスログファイルリーダオブジェクトをラウンドロビン方式で処理する。
■トランザクションログファイルの中の各エントリに対するトランスログファイルリーダオブジェクトは、次の操作を実施する。
・トランザクションログサマリを生成するために、トランザクションログエントリをデコードする。
・トランザクションログサマリのための作成タイムスタンプを取得するために、トランザクションログエントリのタイムスタンプをパースする。
・トランザクションIDによってキーされるHashMapにトランザクションログサマリをキャッシュする。
・トランザクションログファイルが完全に処理された後、トランスログファイルリーダオブジェクトは、ファイルを処理済みトランザクションログフォルダに移動する。
・トランスログファイルディスパッチャ424は次いで、監査を再開するように他の待機している構成要素に通知するように、再開可能構成要素マネージャ442に通知する。
・トランスログファイルディスパッチャ424は次いで、サマリコリレータマネージャ450によって次の日のトランザクションログファイル(使用可能である場合)を処理することを開始するように通知されることを待機している待機状態になる。
・TransLogFilePoller420は、triggerファイルをトランスログファイルディスパッチャへ送る。
・トランスログファイルディスパッチャ424は、triggerファイルを削除する。入力トランザクションログフォルダの中の全てのトランザクションログファイルは、プロセス内トランザクションログフォルダに移動される。
・トランスログファイルディスパッチャ424は、セキュリティオーディタの中の開始日時を使用して日付別にトランザクションログファイルをソートし、グループ化する。
・次いで、1日分のトランザクションログファイルがトランスログファイルプロセッサ426に渡され、次いで、これが、トランスログファイルプロセッサスレッドオブジェクトの数で均等にトランザクションログファイルを分散する。作成されたトランスログファイルプロセッサスレッドの数は、構成ファイルの中で、次のように指定される:
sa.translogsummary.threadpool.size=2
・トランザクション
■各トランスログファイルプロセッサスレッドは次いで、割り当てられたトランザクションログファイルの各々に対してトランスログファイルリーダをインスタンス化する。
■次いで、各トランスログファイルプロセッサスレッドは、トランザクションログファイルのチャンクを読み出す1組のトランスログファイルリーダオブジェクトをラウンドロビン方式で処理する。
■トランザクションログファイルの中の各エントリに対するトランスログファイルリーダオブジェクトは、次の操作を実施する。
・トランザクションログサマリを生成するために、トランザクションログエントリをデコードする。
・トランザクションログサマリのための作成タイムスタンプを取得するために、トランザクションログエントリのタイムスタンプをパースする。
・トランザクションIDによってキーされるHashMapにトランザクションログサマリをキャッシュする。
・トランザクションログファイルが完全に処理された後、トランスログファイルリーダオブジェクトは、ファイルを処理済みトランザクションログフォルダに移動する。
・トランスログファイルディスパッチャ424は次いで、監査を再開するように他の待機している構成要素に通知するように、再開可能構成要素マネージャ442に通知する。
・トランスログファイルディスパッチャ424は次いで、サマリコリレータマネージャ450によって次の日のトランザクションログファイル(使用可能である場合)を処理することを開始するように通知されることを待機している待機状態になる。
データベースプロセッサスレッドは、APEフレームワークからデータベーストランザクションを呼び出すことを開始するために、再開可能構成要素マネージャ442によって通知されるように、最初は待機状態にある。OLTPトランザクションが、SecurityAuditorFacadeを介して、APEフレームワークから読み出されると、次のステップが発生する。
1.APEフレームワークから呼び出される各OLTPトランザクションに対して:
■OPERATIONID列の値が、「INSERT INTO TRANSACTION」のSQL文から呼び出される。
■OPERATIONID列の値が、監査可能な操作のうちの1つでない場合、このトランザクション境界内の全てのSQL文は、破棄される。
■「INSERT INTO TRANSACTION」のSQL文が存在しない場合、トランザクション境界内の組全体のSQL文は、悪意のあるSQL文であると見なされる。
■トランザクアクションの1組のSQL文のための対応するプロファイルが、OPERATIONIDの値を使用してプロファイルマネージャ440から呼び出される。
2.パースされたSQL文の関連情報(プロファイルの指定に応じて)は、SQL文にコピーされる。これらのSQL文の集合体(他の情報を含む)は最終的に、SQLサマリを形成するために使用される。
3.参照検証、ルックアップ検証、正規表現検証等の関連データベース検証規則が適用される。これらの検証に不合格のSQL文は、エラーとして(例えば、直ちに)警告が与えられる。対応するトランザクションIDは、「無効なSQLサマリ」キャッシュ412に持続され、例外マネージャ458に渡される。
4.SQL文に対する全ての検証に合格すると、得られるSQLサマリは、プロファイルのXML属性「transLogEntryExists=true/false」によって指定されるような対応するトランザクションログエントリを有する場合にのみキャッシュされる。SQL文の集合体に関連するプロファイルはまた、SQLサマリと共に記憶される。
5.加えて、トランザクション日付は、キャッシュされるサマリの作成タイムスタンプとして使用される。プロセスの後の時点で、サマリがキャッシュから呼び出される時、キャッシュの作成タイムスタンプは、キャッシュエントリの有効期限が切れているか(すなわち、対応するトランザクションログサマリが、指定の時間内に発見されていない)を確認するために使用される。
6.セキュリティオーディタの終了日時以降であるトランザクション日付を有するトランザクションが発見されると、データベースプロセッサスレッドは、待機状態に入る。データベースプロセッサスレッドは、新しい組のトランザクションログファイルが受信されたことが、トランザクションログファイルディスパッチャ424によって通知されると、APEフレームワークからトランザクションを呼び出すことを再開する。
1.APEフレームワークから呼び出される各OLTPトランザクションに対して:
■OPERATIONID列の値が、「INSERT INTO TRANSACTION」のSQL文から呼び出される。
■OPERATIONID列の値が、監査可能な操作のうちの1つでない場合、このトランザクション境界内の全てのSQL文は、破棄される。
■「INSERT INTO TRANSACTION」のSQL文が存在しない場合、トランザクション境界内の組全体のSQL文は、悪意のあるSQL文であると見なされる。
■トランザクアクションの1組のSQL文のための対応するプロファイルが、OPERATIONIDの値を使用してプロファイルマネージャ440から呼び出される。
2.パースされたSQL文の関連情報(プロファイルの指定に応じて)は、SQL文にコピーされる。これらのSQL文の集合体(他の情報を含む)は最終的に、SQLサマリを形成するために使用される。
3.参照検証、ルックアップ検証、正規表現検証等の関連データベース検証規則が適用される。これらの検証に不合格のSQL文は、エラーとして(例えば、直ちに)警告が与えられる。対応するトランザクションIDは、「無効なSQLサマリ」キャッシュ412に持続され、例外マネージャ458に渡される。
4.SQL文に対する全ての検証に合格すると、得られるSQLサマリは、プロファイルのXML属性「transLogEntryExists=true/false」によって指定されるような対応するトランザクションログエントリを有する場合にのみキャッシュされる。SQL文の集合体に関連するプロファイルはまた、SQLサマリと共に記憶される。
5.加えて、トランザクション日付は、キャッシュされるサマリの作成タイムスタンプとして使用される。プロセスの後の時点で、サマリがキャッシュから呼び出される時、キャッシュの作成タイムスタンプは、キャッシュエントリの有効期限が切れているか(すなわち、対応するトランザクションログサマリが、指定の時間内に発見されていない)を確認するために使用される。
6.セキュリティオーディタの終了日時以降であるトランザクション日付を有するトランザクションが発見されると、データベースプロセッサスレッドは、待機状態に入る。データベースプロセッサスレッドは、新しい組のトランザクションログファイルが受信されたことが、トランザクションログファイルディスパッチャ424によって通知されると、APEフレームワークからトランザクションを呼び出すことを再開する。
本明細書全体で説明されるように、セキュリティオーディタで同時に実行される3つの組のスレッドが存在する。サマリコリレータ450(サマリコリレータマネージャとも呼ばれる)は、コリレータスレッドのスレッドプールの作成および管理に責任を持つ。セキュリティオーディタで同時に実行する3つの組のスレッドは、次の通りである。
・SQLサマリスレッドは、SQL文をパースし、SQLサマリをキャッシュする。
・トランザクションログスレッドは、トランザクションログファイルをパースし、トランザクションログサマリをキャッシュする。
・コリレータスレッドは、SQLサマリおよび対応するトランザクションログサマリを両方のキャッシュから並行して(すなわち、同時に)呼び出す。この組のスレッドは、SQLサマリからの情報をトランザクションログサマリの情報と相関させるので、これらはコリレータスレッドと呼ばれる。
作成するスレッドの数は、構成ファイルの中に指定される。サマリコリレータマネージャ450は、SQLサマリとトランザクションログサマリとの間のトランザクションのユニットの相関が終了すると、トランスログファイルディスパッチャ424に通知する。
・SQLサマリスレッドは、SQL文をパースし、SQLサマリをキャッシュする。
・トランザクションログスレッドは、トランザクションログファイルをパースし、トランザクションログサマリをキャッシュする。
・コリレータスレッドは、SQLサマリおよび対応するトランザクションログサマリを両方のキャッシュから並行して(すなわち、同時に)呼び出す。この組のスレッドは、SQLサマリからの情報をトランザクションログサマリの情報と相関させるので、これらはコリレータスレッドと呼ばれる。
作成するスレッドの数は、構成ファイルの中に指定される。サマリコリレータマネージャ450は、SQLサマリとトランザクションログサマリとの間のトランザクションのユニットの相関が終了すると、トランスログファイルディスパッチャ424に通知する。
セキュリティオーディタレポートマネージャは、スタートアップ時にセキュリティオーディタによって初期化される。レポートマネージャ460によって生成されるレポートは、構成ファイルの中のパラメータによって指定されたフォルダに書き込まれる。
特定の実施形態において、レポートファイル名は、<開始日時>[MMddyyyyHHmmss]−to−<終了日時>/MMddyyyyHHmmss]−<レポートタイプ>.txtのフォーマットを有する。例として、レポートは、2009年11月1日の真夜中から開始し、2009年11月2日の真夜中に終了するトランザクションに対して生成されるレポートの場合、11012009000000−to−11022009000000−Summary.txtという名前が可能である。
図4に図示されるように、2つのタイプのレポート、「要約」または「詳細」のいずれかが提供される。サマリおよび詳細レポートに関する追加の説明は、本明細書全体で提供され、以下に具体的に提供される。レポートを生成する前に、セキュリティオーディタレポートマネージャは次の操作を実施する。
・SQLサマリキャッシュをフラッシュする:
oキャッシュのSQLサマリは、対応するトランザクションログサマリと相関することができる任意の追加のSQLサマリが相関されることを確実にするように、最後にもう1回繰り返される。
o対応するトランザクションログサマリが発見されず、SQLサマリの有効期限が切れていない場合は、キャッシュに戻される。
o有効期限が切れた一切のSQLサマリは、「SQLSummaryExpiredException」で不合格となる。SQLサマリは、サマリの中のSCNがトランザクションログファイルの中の最大SCN読み出し値からSCN閾値を差し引いたよりも少ない場合、有効期限が切れたと見なされる。例として、SCN閾値は、10,000に設定することができる。
・トランスログサマリキャッシュをフラッシュする:
oトランスログサマリキャッシュの中のトランザクションログサマリ全てで、以下の操作が実施される。
■このTransLogSummaryに対応するトランザクションIDが「無効なSQLサマリ」の中に存在するかどうかを確認する。データベース検証規則に不合格だったデータベーストランザクションのトランザクションIDは、このキャッシュに存在することになる。トランザクションIDが「無効なSQLサマリ」キャッシュに存在する場合、エントリはキャッシュから削除され、無視される。
■トランザクションIDが「無効なSQLサマリ」キャッシュに存在せず、サマリの有効期限が切れていない場合、キャッシュに戻される。
oトランザクションログサマリの有効期限が切れている場合、キャッシュから削除され、「TransLogSummaryExpiredException」で不合格になる。トランザクションログサマリは、サマリの中のSCNが、データベーストランザクションからの最大SCN読み出し値からSCN閾値を差し引いたよりも少ない場合、有効期限が切れたと見なされる。例として、SCN閾値は、10,000に設定することができる。
・SQLサマリキャッシュをフラッシュする:
oキャッシュのSQLサマリは、対応するトランザクションログサマリと相関することができる任意の追加のSQLサマリが相関されることを確実にするように、最後にもう1回繰り返される。
o対応するトランザクションログサマリが発見されず、SQLサマリの有効期限が切れていない場合は、キャッシュに戻される。
o有効期限が切れた一切のSQLサマリは、「SQLSummaryExpiredException」で不合格となる。SQLサマリは、サマリの中のSCNがトランザクションログファイルの中の最大SCN読み出し値からSCN閾値を差し引いたよりも少ない場合、有効期限が切れたと見なされる。例として、SCN閾値は、10,000に設定することができる。
・トランスログサマリキャッシュをフラッシュする:
oトランスログサマリキャッシュの中のトランザクションログサマリ全てで、以下の操作が実施される。
■このTransLogSummaryに対応するトランザクションIDが「無効なSQLサマリ」の中に存在するかどうかを確認する。データベース検証規則に不合格だったデータベーストランザクションのトランザクションIDは、このキャッシュに存在することになる。トランザクションIDが「無効なSQLサマリ」キャッシュに存在する場合、エントリはキャッシュから削除され、無視される。
■トランザクションIDが「無効なSQLサマリ」キャッシュに存在せず、サマリの有効期限が切れていない場合、キャッシュに戻される。
oトランザクションログサマリの有効期限が切れている場合、キャッシュから削除され、「TransLogSummaryExpiredException」で不合格になる。トランザクションログサマリは、サマリの中のSCNが、データベーストランザクションからの最大SCN読み出し値からSCN閾値を差し引いたよりも少ない場合、有効期限が切れたと見なされる。例として、SCN閾値は、10,000に設定することができる。
2つのレポート(詳細および要約)は、セキュリティオーディタに指定されたstartDateTimeで開始し、endDateTimeで終了する監査されたトランザクションに対して生成される。レポートの期間を制御するパラメータは、設定ファイルの中に指定される。レポートが生成された後、全てのリセット可能な構成要素の中の統計データをリセットするために、リセット可能構成要素マネージャ470が起動される。リセット可能な構成要素は以下に詳細を検討する。
上記のように、セキュリティオーディタは、発生した検証エラーのタイプおよびカウントだけを示す高レベルのレポートである、要約レポートと、発生した各エラーおよび発生した回数についての詳細を含有する、詳細レポートとの少なくとも2つのレポートを生成する。セキュリティオーディタレポートマネージャ460がスタートアップ時に初期化される時、詳細レポートスレッド466をインスタンス化し、開始する。検証エラーが発生すると、エラーメッセージの詳細バージョンがキューに配置される。詳細レポートスレッド466は、このキューからエラーメッセージを読み出す。次いで、同一のエラーメッセージが以前に発生していたかどうかを確認するために、キャッシュを確認する。同一のエラーメッセージがキャッシュに既に存在する場合、カウントは増分される。同一のエラーメッセージがキャッシュに発見されない場合、メッセージは、1のカウントでキャッシュに追加される。
詳細レポートスレッド466をその中およびそれ自体のスレッドとして提供することによって、本発明の実施形態は、検証スレッドが、詳細エラーメッセージがキャッシュでチェックされることを待機する必要なく、検証の仕事を継続して実行することを確実にする。
本発明の実施形態は、アクティビティの再開をトリガする所定のイベントが発生すると、セキュリティオーディタの中の所定の構成要素に通知を提供する。この目的のために、再開可能構成要素マネージャ442が提供される。処理を再開するためにそのようなイベントを待機する構成要素は、セキュリティオーディタで再開可能な構成要素である。全ての再開可能な構成要素は、次のインターフェースを実装することによって、そのようなイベントが通知されるように、再開可能構成要素マネージャ442にそれら自体を登録する。
public interface ResumeableSAComponent {
void resumeAuditing ();
}
public interface ResumeableSAComponent {
void resumeAuditing ();
}
トランスログファイルディスパッチャ424は、1日分のトランザクションログファイルが受信されると、ResumeableSAComponentManager.resumeAuditing()を起動する。再開可能SA構成要素マネージャ442は、これによって、全ての登録された再開可能SA構成要素上でresume()メソッドを起動する。
セキュリティオーディタの中の次の構成要素は、ResumeableSAComponentインターフェースを実装し、それら自体をシングルトンの再開可能SA構成要素マネージャクラスに登録する。
・DBProcessor:このクラスは、APEフレームワークからOLTPトランザクションを呼び出すことに責任を持つ。タイムスタンプがセキュリティオーディタで指定された「endDateTime」よりも大きい時、このスレッドは、待機状態に入る。再開可能SA構成要素マネージャ442からの通知後、DBプロセッサ402は、APEフレームワークからトランザクションを呼び出すことを継続する。
・SummaryCorrelatorManager:サマリコリレータマネージャ450は、両方のキャッシュ(トランスおよびSQLサマリのキャッシュ)の情報を相関させるコリレータスレッドを作成し、管理する。コリレータスレッドが、タイムスタンプがセキュリティオーディタで指定された「endDateTime」よりも大きいSQLサマリを呼び出した後、このスレッドは、待機状態に入る。再開可能構成要素マネージャ442からの通知後、サマリコリレータマネージャ450は、相関アクティビティを継続するように、コリレータスレッドに通知する。
・SecurityAuditorReportManager:セキュリティオーディタレポートマネージャ460によって生成されるレポートは、受信されたトランザクションを監査するためにかかった時間を示す。再開可能構成要素マネージャ442からの通知時、セキュリティオーディタレポートマネージャ460は、時間の追跡を保存している変数を現在時間にリセットする。
・DBProcessor:このクラスは、APEフレームワークからOLTPトランザクションを呼び出すことに責任を持つ。タイムスタンプがセキュリティオーディタで指定された「endDateTime」よりも大きい時、このスレッドは、待機状態に入る。再開可能SA構成要素マネージャ442からの通知後、DBプロセッサ402は、APEフレームワークからトランザクションを呼び出すことを継続する。
・SummaryCorrelatorManager:サマリコリレータマネージャ450は、両方のキャッシュ(トランスおよびSQLサマリのキャッシュ)の情報を相関させるコリレータスレッドを作成し、管理する。コリレータスレッドが、タイムスタンプがセキュリティオーディタで指定された「endDateTime」よりも大きいSQLサマリを呼び出した後、このスレッドは、待機状態に入る。再開可能構成要素マネージャ442からの通知後、サマリコリレータマネージャ450は、相関アクティビティを継続するように、コリレータスレッドに通知する。
・SecurityAuditorReportManager:セキュリティオーディタレポートマネージャ460によって生成されるレポートは、受信されたトランザクションを監査するためにかかった時間を示す。再開可能構成要素マネージャ442からの通知時、セキュリティオーディタレポートマネージャ460は、時間の追跡を保存している変数を現在時間にリセットする。
本発明の実施形態は、現在監査されているトランザクションに関する統計データを保持する変数のリセットをトリガする、所定のイベントが発生する時、セキュリティオーディタの所定のコンポーネントに通知を提供する。再開可能な構成要素は、次のインターフェースを実装することによって、そのようなイベントが通知されるように、リセット可能構成要素マネージャ470を用いて自己を登録する。
public interface ResettableSAComponent {
/**
* Reset state in the component.
*/
public void reset ();
}
public interface ResettableSAComponent {
/**
* Reset state in the component.
*/
public void reset ();
}
セキュリティオーディタレポートマネージャ460は、レポートが生成された後、リセット可能な構成要素の状態をリセットするために、ResettableSAComponentManager.resetComponents()を起動する。リセット可能SA構成要素マネージャ470は、これによって、全ての登録された再開可能SA構成要素上でreset()メソッドを起動する。
セキュリティオーディタの中の次の構成要素は、ResettableSAComponentインターフェースを実装し、それら自体をシングルトンの再開可能SA構成要素マネージャクラスに登録する。
・SecurityΑuditor:セキュリティオーディタ400は、そのreset()メソッドの中で、新しいstartDateTimeが現在のendDateTimeになるように設定する。また、新しいstartDateTimeにレポートチャンク時間数を加えることによって、新しいendDateTimeを計算する。
・SOLSummaryCacheManager:SQLサマリキャッシュマネージャ430は、キャッシュに加えられたSQLサマリの合計数を保持する変数をキャッシュサイズに等しくなるようにリセットする。また、無効なSQLサマリキャッシュをクリアする。
・SummaryCorrelatorManager:サマリコリレータマネージャ450は、相関されたトランザクションの合計数がゼロになるようにリセットする。
・TransLogSummaryCacheManager:トランスログサマリキャッシュマネージャ428は、最後に処理されたトランザクションログサマリのタイムスタンプをヌルに設定する。また、キャッシュの中のトランザクションログサマリの数をゼロに設定する。
・ExceptionManager:例外マネージャ458は、全ての例外タイプに関連するカウントをゼロにリセットする。
・SecurityΑuditor:セキュリティオーディタ400は、そのreset()メソッドの中で、新しいstartDateTimeが現在のendDateTimeになるように設定する。また、新しいstartDateTimeにレポートチャンク時間数を加えることによって、新しいendDateTimeを計算する。
・SOLSummaryCacheManager:SQLサマリキャッシュマネージャ430は、キャッシュに加えられたSQLサマリの合計数を保持する変数をキャッシュサイズに等しくなるようにリセットする。また、無効なSQLサマリキャッシュをクリアする。
・SummaryCorrelatorManager:サマリコリレータマネージャ450は、相関されたトランザクションの合計数がゼロになるようにリセットする。
・TransLogSummaryCacheManager:トランスログサマリキャッシュマネージャ428は、最後に処理されたトランザクションログサマリのタイムスタンプをヌルに設定する。また、キャッシュの中のトランザクションログサマリの数をゼロに設定する。
・ExceptionManager:例外マネージャ458は、全ての例外タイプに関連するカウントをゼロにリセットする。
次のインターフェースを実装することによって、シャットダウンのイベントの際に何らかのクリーンアップ操作を実施することが必要な、セキュリティオーディタの中の構成要素。
public interface ShutDownListener {
public void shutDown ();
}
public interface ShutDownListener {
public void shutDown ();
}
セキュリティオーディタのshutDown()メソッドがJMXを介して起動されると、ShutDownManager.shutDown()メソッドを起動する。このメソッドを起動する前に、セキュリティオーディタは、最後に処理されたSQLサマリのタイムスタンプを「startdate.txt」ファイルに書き込む。このため、セキュリティオーディタが再び開始されると、どこで終了したかを認識する。次いで、シャットダウンマネージャは、全ての登録されたシャットダウンリスナクラス上で、shutdown()メソッドを起動する。
セキュリティオーディタの中の次の構成要素は、ShutDownListenerインターフェースを実装し、それら自体をシングルトンのシャットダウンマネージャクラスに登録する。
・DBProcessor:DBプロセッサ402は、DBプロセッサスレッド410クラスのスレッドプールをシャットダウンし、自己を中断する。
・SummaryCorrelatorManager:サマリコリレータマネージャ450は、サマリコリレータスレッドのスレッドプールをシャットダウンする。
・TransLogFilesPoller:このクラスは、「org.sadun.util.polling.DirectoryPoller」を拡張する。ディレクトリポーラは、入力トランザクションログファイルフォルダをポーリングするスレッドである。ディレクトリポーラクラスのshutdown()が起動される。
・TransLogFilesProcessor:トランスログファイルプロセッサ426は、トランスログファイルプロセッサスレッドクラスのスレッドプールをシャットダウンする。
・DBProcessor:DBプロセッサ402は、DBプロセッサスレッド410クラスのスレッドプールをシャットダウンし、自己を中断する。
・SummaryCorrelatorManager:サマリコリレータマネージャ450は、サマリコリレータスレッドのスレッドプールをシャットダウンする。
・TransLogFilesPoller:このクラスは、「org.sadun.util.polling.DirectoryPoller」を拡張する。ディレクトリポーラは、入力トランザクションログファイルフォルダをポーリングするスレッドである。ディレクトリポーラクラスのshutdown()が起動される。
・TransLogFilesProcessor:トランスログファイルプロセッサ426は、トランスログファイルプロセッサスレッドクラスのスレッドプールをシャットダウンする。
本発明の実施形態は、各レジストリ操作のための特定のプロファイルを提供する。プロファイルは、以下を含むが、これらに限定されない。
# ADD-DOMAIN = 2
# MOD-DOMAIN = 3
# DEL-DOMAIN = 4
# ADD-NAMESERVER = 5
# MOD-NAMESERVER = 6
# DEL-NAMESERVER = 7
# TRANSFER-DOMAIN = 11
# RENEW-DOMAIN = 12
# SESSION = 13
# QUIT = 14
# SYNC-DOMAIN = 75
# RESTORE-DOMAIN = 78
# RESTORE-REPORT = 79
# ADD-DOMAIN = 2
# MOD-DOMAIN = 3
# DEL-DOMAIN = 4
# ADD-NAMESERVER = 5
# MOD-NAMESERVER = 6
# DEL-NAMESERVER = 7
# TRANSFER-DOMAIN = 11
# RENEW-DOMAIN = 12
# SESSION = 13
# QUIT = 14
# SYNC-DOMAIN = 75
# RESTORE-DOMAIN = 78
# RESTORE-REPORT = 79
例えば、「login」EPPコマンドは、REGISTRYSESSIONおよびTRANSACTION表に挿入する。各レジストリ操作のためのプロファイルは、レジストリ操作に関するメタデータを捕捉する個別のXMLファイルに提供される。XMLファイルの中に検証情報を有することによって、本明細書に説明される実装は、プロファイルに存在する実際のメタデータから、検証を実施するためのコードを区別する。好ましくは、検証規則は、プロファイルの中に表現される。XMLに表現することが面倒な場合がある、発生することが少ない特定ケースの検証のためには、複雑な1回限りの検証を実施するために、Java(登録商標)フックを提供することができる。
全てのレジストリ操作のためのプロファイルを表現するために、XMLスキーマが作成されている。XMLBeanは、プロファイル内のデータをパースし、ナビゲーションするために使用される。プロファイルがパースされると、さらに、メタデータ情報を表現するために、クラスのフレームワークに変換される。これによって、本来のプロファイル情報が記憶されているフォーマット、またはさらに、保管場所に依存することから、アプリケーションを解放することになる。
レジストリ操作のためのプロファイルは、操作情報、データベース情報、および検証基準の3つのメタデータを含有する。図5は、本発明の実施形態に従い、レジストリ運用のためのメタデータを示す簡易図である。レジストリ操作プロファイルは、次のインターフェースによって表現される。
public interface RegistryOperationProfile extends Serializable {
Operationlnfo getOperationlnfo ();
DatabaseInfo getDatabaseInfo ();
Validator getValidator ();
}
public interface RegistryOperationProfile extends Serializable {
Operationlnfo getOperationlnfo ();
DatabaseInfo getDatabaseInfo ();
Validator getValidator ();
}
OperationInfo510は、レジストリ操作に関する情報を捕捉する。プロファイルは、operationIDに基づいて、キャッシュから呼び出すことができる。SQL文がパースされると、関連のプロファイルが、operationIDに基づいて呼び出される(すなわち、Transaction表への挿入は、レジストリ操作のoperationIDを有する)。図6は、本発明の実施形態に従い、OperationInfoのメタデータを示す簡易図である。
OperationInfoメタデータの例は、次の通りである。
<operationInfo>
<operationID transLogEntryExists="true">2</operationID>
<operationName>ADD-DOMAIN</operationName>
<conceptClassName>RegisterDomainOp</conceptClassName>
</operationInfo>
<operationInfo>
<operationID transLogEntryExists="true">2</operationID>
<operationName>ADD-DOMAIN</operationName>
<conceptClassName>RegisterDomainOp</conceptClassName>
</operationInfo>
図7は、本発明の実施形態に従い、DatabaseInfoのメタデータを示す簡易図である。DatabaseInfo520は、レジストリ操作に関与する表全てを捕捉する。表は、任意選択または必須とすることができる。加えて、「depends」属性は、表の操作が、それが依存する表の操作もまたトランザクションの一部である場合かつその場合に限り、必須であることを指定する。例として、ドメインの追加操作の場合、DOMAINNAMESERVERLINKは、DOMAIN表に依存する。このため、DOMAIN表の操作もまたトランザクションの一部でない限り、DOMAINNAMESERVERLINK表で対応する操作は求められない。
「dbOperation」710は、それが表での「挿入(insert)、更新(update)、または削除(delete)」操作であったかどうかを指定する。「min/max」属性は、表での指定された操作の最高数および最低数を指定する。「column」要素720は、関連のSQL文からパースし、キャッシュする対象の列を指定する。例として、SQL文には10の列が存在する可能性があるが、値がキャッシュされるのは、2つの列だけの場合がある。
本発明の実施形態に従い、制約条件は列上に指定することができる。column要素720の以下の属性は、制約条件を指定する。
・minLength−この列の最低長
・maxLength−この列の最高長
・minValue−この列の最低「整数」値
・maxValue−この列の最高「整数」値
・allowedValues−この列に可能な値のカンマ区切りリスト
・disAllowedValues−この列に不可能な値のカンマ区切りリスト
・minLength−この列の最低長
・maxLength−この列の最高長
・minValue−この列の最低「整数」値
・maxValue−この列の最高「整数」値
・allowedValues−この列に可能な値のカンマ区切りリスト
・disAllowedValues−この列に不可能な値のカンマ区切りリスト
mutuallyExclusive表要素730は、この操作の一部として相互に排他的である、表の操作を指定する。
ドメイン追加プロファイルの論理フローの例として、以下の抜粋は、ドメイン名が追加されるトランザクションに関連する、ADD−DOMAINプロファイルの例である。
<databaseInfo>
<table name="DOMAIN" optional="false" depends="TRANSACTION">
<dbOperation max="1" min="1">insert</dbOperation>
<column>DOMAINID</column>
<column minLength="7" maxLength="67">DOMAINNAME</column>
<column minValue="1" maxValue="10">REGISTRATIONPERIOD</column>
<column>REGISTRATIONEXPIRATIONDATE</column>
<column>TRANSACTIONID</column>
<column minLength="3" maxLength="32" >AUTHINFO</column>
<column>CREATEDDATE</column>
<column allowedValues="3,14" >ENCODINGTYPEID</column>
<column>PARENTDOMAIN</column>
<column allowedValues="Y">ZONEINSERTION</column>
</table>
</databaseInfo>
<databaseInfo>
<table name="DOMAIN" optional="false" depends="TRANSACTION">
<dbOperation max="1" min="1">insert</dbOperation>
<column>DOMAINID</column>
<column minLength="7" maxLength="67">DOMAINNAME</column>
<column minValue="1" maxValue="10">REGISTRATIONPERIOD</column>
<column>REGISTRATIONEXPIRATIONDATE</column>
<column>TRANSACTIONID</column>
<column minLength="3" maxLength="32" >AUTHINFO</column>
<column>CREATEDDATE</column>
<column allowedValues="3,14" >ENCODINGTYPEID</column>
<column>PARENTDOMAIN</column>
<column allowedValues="Y">ZONEINSERTION</column>
</table>
</databaseInfo>
この抜粋のXMLは、REGISTRATIONPERIODの最低値が「1」であり、最高値が「10」であることを指定する。同様に、DOMAINNAME列の最低長は、「7」であり、最高長は、「67」である。ENCODINGTYPEIDの可能な値は、「3または14」である。他の値は、他の特定の実装で利用され、これらの値は、例として提供されているに過ぎない。
ドメイン名を削除するためのプロファイルを示すために、以下の抜粋は、DEL−DOMMAINプロファイルのために提供される。
<mutuallyExclusive>
<table name="DOMAIN" dbOperation="update"/>
<table name="DOMAIN" dbOperation="delete"/>
</mutuallyExclusive>
<mutuallyExclusive>
<table name="DOMAIN" dbOperation="update"/>
<table name="DOMAIN" dbOperation="delete"/>
</mutuallyExclusive>
ドメイン削除操作が猶予期間内のドメイン上で発生すると、DOMAIN表のDELETEのSQL文がアプリケーションによって発行される。一方、ドメイン削除操作が猶予期間後のドメイン上で発生すると、DOMAIN表のUPDATEのSQL文がアプリケーションによって発行される。ドメインは、猶予期間内にあるか、ないかのいずれかであり得るため、これらのSQL文の両方は、同じトランザクションの一部となることはできない。このため、これらの操作は相互に排他的であり、両方の操作の使用は、未承認のトランザクションとして警告が与えられる。
図8は、本発明の実施形態に従い、検証基準を示す簡易図である。「ValidationCriterion」は、SQL文および/またはトランザクションログエントリに適用される検証規則を捕捉する。検証基準は、トランザクションログベースの検証またはデータベースに関する検証のいずれかである規則のシーケンスとして定義される。全ての検証規則は、検証規則が無視されるべきかどうかを指定する、「ignore」属性を有する。これによって、検証を選択的に無効にする能力を与える。図8に示されるように、3つの種類の検証規則が存在する。
・トランスログ検証:トランザクションログのデータをデータベースのデータと検証する。
・データベース検証:全てのビジネス規則が適切に徹底されていること、およびデータが顧客の意図どおりに持続されていることを確実にするように、データベースのデータを検証する。
・カスタム検証:XMLで表現するには面倒すぎる複雑な検証規則は、コードに実装することができる。
・トランスログ検証:トランザクションログのデータをデータベースのデータと検証する。
・データベース検証:全てのビジネス規則が適切に徹底されていること、およびデータが顧客の意図どおりに持続されていることを確実にするように、データベースのデータを検証する。
・カスタム検証:XMLで表現するには面倒すぎる複雑な検証規則は、コードに実装することができる。
トランザクションログ検証
この要素は、トランザクションログエントリ検証に関するメタデータを捕捉する。図9は、本発明の実施形態に従い、トランザクションログ検証を示す簡易図である。トランザクションログエントリの値は、SQLサマリの値に一致する。実施形態において、名前によって特定されるトランザクションログエントリの値は、指定されたデータベース操作を有する表の中の列値の値に等しくなければならない。「ignoreCase」属性は、値の比較が大文字小文字を区別するかしないかを指定する。
トランザクションログエントリのコンビネーションが、データベース列の単一値に一致するように連結されなければならない場合は、「transLogEntryParams」要素によって指定されたトランザクションログエントリパラメータは、指定された区切り文字を使用して連結される。得られる値は、次いで、データベース列の値と比較される。
図9および他の図面に示されるknownIssue属性は、検証規則に不合格であった場合に警告を発するかどうかを指定する。属性knownIssueは、いくつかの異なる検証規則で有効または無効とすることができる。属性knownIssue=“true”である場合、データに指定された検証規則を適用する間に検証エラーが発生した場合、警告は発せられない。このように、この属性は、システムで特定された問題には警告を無効にするが、修正がまだ実装されていない問題には無効にしない能力を運用者に与える。システムが検証規則を守るように更新された場合、属性knownIssue=“false”を設定することができる。このように、knownIssue属性を利用することによって、報告されるエラーに関して、システムの不要な情報を削減することができる。
トランザクションログ検証の例として、以下の例は、ADD−DOMAIN操作に適用可能である。
<transLogValidation ignore="false">
<tableName>DOMAIN</tableName>
<dbOperation max="1" min="1">insert</dbOperation>
<columnName>DOMAINNAME</columnName>
<transLogEntryParam name="dm" ignoreCase="true"/>
<isDate>false</isDate>
</transLogValidation>
<transLogValidation ignore="false">
<tableName>DOMAIN</tableName>
<dbOperation max="1" min="1">insert</dbOperation>
<columnName>DOMAINNAME</columnName>
<transLogEntryParam name="dm" ignoreCase="true"/>
<isDate>false</isDate>
</transLogValidation>
この例において、name=‘dm’のトランザクションログエントリによって指定された値は、データベースのDOMAIN.DOMAINNAME列の値に対して、大文字小文字を区別せずに比較される。
データベース検証
データベースリーダから呼び出されたSQL文が、メモリデータ構造にパースされると、関連のプロファイルで指定されたデータベース検証規則が適用される。このため、プロファイルに一致しないあらゆるSQL文は、プロセスの早期に警告が与えられる。
図10は、本発明の実施形態に従い、データベース検証規則を示す簡易図である。以下の説明は、図10に示されるデータベース検証規則に関する追加情報を提供する。
参照検証
図11は、本発明の実施形態に従い、参照検証を示す簡易図である。参照検証は、マスタ表の中の列の値をこれらの表の間の参照整合性によって結合される子の表の中の列の値と比較する。指定のトランザクションのSQL文がパースされた後、プロファイルに指定された参照検証が実施される。一実施形態において、以下のようになる。
[MasterTable.MasterColumn]==[ChildTable.ChildColumn]
[MasterTable.MasterColumn]==[ChildTable.ChildColumn]
操作は、任意の数の参照検証規則を有することができる。任意選択的に、子の列の値と比較される前に、正規表現がマスタ列に適用される場合がある。
参照検証の例として、ADD−DOMAINプロファイルからの以下の例が提供される。
<referentialValidation>
<masterTable name="DOMAIN">
<dbOperation max="1" min="1">insert</dbOperation>
<masterColumn>DOM AINN AME</masterColumn>
</masterTable>
<regexOnMasterColumn>
<regularExpression>(.*?)(COM|NET|EDU|ARPA)$</regularExpression>
<group>2</group>
</regexOnMasterColumn>
<childTable name="DOMAIN">
<dbOperation max="1" min="1">insert</dbOperation>
<column>PARENTDOMAIN</column>
</childTable>
</referentialValidation>
<referentialValidation>
<masterTable name="DOMAIN">
<dbOperation max="1" min="1">insert</dbOperation>
<masterColumn>DOM AINN AME</masterColumn>
</masterTable>
<regexOnMasterColumn>
<regularExpression>(.*?)(COM|NET|EDU|ARPA)$</regularExpression>
<group>2</group>
</regexOnMasterColumn>
<childTable name="DOMAIN">
<dbOperation max="1" min="1">insert</dbOperation>
<column>PARENTDOMAIN</column>
</childTable>
</referentialValidation>
上記の検証規則は、指定された正規表現が、データベースのDOMAIN.DOMAINNAME列の値に適用されることを指定する。次に、得られる値は、データベースのDOMAIN.PARENTDOMAIN列に等しくなければならない。このように、この規則は、DOMAIN表に挿入された全てのドメインが、COM/NET/EDU/ARPAで終了しなければならず、対応するTLDは、PARENTDOMAIN列の値に一致しなければならないことを指定する。
ルックアップ検証
ルックアップ検証は、ルックアップ表の値に基づいて、列に挿入された値が正しい値であることを確実にするために実施される。図12は、本発明の実施形態に従い、ルックアップ検証を示す簡易図である。図12に示されるように、tableName.columNameの値は、プロファイルの指定されたSQL文を実行することによって返された値に等しくなければならない。この検証規則は、本発明のいくつかの実施形態において任意選択である。
正規表現検証
図13は、本発明の実施形態に従い、正規表現検証を示す簡易図である。正規表現検証は、一定の業務論理条件が満たされていることを確実にするために実施される。指定された表.列の値は、所定の正規表現に一致しなければならない。加えて、正規表現に一致する、指定されたグループを呼び出すことができる。正規表現検証は、単独で実行することができる、または他の規則(例えば、以下に詳細を説明する、ExistsInTables検証規則)と組み合わせることができる。
条件付き検証
図14は、本発明の実施形態に従い、条件付き検証を示す簡易図である。条件付き検証は、データベースの一定の列に挿入される値が、条件に指定されるように正確に一致することを確実にする。条件付き検証は、単独で実行することができる、または他の規則(例えば、以下に詳細を説明する、ExistsInTables検証規則)と組み合わせることができる。
条件付き検証の例として、ADD−DOMAINプロファイルからの以下の例が提供される。
<conditionalValidation>
<tableName>TRANSACTIONATTRIBUTES</tableName>
<dbOperation max="100" min="1">insert</dbOperation>
<column value="DomainName" name="ATTRIBUTE"></column>
<column value="RegistrationPeriod" name="ATTRIBUTE"</column>
<column value=" Authinfo" name=" ATTRIBUTE"></column>
</conditionalValidation>
<conditionalValidation>
<tableName>TRANSACTIONATTRIBUTES</tableName>
<dbOperation max="100" min="1">insert</dbOperation>
<column value="DomainName" name="ATTRIBUTE"></column>
<column value="RegistrationPeriod" name="ATTRIBUTE"</column>
<column value=" Authinfo" name=" ATTRIBUTE"></column>
</conditionalValidation>
上記の例は、「DomainName」、「RegistrationPeriod」等の指定された列の値全てが、TRANSACTIONATTRIBUTES.ATTRIBUTE列に挿入されていなければならないことを指定する。
表内存在検証
図15は、本発明の実施形態に従い、表内存在検証を示す簡易図である。この検証は、一定の業務論理条件が満たされていることを確実にするために実施される。例えば、一定の条件が満たされる場合、指定された数の操作およびタイプのSQL文が、操作の一部として発生することになる。
図13および14を参照すると、規則に指定されたregexValidationまたはconditionalValidationのいずれかが満たされる場合、指定された表の操作はまた、操作の一部でなければならない。
正規表現検証を使用する表内存在の例として、ADD−DOMAINプロファイルからの以下の例が提供される。
<existsInTableValidation>
<table name="INTERNATIONALDOMAIN" dbOperation="insert"/>
<regexValidation>
<tableName>DOMAIN</tableName>
<dbOperation max="1" min="1">insert</dbOperation>
<columnName>DOMAINNAME</columnName>
<regex>
<regularExpression>^XN-- .*</regularExpression>
</regex>
</regexValidation>
</existsInTableValidation>
<existsInTableValidation>
<table name="INTERNATIONALDOMAIN" dbOperation="insert"/>
<regexValidation>
<tableName>DOMAIN</tableName>
<dbOperation max="1" min="1">insert</dbOperation>
<columnName>DOMAINNAME</columnName>
<regex>
<regularExpression>^XN-- .*</regularExpression>
</regex>
</regexValidation>
</existsInTableValidation>
上記の例は、DOMAIN.DOMAINNAME列の値が、正規表現「^XN−−.*」に一致する場合、INTERNATIONALDOMAIN表への挿入操作も存在しなければならないことを記述している。
条件付き検証を使用する表内存在検証の例は、次の通りである。
<!-- TRANSFER APPROVE conditional validation-->
<existsInTableValidation>
<table name="DOMAINPENDINGTRANSFER" dbOperation="delete"/>
<table name="DOMAINPENDINGTRANSFERAUDIT" dbOperation="insert"/>
<table name="DOMAINTRANSFER" dbOperation="insert">
<table name="EMAILQUEUE" dbOρeration="insert"/>
<conditionalValidation>
<tableName>TRANSACTIONATTRIBUTES</tableName>
<dbOperation max="100" min="1">insert</dbOperation>
<column value="Directive" name="ATTRIBUTE"/>
<column value="1" name=" ATTRIBUTEVALUE"/>
</conditionalValidation>
</existsInTableValidation>
<!-- TRANSFER APPROVE conditional validation-->
<existsInTableValidation>
<table name="DOMAINPENDINGTRANSFER" dbOperation="delete"/>
<table name="DOMAINPENDINGTRANSFERAUDIT" dbOperation="insert"/>
<table name="DOMAINTRANSFER" dbOperation="insert">
<table name="EMAILQUEUE" dbOρeration="insert"/>
<conditionalValidation>
<tableName>TRANSACTIONATTRIBUTES</tableName>
<dbOperation max="100" min="1">insert</dbOperation>
<column value="Directive" name="ATTRIBUTE"/>
<column value="1" name=" ATTRIBUTEVALUE"/>
</conditionalValidation>
</existsInTableValidation>
上記の条件は、TRANSACTIONATTRIBUTES.ATTRIBUTE列に挿入された値が、「Directive」に等しく、かつ、ATTRIBUTEVALUE列に挿入された値が「1」である場合、以下のSQL操作も発生しなければならないことを規定する。
・DOMAINPENDINGTRANSFER表の「delete」操作
・DOMAINPENDINGTRANSFERAUDIT表の「insert」操作
・DOMAINTRANSFER表の「insert」操作
・EMAILQUEUE表の「insert」操作
・DOMAINPENDINGTRANSFER表の「delete」操作
・DOMAINPENDINGTRANSFERAUDIT表の「insert」操作
・DOMAINTRANSFER表の「insert」操作
・EMAILQUEUE表の「insert」操作
日付検証
図16は、本発明の実施形態に従い、日付検証を示す簡易図である。図16を参照すると、「condition」要素によって指定される該当条件を適用した後、firstTable.columnの日付値が、secondTable.columnの値と比較される。属性「truncateTime」は、日付値の時間部分が比較のために使用されなければならないかどうかを示すブール値である。「javaCalendarConstant」は、java.util.Calendarクラスの整数定数に指定されるように更新される日付のフィールドの値を参照する。列の日付に適用される値は、「value」要素によって指定されるような固定「値」とすることができるか、または値は、別の表の別の日付列(例えば、DOMAIN表のREGISTRATIONPERIOD)の値とすることができる。
日付検証の例として、ADD−DOMAINプロファイルから以下の例が提供される。
<dateValidation>
<firstTable dbOρeration="insert" name="DOMAIN">
<column>CREATEDDATE</column>
<condition javaCalendarConstant="1" truncateTime="true">
<value>10</value>
</condition>
</firstTable>
<secondTable dbOperation="insert" name="DOMAIN">
<column>REGISTRATIONEXPIRATIONDATE</column>
<condition truncateTime="true"/>
</secondTable>
</dateValidation>
<dateValidation>
<firstTable dbOρeration="insert" name="DOMAIN">
<column>CREATEDDATE</column>
<condition javaCalendarConstant="1" truncateTime="true">
<value>10</value>
</condition>
</firstTable>
<secondTable dbOperation="insert" name="DOMAIN">
<column>REGISTRATIONEXPIRATIONDATE</column>
<condition truncateTime="true"/>
</secondTable>
</dateValidation>
上記の例において、REGISTRATIONEXPIRATIONDATE値が、ドメインのCREATEDDATEから10年を超えないことを確実にしている。この検証で発生する操作のシーケンスは次の通りである。
・DOMAIN.CREATEDDATEの値がパースされて、Java.util.Calendarオブジェクトを作成する。
・truncateTimeがtrueに設定されているので、日付の時間部分が切り捨てられる。
・javaCalendarConstantの「1」は、日付の「YEAR」構成要素を指定する。
・次いで、値「10」が日付の「YEAR」構成要素に適用され、CREATEDDATEから10年の日付オブジェクトを有効に作成する。
・同様に、REGISTRATIONEXPIRATIONDATEが作成される。
・最後に、REGISTRATIONEXPIRATIONDATE<=CREATEDDATEの値から新しく作成された日付オブジェクト、であることを確実にするために、確認が行われる。
・DOMAIN.CREATEDDATEの値がパースされて、Java.util.Calendarオブジェクトを作成する。
・truncateTimeがtrueに設定されているので、日付の時間部分が切り捨てられる。
・javaCalendarConstantの「1」は、日付の「YEAR」構成要素を指定する。
・次いで、値「10」が日付の「YEAR」構成要素に適用され、CREATEDDATEから10年の日付オブジェクトを有効に作成する。
・同様に、REGISTRATIONEXPIRATIONDATEが作成される。
・最後に、REGISTRATIONEXPIRATIONDATE<=CREATEDDATEの値から新しく作成された日付オブジェクト、であることを確実にするために、確認が行われる。
カスタム検証
XMLで表現することが面倒すぎる所定の複雑な検証規則は、コードのカスタム検証を介して実行される。図17は、本発明の実施形態に従い、カスタム検証を示す簡易図である。SYNC−DOMAIN操作のカスタム検証の例を以下に示す。
<customValidation ignore="false"
ruleName="SYNC-DOMAIN: Registration Expiration date validation rule">
<dbData>
<table>
<tableName>DOMAIN</tableName>
<dbOperation max="1" min="1">UPDATE</dbOperation>
<columnName>REGISTRATIONEXPIRATIONDATE</columnName>
</table>
</dbData>
<transLogData>
<transLogEntryParam name="syncDt" ignoreCase="true"/>
</transLogData>
<javaClassName>com.verisign.sa.custom.validation.syncdomain.SyncDomainExpirationDate
</javaClassName>
</customValidation>
<customValidation ignore="false"
ruleName="SYNC-DOMAIN: Registration Expiration date validation rule">
<dbData>
<table>
<tableName>DOMAIN</tableName>
<dbOperation max="1" min="1">UPDATE</dbOperation>
<columnName>REGISTRATIONEXPIRATIONDATE</columnName>
</table>
</dbData>
<transLogData>
<transLogEntryParam name="syncDt" ignoreCase="true"/>
</transLogData>
<javaClassName>com.verisign.sa.custom.validation.syncdomain.SyncDomainExpirationDate
</javaClassName>
</customValidation>
登録有効期限日に関する検証は全て、SyncDomainExpirationDateのjavaクラスで実施される。検証のうちのいくつかは次の通りである。
・ドメインは、2月29日には同期できない。
・DOMAIN.REGISTRATIONEXPIRATIONDATEの値は、トランザクションログファイルに書き込まれた「syncDt」パラメータに基づいて正しく計算される。
・ドメインは、2月29日には同期できない。
・DOMAIN.REGISTRATIONEXPIRATIONDATEの値は、トランザクションログファイルに書き込まれた「syncDt」パラメータに基づいて正しく計算される。
カスタム検証クラスは全て、Java(登録商標) Reflection APIを使用して予めインスタンス化され、CustomValidationCacheManagerでキャッシュされる。カスタム検証をサポートする全てのクラスは、次のインターフェースを実装しなければならない。
public interface CustomValidation {
public void validate (CustomValidator aCustomValidator,
SQLSummary aSQLSummary, TransLogSummary aTransLogSummary)
throws CustomValidationException;
}
public interface CustomValidation {
public void validate (CustomValidator aCustomValidator,
SQLSummary aSQLSummary, TransLogSummary aTransLogSummary)
throws CustomValidationException;
}
図18は、本発明の実施形態に従い、ドメイン追加操作の工程フローを示す簡略化された流れ図である。トランザクションおよびトランザクション属性が挿入される(1810および1812)。ドメインおよびドメイン監査が挿入される(1814および1816)。EPPドメインステータスおよびEPPドメインステータス監査が挿入される(1818および1820)。ドメイン名が国際化ドメイン名である場合(1822)、国際化ドメイン名のための工程が利用される。国際化ドメイン名のプロセスは、国際化ドメインおよび国際化ドメイン監査を挿入すること(1824および1826)を含む。加えて、文字バリアントおよび文字バリアント監査が、特定の外国語のために挿入される(1828および1830)。国際化ドメイン名プロセスの一部として、ドメイン文字バリアントリンクおよびドメイン文字バリアントリンク監査が挿入される(1832および1834)。国際化ドメイン名プロセスが完了した後、トランザクションが更新される(1850)。
ドメイン名が国際化ドメイン名ではない場合(1822)、ネームサーバがリンクされているかどうかの判定が行われる(1840)。ネームサーバがリンクされている場合、ドメインネームサーバリンクおよびドメインネームサーバリンク監査が挿入される(1842および1844)。ドメインネームサーバリンクおよびドメインネームサーバリンク監査が挿入された後、トランザクションが更新される(1850)。ネームサーバがリンクされていない場合、トランザクションが更新される(1850)。
図18に図示される特定のステップは、本発明の実施形態に従い、ドメイン追加操作を実施する特定の方法を提供することを理解されたい。代替の実施形態に従い、ステップの他のシーケンスを実施することもできる。例えば、本発明の代替実施形態は、上記に示したステップを異なる順序で実施する場合がある。さらに、図18に図示される個別のステップは、個別のステップに適した多様なシーケンスで実施される場合がある、複数のサブステップを含む場合がある。さらにまた、特定のアプリケーションに応じて、さらなるステップが追加または削除される場合がある。当業者は、多数の変形、変更、および代替を認識するであろう。
トランザクションログファイルに対応するトランザクションログエントリがないデータベースに発生する、有効なデータベーストランザクションが存在する。発明人は、対応するトランザクションログエントリのない43の有効なデータベーストランザクションを特定した。これらの43のデータベーストランザクションのためのプロファイルが作成された。
トランザクションログエントリのないプロファイルの例を以下に示す。
<?xml version="1.0" encoding="UTF-8"?>
<RegistryOperationProfile xmlns="xml.profile.sa.verisign.com">
<registryOperation>
<operationInfo>
<operationID transLogEntryExists="false">-1</operationID>
<operationName>KNOWN ISSUE</operationName>
<conceptClassName>KNOWN ISSUE</conceptClassName>
</operationInfo>
<databaseInfo>
<table name="TRANSACTION" optional="false">
<dbOperation max="1" min="1">UPDATE</dbOρeration>
<column>FILEID</column>
</table>
</databaseInfo>
</registryOperation>
</RegistryOperationProfile>
<?xml version="1.0" encoding="UTF-8"?>
<RegistryOperationProfile xmlns="xml.profile.sa.verisign.com">
<registryOperation>
<operationInfo>
<operationID transLogEntryExists="false">-1</operationID>
<operationName>KNOWN ISSUE</operationName>
<conceptClassName>KNOWN ISSUE</conceptClassName>
</operationInfo>
<databaseInfo>
<table name="TRANSACTION" optional="false">
<dbOperation max="1" min="1">UPDATE</dbOρeration>
<column>FILEID</column>
</table>
</databaseInfo>
</registryOperation>
</RegistryOperationProfile>
上記のプロファイルは、次のことを記述する。「UPDATE TRANSACTION SET FILEID=<何らかの値>」等のSQL文がトランザクションでそれだけで発生すると、それは、operationIDおよびconceptClassNameタグによって指定されるKNOWN ISSUE(既知の問題)である。プロファイルの中で指定された列が更新される時のみ、SQL文は既知の問題として指定される。例えば、FILEID以外の別の列がTRANSACTION表で更新される場合、これは、悪意のあるデータベーストランザクションと見なされる。
ProfileManagerがトランザクションログエントリのないプロファイルをロードする時、キーは、<TableName1.OperationType(<column1,column2,...),TableName2.OperationType(<column1,column2,...)....>の形式で生成される。
例えば、上記のプロファイルのSQL文に生成されたキーは、TRANSACTION.UPDATE(FILEID)となる。このキーは、次に、メモリに関連プロファイルをキャッシュするために使用される。データベーストランザクション毎に、関連するOPERATIONID列の値は、SQL文「INSERT INTO TRANSACTION」表から呼び出される。「INSERT INTO TRANSACTION」表のSQL文を含有しないデータベーストランザクションが呼び出されると、キーが上記の形式で生成される。このキーを使用して、次いで、関連のプロファイルがProfileManagerから呼び出される。プロファイルの<operationName>タグの値が「KNOWN ISSUE」である場合、これは、有効なデータベーストランザクションと見なされる。生成されたキーでプロファイルが呼び出されない場合、または<operationName>タグの値が「KNOWN ISSUE」に等しくない場合、これは、悪意のあるデータベーストランザクションと見なされる。
本発明の実施形態は、プロファイルに指定された検証全てを実施するために必要な情報を全て有するサマリを提供する。データベースリーダまたはアプリケーショントランザクションログのいずれかから呼び出された情報全ては、メモリにサマリとして保存される。2つのタイプのサマリが存在する。
・SQLSummary−データベースリーダからのパースされた関連情報を含有する。データベースの各トランザクションは、1つのSQLSummaryとして表現される。
・TransLogSummary−トランザクションログからのパースされた関連情報を含有する。トランザクションログの各行は、1つの個別のTransLogSummaryである。
・SQLSummary−データベースリーダからのパースされた関連情報を含有する。データベースの各トランザクションは、1つのSQLSummaryとして表現される。
・TransLogSummary−トランザクションログからのパースされた関連情報を含有する。トランザクションログの各行は、1つの個別のTransLogSummaryである。
本発明の実施形態は、監査可能なサマリを提供する。SQLおよびトランザクションログの両方のサマリは、AuditableSummaryを拡張する。AuditableSummaryは、サマリ両方で共通な操作を指定する。トランザクションログファイルまたはデータベースのいずれかから呼び出された最大のSCNと比較される時、サマリキャッシュエントリの有効期限が切れたかどうかを発見するために、「hasExpired()」メソッドが起動される。
public interface AuditableSummary extends Serializable {
Date getCreationDate ();
boolean hasExpired ();
String getTransactionId ();
long getSCN ();
}
public interface AuditableSummary extends Serializable {
Date getCreationDate ();
boolean hasExpired ();
String getTransactionId ();
long getSCN ();
}
hasExpired()メソッドは、指定期間内に検証できなかったサマリがエラーと見なされることを確実にする。全てのサマリはメモリに持続されるので、この安全策は、メモリの中のサマリ数に上限が存在することを確実にする。
本発明の実施形態は、トランザクション境界内に含有されるSQL文を成功してパースし、検証した成果物である、SQLサマリを提供する。SQLサマリの中心原則は、データベースリーダが実施形態で利用されているかどうかに関わらず、SRSレジストリのトランザクションを検証するために有用であろうインターフェースを公開することである。
public interface SQLSummary extends AuditableSummary {
int getOperationId ();
RegistryOperationProfile getRegistryOperationProfile ();
List<String> getColumnValues (String tableName, String operationType, String column, boolean aNewVal );
}
public interface SQLSummary extends AuditableSummary {
int getOperationId ();
RegistryOperationProfile getRegistryOperationProfile ();
List<String> getColumnValues (String tableName, String operationType, String column, boolean aNewVal );
}
各SQLSummaryインスタンスは、レジストリプロファイルに関連し、SQL文の集合体を含有する。SQLStatementは、パースされたSQL文から関連情報を捕捉するためのインターフェースの全体的な階層構造の親のインターフェースである。具体的には、SQLStatementのサブクラスは、「INSERT/UPDATE/DELETE」のSQL文の中の情報を表現するために使用される。SQLサマリは、java.util.LinkedBlockingQueueでキャッシュされる。
トランザクションログサマリ
トランスログサマリは、トランザクションログエントリを成功してパースした最終結果である。トランスログサマリは、トランザクションID別にキーされてキャッシュされる。SQLサマリキャッシュからコリレータによって呼び出される各SQLサマリに対して、対応するトランスログサマリは、トランザクションIDを使用してトランスログサマリキャッシュから呼び出される。SQLサマリに関連するレジストリプロファイルは、次いで、トランザクションログ検証規則をSQLサマリおよびトランザクションログサマリに適用するために使用される。
public interface TransLogSummary extends AuditableSummary {
void setCreationDate ( Date date );
void setSCN ( long aSCN );
String getSessionId ();
void setSessionId ( String sessionId );
void addMetadata ( String aValue );
String getMetadataAtPosition (int aPosition );
void addTransLogParam ( TransLogParam aParam );
TransLogParam getTransLogParamByName ( String aParamName );
String getConceptClassName ();
void setConceptClassName ( String aConceptClassName );
Collection<TransLogParam> getParams ();
}
public interface TransLogSummary extends AuditableSummary {
void setCreationDate ( Date date );
void setSCN ( long aSCN );
String getSessionId ();
void setSessionId ( String sessionId );
void addMetadata ( String aValue );
String getMetadataAtPosition (int aPosition );
void addTransLogParam ( TransLogParam aParam );
TransLogParam getTransLogParamByName ( String aParamName );
String getConceptClassName ();
void setConceptClassName ( String aConceptClassName );
Collection<TransLogParam> getParams ();
}
コリレータ
コリレータスレッドは、SQLサマリのデータをトランザクションログサマリのデータと相関させる重要な操作を実施する。SQLサマリは、java.util.BlockingLinkedQueueでキャッシュされる。トランザクションログサマリは、java.util.HashMap<TransactionID,TransLogSummary>でキャッシュされる。
スタートアップ時、サマリコリレータ450は、特定の数のコリレータスレッドをインスタンス化する。コリレータスレッドで、次のシーケンスの操作が発生する。
・コリレータスレッドは、SQLサマリキャッシュおよびトランザクションログサマリキャッシュからのデータの相関を開始するよう通知されることを待機する。
・SQLサマリキャッシュから、SQLサマリが呼び出される。
・SQLサマリのトランザクションIDを使用して、トランザクションログサマリキャッシュから、対応するトランザクションログサマリが呼び出されようとする。
・次の2つの条件のうち1つが発生する。
o対応するトランザクションログサマリが呼び出される。
o対応するトランザクションログをトランザクションログサマリから呼び出すことができない。
■この場合、SQLサマリの作成タイムスタンプに基づいて、SQLサマリの有効期限が切れていない場合、SQLサマリはSQLサマリキャッシュに戻される。
■SQLサマリの有効期限が切れている場合、エラーとしてログに記録され、キャッシュの中の次のSQLサマリの処理を続行する。
・対応するトランザクションログサマリが呼び出されると、トランザクションサマリおよびSQLサマリに対して、プロファイルに指定された全てのトランザクションログ検証規則が適用される。相関に成功したサマリの数が増分される。
・任意の検証エラーがログに記録される。
・コリレータスレッドは、SQLサマリキャッシュおよびトランザクションログサマリキャッシュからのデータの相関を開始するよう通知されることを待機する。
・SQLサマリキャッシュから、SQLサマリが呼び出される。
・SQLサマリのトランザクションIDを使用して、トランザクションログサマリキャッシュから、対応するトランザクションログサマリが呼び出されようとする。
・次の2つの条件のうち1つが発生する。
o対応するトランザクションログサマリが呼び出される。
o対応するトランザクションログをトランザクションログサマリから呼び出すことができない。
■この場合、SQLサマリの作成タイムスタンプに基づいて、SQLサマリの有効期限が切れていない場合、SQLサマリはSQLサマリキャッシュに戻される。
■SQLサマリの有効期限が切れている場合、エラーとしてログに記録され、キャッシュの中の次のSQLサマリの処理を続行する。
・対応するトランザクションログサマリが呼び出されると、トランザクションサマリおよびSQLサマリに対して、プロファイルに指定された全てのトランザクションログ検証規則が適用される。相関に成功したサマリの数が増分される。
・任意の検証エラーがログに記録される。
APEフレームワーク統合
前述のように、セキュリティオーディタは、APEフレームワークと統合される。APEフレームワークは、OLTPトランザクションデータの発生源の詳細を公開しない。このため、セキュリティオーディタに関する限り、それはAPEフレームワークのメモリ内キューからOLTPトランザクションデータを呼び出すだけである。APEフレームワークは、Springコンテキストを介して、SecurityAuditorFacadeをインスタンス化する。Spring構成ファイル「HostedComponent−config.xml」は、SecurityAuditorの中に含まれる。
<?xml version= "1.0" encoding = "UTF-8"?>
<beans xmlns= http://www.springframework.org/schema/beans
xmlns : xsi =http://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean name= "hostedComponent"
class="com.verisign.sa.engine.SecurityAuditorFacade">
<!-- defined in AsyncProcAdapter-conf.xml -->
<property name = "frameworkFacade" ref= "frameworkFacade"> </property>
</bean>
</beans>
<?xml version= "1.0" encoding = "UTF-8"?>
<beans xmlns= http://www.springframework.org/schema/beans
xmlns : xsi =http://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean name= "hostedComponent"
class="com.verisign.sa.engine.SecurityAuditorFacade">
<!-- defined in AsyncProcAdapter-conf.xml -->
<property name = "frameworkFacade" ref= "frameworkFacade"> </property>
</bean>
</beans>
APEフレームワークのAsyncProcessingEngineは、データベースリーダから呼び出されることが必要なOLTPトランザクションデータの開始日時を判定するために、SecurityAuditorDateRangeクラスを起動する。SecurityAuditorDateRangeクラスは、この情報を「startdate.txt」ファイルに書き込む。データベースリーダプロセスは、この開始日時を渡すことによって、開始される。データベースリーダプロセスのための構成ファイルにおいて、Java(登録商標)ユーザ終了クラスはAsyncProcessingEngineクラスであるように設定される。AsyncProcessingEngineクラスは、これによって、Springコンテキストを介して、SecurityAuditorFacadeをインスタンス化する。SecurityAuditorFacadeは、これによって、SecurityAuditorをインスタンス化する。このように、本発明の実施形態は、APEフレームワークと、ホストされる構成要素である、SecurityAuditorとの間に統合を提供する。
本発明の実施形態によって提供されるレポート機能の一部として、全ての検証エラーはログファイルに書き込まれる。2つのレポート(要約および詳細)は、セキュリティオーディタによって毎日生成される。
エラーログフォーマット
エラーロギングは、SAExceptionクラスの中の1つの場所で実行される。エラーロギングのフォーマットは、特定の実施形態では次の通りである。
エラー:<エラータイプ>
シーケンス番号:<このエラーが発生した回数>
RegOp:<操作名>
トランザクションID:<違反トランザクションのトランザクションID>
説明:<エラーメッセージ>
エラー:<エラータイプ>
シーケンス番号:<このエラーが発生した回数>
RegOp:<操作名>
トランザクションID:<違反トランザクションのトランザクションID>
説明:<エラーメッセージ>
検証例外の処理がどの程度下位にまで発生したかに応じて、操作名およびトランザクションIDは必ずしも示されない場合がある。シーケンス番号は、この例外がセキュリティオーディタで発生した回数を指定する。
要約レポート
要約レポートは、セキュリティオーディタによって毎日生成される。要約レポートは、トランザクションを監査している間に発生したエラーのタイプおよび件数を含有する。処理されたレコードの数、それらの処理にかかった時間等の統計情報も存在する。以下は、本発明の実施形態に従い作成される例示的なレポートである。
セキュリティオーディタ要約レポート
開始:04−15−2009 00:00:00
終了:04−16−2009 00:00:00
===================================
以下の検証エラーが発生した。詳細はエラーログファイルを参照のこと。
不整合:データ:202
無効なSQL:6
データベーストランザクション不一致:744
受信されたデータベーストランザクション合計:1,884,051
トランザクション表エントリを含まないデータベーストランザクション合計:21,768
無視(ABE、SuperDNS、無視可能な表):5,801
未認識(可能性として悪意がある):0
認識(既知のプロファイルを有する):15,967
トランザクション表エントリを含むデータベーストランザクション合計:1,862,283
無視(バッチおよび13のEPP操作のうちの1つではない):244,659
未認識(可能性として悪意がある)(プロファイルなし):0
無効(可能性として悪意がある):6
一致するアプリケーショントランザクション未検出(可能性として悪意がある):744
キャッシュ内未処理トランザクション:50
相関成功:1,616,622
相関失敗(可能性として悪意がある):202
相関既知の問題:0
受信されたアプリケーショントランザクション合計:1,666,124
開始時無視(SAリスタート時のみ):48,309
相関が不要なために無視:9
一致するデータベーストランザクション未検出(可能性として悪意がある):0
キャッシュ内未処理トランザクション:982
相関成功:1,616,622
相関失敗(可能性として悪意がある):202
相関既知の問題:0
既知の問題であるために無視されたトランザクションエントリを含むデータベーストランザクション合計:0
既知の問題であるために無視された相関失敗合計:0
処理時間:0時間42分35秒
セキュリティオーディタ要約レポート
開始:04−15−2009 00:00:00
終了:04−16−2009 00:00:00
===================================
以下の検証エラーが発生した。詳細はエラーログファイルを参照のこと。
不整合:データ:202
無効なSQL:6
データベーストランザクション不一致:744
受信されたデータベーストランザクション合計:1,884,051
トランザクション表エントリを含まないデータベーストランザクション合計:21,768
無視(ABE、SuperDNS、無視可能な表):5,801
未認識(可能性として悪意がある):0
認識(既知のプロファイルを有する):15,967
トランザクション表エントリを含むデータベーストランザクション合計:1,862,283
無視(バッチおよび13のEPP操作のうちの1つではない):244,659
未認識(可能性として悪意がある)(プロファイルなし):0
無効(可能性として悪意がある):6
一致するアプリケーショントランザクション未検出(可能性として悪意がある):744
キャッシュ内未処理トランザクション:50
相関成功:1,616,622
相関失敗(可能性として悪意がある):202
相関既知の問題:0
受信されたアプリケーショントランザクション合計:1,666,124
開始時無視(SAリスタート時のみ):48,309
相関が不要なために無視:9
一致するデータベーストランザクション未検出(可能性として悪意がある):0
キャッシュ内未処理トランザクション:982
相関成功:1,616,622
相関失敗(可能性として悪意がある):202
相関既知の問題:0
既知の問題であるために無視されたトランザクションエントリを含むデータベーストランザクション合計:0
既知の問題であるために無視された相関失敗合計:0
処理時間:0時間42分35秒
詳細レポート
詳細レポートは、セキュリティオーディタによって毎日生成される。このレポートには、一意のエラーが発生した回数およびエラーの詳細が示される。詳細レポートは、システム運用者が、検証エラーの正確な原因を判定するために使用できる有用な情報を含有する。以下は、本発明の実施形態に従い作成される例示的な詳細レポートである。
セキュリティオーディタ詳細レポート
開始:04−15−2009 00:00:00
終了:04−16−2009 00:00:00
===================================
以下の一意の検証エラーが発生した。詳細はエラーログファイルを参照のこと。
〜〜〜〜〜〜〜〜発生数[ 4]〜〜〜〜〜〜〜〜〜〜
エラー:データベーストランザクション不一致
RegOp:ADD−NAMESERVER
SQLサマリの有効期限切れ。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
〜〜〜〜〜〜〜〜発生数[ 1]〜〜〜〜〜〜〜〜〜〜
エラー:データベーストランザクション不一致
RegOp:DEL−NAMESERVER
SQLサマリの有効期限切れ。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
〜〜〜〜〜〜〜〜発生数[ 19]〜〜〜〜〜〜〜〜〜〜
エラー:データベーストランザクション不一致
RegOp:DEL−DOMAIN
SQLサマリの有効期限切れ。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
〜〜〜〜〜〜〜〜発生数[ 202]〜〜〜〜〜〜〜〜〜〜
エラー:データベーストランザクション不一致
RegOp:QUIT
SQLサマリの有効期限切れ。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
〜〜〜〜〜〜〜〜発生数[ 98]〜〜〜〜〜〜〜〜〜〜
エラー:不整合:データ
RegOp:SESSION
REGISTRYSESSION.[SESSIONID]!の値=トランスログエントリパラメータ[N/A]
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
〜〜〜〜〜〜〜〜発生数[ 81]〜〜〜〜〜〜〜〜〜〜
エラー:データベーストランザクション不一致
RegOp:TRANSFER−DOMAIN
SQLサマリの有効期限切れ。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
〜〜〜〜〜〜〜〜発生数[ 6]〜〜〜〜〜〜〜〜〜〜
エラー:無効なSQL
RegOp:RENEW−DOMAIN
予測外:DOMAINNAMESERVERLINK.UPDATE
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
〜〜〜〜〜〜〜〜発生数[ 31]〜〜〜〜〜〜〜〜〜〜
エラー:データベーストランザクション不一致
RegOp:RENEW−DOMAIN
SQLサマリの有効期限切れ。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
〜〜〜〜〜〜〜〜発生数[ 56]〜〜〜〜〜〜〜〜〜〜
エラー:データベーストランザクション不一致
RegOp:RESTORE−REQUEST
SQLサマリの有効期限切れ。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
〜〜〜〜〜〜〜〜発生数[ 102]〜〜〜〜〜〜〜〜〜〜
エラー:不整合:データ:
RegOp:QUIT
REGISTRYSESSION.[SESSIONID]!の値=トランスログエントリパラメータ[N/A]
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
〜〜〜〜〜〜〜〜発生数[ 18]〜〜〜〜〜〜〜〜〜〜
エラー:データベーストランザクション不一致
RegOp:MOD−NAMESERVER
SQLサマリの有効期限切れ。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
〜〜〜〜〜〜〜〜発生数[ 2]〜〜〜〜〜〜〜〜〜〜
エラー:不整合:データ
RegOp:ADD−NAMESERVER
NAMESERVER.[SERVERNAME]!の値=トランスログエントリパラメータ[sNm]
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
〜〜〜〜〜〜〜〜発生数[ 65]〜〜〜〜〜〜〜〜〜〜
エラー:データベーストランザクション不一致
RegOp:MOD−DOMAIN
SQLサマリの有効期限切れ。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
〜〜〜〜〜〜〜〜発生数[ 48]〜〜〜〜〜〜〜〜〜〜
エラー:データベーストランザクション不一致
RegOp:RESTORE−REPORT
SQLサマリの有効期限切れ。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
〜〜〜〜〜〜〜〜発生数[ 219]〜〜〜〜〜〜〜〜〜〜
エラー:データベーストランザクション不一致
RegOp:SESSION
SQLサマリの有効期限切れ。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
セキュリティオーディタ詳細レポート
開始:04−15−2009 00:00:00
終了:04−16−2009 00:00:00
===================================
以下の一意の検証エラーが発生した。詳細はエラーログファイルを参照のこと。
〜〜〜〜〜〜〜〜発生数[ 4]〜〜〜〜〜〜〜〜〜〜
エラー:データベーストランザクション不一致
RegOp:ADD−NAMESERVER
SQLサマリの有効期限切れ。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
〜〜〜〜〜〜〜〜発生数[ 1]〜〜〜〜〜〜〜〜〜〜
エラー:データベーストランザクション不一致
RegOp:DEL−NAMESERVER
SQLサマリの有効期限切れ。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
〜〜〜〜〜〜〜〜発生数[ 19]〜〜〜〜〜〜〜〜〜〜
エラー:データベーストランザクション不一致
RegOp:DEL−DOMAIN
SQLサマリの有効期限切れ。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
〜〜〜〜〜〜〜〜発生数[ 202]〜〜〜〜〜〜〜〜〜〜
エラー:データベーストランザクション不一致
RegOp:QUIT
SQLサマリの有効期限切れ。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
〜〜〜〜〜〜〜〜発生数[ 98]〜〜〜〜〜〜〜〜〜〜
エラー:不整合:データ
RegOp:SESSION
REGISTRYSESSION.[SESSIONID]!の値=トランスログエントリパラメータ[N/A]
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
〜〜〜〜〜〜〜〜発生数[ 81]〜〜〜〜〜〜〜〜〜〜
エラー:データベーストランザクション不一致
RegOp:TRANSFER−DOMAIN
SQLサマリの有効期限切れ。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
〜〜〜〜〜〜〜〜発生数[ 6]〜〜〜〜〜〜〜〜〜〜
エラー:無効なSQL
RegOp:RENEW−DOMAIN
予測外:DOMAINNAMESERVERLINK.UPDATE
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
〜〜〜〜〜〜〜〜発生数[ 31]〜〜〜〜〜〜〜〜〜〜
エラー:データベーストランザクション不一致
RegOp:RENEW−DOMAIN
SQLサマリの有効期限切れ。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
〜〜〜〜〜〜〜〜発生数[ 56]〜〜〜〜〜〜〜〜〜〜
エラー:データベーストランザクション不一致
RegOp:RESTORE−REQUEST
SQLサマリの有効期限切れ。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
〜〜〜〜〜〜〜〜発生数[ 102]〜〜〜〜〜〜〜〜〜〜
エラー:不整合:データ:
RegOp:QUIT
REGISTRYSESSION.[SESSIONID]!の値=トランスログエントリパラメータ[N/A]
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
〜〜〜〜〜〜〜〜発生数[ 18]〜〜〜〜〜〜〜〜〜〜
エラー:データベーストランザクション不一致
RegOp:MOD−NAMESERVER
SQLサマリの有効期限切れ。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
〜〜〜〜〜〜〜〜発生数[ 2]〜〜〜〜〜〜〜〜〜〜
エラー:不整合:データ
RegOp:ADD−NAMESERVER
NAMESERVER.[SERVERNAME]!の値=トランスログエントリパラメータ[sNm]
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
〜〜〜〜〜〜〜〜発生数[ 65]〜〜〜〜〜〜〜〜〜〜
エラー:データベーストランザクション不一致
RegOp:MOD−DOMAIN
SQLサマリの有効期限切れ。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
〜〜〜〜〜〜〜〜発生数[ 48]〜〜〜〜〜〜〜〜〜〜
エラー:データベーストランザクション不一致
RegOp:RESTORE−REPORT
SQLサマリの有効期限切れ。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
〜〜〜〜〜〜〜〜発生数[ 219]〜〜〜〜〜〜〜〜〜〜
エラー:データベーストランザクション不一致
RegOp:SESSION
SQLサマリの有効期限切れ。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
詳細エラーログ
本発明の実施形態は、詳細レポートといくつかの類似点を共有する詳細エラーログを提供する。各詳細検証エラーが詳細レポートスレッドに送信されると、スレッドは最初に、メッセージを詳細エラーログに記録する。次いで、メッセージが発生した回数の件数とともに、詳細レポートに書き込まれるメッセージをキャッシュする。
詳細エラーログは、セキュリティオーディタ構成ファイルに指定されたログフォルダに書き込まれる。詳細エラーログの名前は、sa.err.detail.log.<日付>のフォーマットである。
サンプルログの例は次の通りである。
20091218 112210 INFOエラー:未知のデータベーストランザクション
説明:TRANSACTION.UPDATE(SESSIONID)
20091218 112230 INFOエラー:未知のデータベーストランザクション:既知の問題
RegOp:KNOWN ISSUE
説明:TRANSACTION.UPDATE(FILEID)
20091218 112210 INFOエラー:未知のデータベーストランザクション
説明:TRANSACTION.UPDATE(SESSIONID)
20091218 112230 INFOエラー:未知のデータベーストランザクション:既知の問題
RegOp:KNOWN ISSUE
説明:TRANSACTION.UPDATE(FILEID)
冗長エラーログ
冗長エラーログは、検証エラーの詳細を全て含有する。これは、違反トランザクションの列の実際の値を含む。システム運用者は、最初に詳細レポートを調べることができ、必要であれば、冗長エラーログで必要に応じて詳細情報を調べることができる。冗長エラーログは、セキュリティオーディタ構成ファイルに指定されたログフォルダに書き込まれる。冗長エラーログの名前は、sa.err.log.<日付>のフォーマットである。
サンプルの冗長ログの例は次の通りである。
20091216 203918 com.verisign.sa.summary.SQLSummaryUtil エラー
/*****************************/
エラー:無効なデータベーストランザクション
シーケンス:1
RegOp:ADD−DOMAIN
TransID:1299210605
説明:予測:[CHARGEDTRANSACTION.INSERT]
/*****************************/
20091216 203918 com.verisign.sa.summary.SQLSummaryUtil エラー
/*****************************/
エラー:無効なデータベーストランザクション
シーケンス:2
RegOp:DEL−DOMAIN
TransID:1299210606
説明:予測:[CHARGEDTRANSACTION.INSERT]
/*****************************/
20091216 203918 com.verisign.sa.db.processor.util.DBProcessorUtil エラー
/*****************************/
エラー:未知のデータベーストランザクション:既知の問題
シーケンス:1
RegOp:KNOWN ISSUE
説明:TRANSACTION.UPDATE(
TRANSACTIONID=1285208475,
SESSIONID=−123,
OPERATIONID=11,
REGISTRARID=50000007,
TRANSACTIONDATE=2005−03−16:14:57:29,
SCN =57817731432,
FILEID=−10,
BLOCKID=null,
ROWID=AAACuUABQAAAAB8AAA
)
/*****************************/
20091216 203918 com.verisign.sa.summary.SQLSummaryUtil エラー
/*****************************/
エラー:無効なデータベーストランザクション
シーケンス:1
RegOp:ADD−DOMAIN
TransID:1299210605
説明:予測:[CHARGEDTRANSACTION.INSERT]
/*****************************/
20091216 203918 com.verisign.sa.summary.SQLSummaryUtil エラー
/*****************************/
エラー:無効なデータベーストランザクション
シーケンス:2
RegOp:DEL−DOMAIN
TransID:1299210606
説明:予測:[CHARGEDTRANSACTION.INSERT]
/*****************************/
20091216 203918 com.verisign.sa.db.processor.util.DBProcessorUtil エラー
/*****************************/
エラー:未知のデータベーストランザクション:既知の問題
シーケンス:1
RegOp:KNOWN ISSUE
説明:TRANSACTION.UPDATE(
TRANSACTIONID=1285208475,
SESSIONID=−123,
OPERATIONID=11,
REGISTRARID=50000007,
TRANSACTIONDATE=2005−03−16:14:57:29,
SCN =57817731432,
FILEID=−10,
BLOCKID=null,
ROWID=AAACuUABQAAAAB8AAA
)
/*****************************/
監視(JMX管理サーバ)
セキュリティオーディタは、いくつかの実施形態において管理サーバをホストする。上記のように、セキュリティオーディタおよびその構成要素のステータスに関する統計を提供するように、管理サーバに登録されるいくつかのmbeanが存在する。
Mbean
監視およびレポート目的で、セキュリティオーディタに定義される複数のmbeanが存在する。セキュリティオーディタの構成要素として定義されるmbeanがある。加えて、構成情報およびセキュリティオーディタ自身のために定義されるmbeanがある。
エンジン
Key:com.verisign.SecurityAuditor:key1=SecurityAuditor
このmbeanは、セキュリティオーディタの属性および操作を有する。以下の属性が公開される。
開始日時文字列:セキュリティオーディタの開始日時。監査されているトランザクションの作成タイムスタンプは、トランザクションが監査サイクルの現在のタイムフレームにあるかどうかを判定するために使用される。典型的に、これは一昨日の真夜中である。
終了日時文字列:セキュリティオーディタの終了日時。開始日時と同様に、終了日時は、監査サイクルを停止し、レポートを生成することが必要な時を判定するために使用される。典型的に、これは昨日の夜中である。
開始済み:この属性は、ブール変数である。真の値は、セキュリティオーディタが稼動中であることを示す。これは、セキュリティオーディタが稼動しているかどうかを判定するために、外部監視構成要素が使用することができる。
現在処理中:この属性は、ブール変数である。真の値は、セキュリティオーディタがトランザクションを現在監査していることを示す。これは、セキュリティオーディタが稼動しているかどうかを判定するために、外部監視構成要素が使用することができる。
構成
Key:com.verisign.SecurityAuditor:key1=Configuration
セキュリティオーディタの構成ファイルに指定された構成情報は、読み出し専用属性として公開される。図19は、本発明の実施形態に従い、構成情報を示す画面図である。
残りのMbeanは、セキュリティオーディタの構成要素として定義される。したがって、次のmbeanのキーに関連するサブタイプが存在する。
例外マネージャ
Key:com.verisign.SecurityAuditor:key1= ExceptionManager
このmbeanは、ログエラーカウントおよびディスプレイエラーカウントの2つの操作を定義する。ログエラーカウントは、発生した検証エラーのエラーカウントをエラーログファイルに記録する操作である。ディスプレイエラーカウントは、logErrorCounts操作によってエラーログファイルに書き込まれたのと同じ情報を含むjava.lang.Stringを返す操作である。この情報は、次いで、管理コンソール等の外部構成要素に表示することができる。
プロファイルマネージャ
Key:com.verisign.SecurityAuditor:key1= ProfileManager
メモリにロードされたプロファイルの数:この属性は、プロファイルマネージャによってパースされ、メモリにロードされたプロファイルの数を指定する。
リストプロファイル操作名:この操作は、メモリのプロファイルの操作名のjava.lang.Stringを返す。操作名の例は、ADD−DOMAIN、RESTORE−DOMAIN等である。
再ロードプロファイル:この操作は、ディスク上のプロファイルをメモリ内に強制的に再ロードする。この操作は、プロファイルに変更が存在した場合に、要求に応じてプロファイルを再ロードするために使用できる。このため、変更されたプロファイルは、セキュリティオーディタをシャットダウンすることなく、メモリにロードすることができる。
レポートマネージャ
Key:com.verisign.SecurityAuditor:key1= ReportManager
最新サマリレポート:この属性は、セキュリティオーディタの監査されたトランザクションの最新の使用可能なレポートを含有する。セキュリティオーディタによって生成された最新の要約レポートは、この属性を介して使用可能である。このように、最新の要約レポートは、管理コンソール等の外部構成要素に表示することができる。
SQLサマリキャッシュマネージャ
Key: com.verisign.SecurityAuditor:key1= SQLSummaryCacheManager
このmbeanは、SQLサマリキャッシュに関する統計を有する。統計は以下を含む。
キャッシュ内数字要約:この属性は、有効なSQLサマリキャッシュの現在のサイズを指定する。
有効なSQLサマリ合計:この属性は、現在の監査サイクルで有効なSQLサマリキャッシュに追加された有効なSQLサマリの合計数を指定する。
無効なSQLサマリ合計:この属性は、現在の監査サイクルで無効なSQLサマリキャッシュに追加された無効なSQLサマリの合計数を指定する。
サマリコリレータマネージャ
このmbeanは、トランザクションおよびSQLサマリキャッシュの相関に関する情報を有する属性を有する。
Key: com.verisign.SecurityAuditor:key1= SummaryCorrelatorManager
最後のSQLサマリ:この属性は、最後に相関されたSQLサマリのタイムスタンプを指定する。
最後のトランスログサマリ:この属性は、最後に相関されたSQLサマリのタイムスタンプを指定する。
相関されたトランザクション数:この属性は、SQLおよびトランザクションログサマリキャッシュで相関されたトランザクションの数を指定する。
トランスログサマリキャッシュマネージャ
Key: com.verisign.SecurityAuditor:key1= TransLogSummaryCacheManager
このmbeanは、トランザクションログサマリキャッシュに関する統計を有する。
キャッシュ内数字要約:この属性は、トランザクションログサマリキャッシュの現在のサイズを指定する。
トランスサマリ合計:この属性は、現在の監査サイクルでトランザクションログサマリキャッシュに追加されたトランザクションログサマリの合計数を指定する。
例外階層
セキュリティオーディタで投げられる全ての例外の基底クラスは、com.verisign.sa.spi.exception.SAExceptionである。全ての他の例外クラスは、SAExceptionクラスを拡張し、com.verisign.sa.spi.exceptionパッケージに定義される。以下の例外クラス(例として提供されるに過ぎず、本発明を限定することを意図しない)が、本発明の実施形態に従い、多様な検証エラーに対して使用される。
・ConditionalValidationException
・CustomValidationException
・DatabaseValidationException
・DateValidationException
・ExistsInTablesException
・LookupValidationException
・MutuallyExclusiveTablesException
・NoProfileFoundException
・ProfileException
・ReferentialValidationException
・RegexValidationException
・SQLSummaryExpiredException
・SQLParseException
・TransLogSummaryExpiredException
・TransLogParseException
・TransLogValidationException
・TransLogSummaryCorrelatedWithInvalidSQLSummaryException
・ConditionalValidationException
・CustomValidationException
・DatabaseValidationException
・DateValidationException
・ExistsInTablesException
・LookupValidationException
・MutuallyExclusiveTablesException
・NoProfileFoundException
・ProfileException
・ReferentialValidationException
・RegexValidationException
・SQLSummaryExpiredException
・SQLParseException
・TransLogSummaryExpiredException
・TransLogParseException
・TransLogValidationException
・TransLogSummaryCorrelatedWithInvalidSQLSummaryException
基底の抽象クラスSAExceptionは、エラーログを全て記録する。特定の実施形態に従い、検証エラーの他のログはアプリケーションの他のどこにも提供されない。
復元可能性
セキュリティオーディタは、監査されることが必要なトランザクションの開始日時を「startdate.txt」という名前のファイルに書き込む。シャットダウン時に、セキュリティオーディタは、処理された最後のSQLサマリのタイムスタンプをこのファイルに書き込む。このように、実施形態は、セキュリティオーディタが終了した時点からトランザクションの監査を実施するように再起動することを提供する。
同時並列性
本発明の実施形態は、レジストリ操作のメモリ内バリデータである、セキュリティオーディタを提供するので、操作の並列実行が典型的に利用される。したがって、以下の並列実行が発生する。
・トランザクション内のSQL文のパース、および結果のSQLサマリのキャッシュ
・複数のトランザクションログファイルは並列処理される。
・データは、SQLサマリキャッシュとトランザクションログサマリキャッシュとの間で相関される。
・トランザクション内のSQL文のパース、および結果のSQLサマリのキャッシュ
・複数のトランザクションログファイルは並列処理される。
・データは、SQLサマリキャッシュとトランザクションログサマリキャッシュとの間で相関される。
スレッドのプールを利用する構成要素は典型的に、Executorインターフェースを使用する。加えて、これらの構成要素の各々のスレッドプールのサイズは、構成ファイルに指定される。
#==================================================
# thread pools configuration settings
#==================================================
sa.all.threadpools.core.size=1
sa.all.threadpools.keepalive.time=60
sa.all.threadpools.keepalive.time.unit=SECONDS
sa.sql.summary.threadpool.size=4
sa.translog.summary.tnreadpool.size=2
sa.correlator.threadpool.size=2
#==================================================
# thread pools configuration settings
#==================================================
sa.all.threadpools.core.size=1
sa.all.threadpools.keepalive.time=60
sa.all.threadpools.keepalive.time.unit=SECONDS
sa.sql.summary.threadpool.size=4
sa.translog.summary.tnreadpool.size=2
sa.correlator.threadpool.size=2
セキュリティオーディタのスレッドプール全ては、実施形態において同じThreadFactory、ThreadGroupおよびRejectionHandlerでインスタンス化されることに注意されたい。加えて、セキュリティオーディタのロックは、アプリケーション全体の均一性のために、同じグローバルロック公平性ポリシーを確実にするために、共通のLockFactoryを使用して作成される。
本発明の実施形態は、Directory Pollerを含む、いくつかの外部ライブラリを利用する。Directory Pollerライブラリは、特定のディレクトリを監視し、ディレクトリにファイルがコピーされるとイベントを生成する能力を提供する。スタートアップ時、セキュリティオーディタは、Directory Pollerを用いてトランスログファイルディスパッチャをリスナとして登録する。トランザクションログファイルがディレクトリにコピーされると、Directory Pollerはそれを感知し、イベントを生成し、java.io.Fileオブジェクトをトランスログファイルディスパッチャに送信する。このDirectory Pollerの能力によって、セキュリティオーディタがリアルタイムの監査モードで動作している時、使用可能になると同時にトランザクションログファイルを処理できることが確実になる。
いくつかの実施形態に従い、SPIモデルで公開されるインターフェースは全て、シリアライズ可能である。これによって、キャッシュ、サマリ、プロファイル等の異なるデータ構成要素が、性能、復元可能性等に関連する理由に基づいて、適切に持続されることが可能になる。
注文追加操作のプロファイル(XMLに作成)を以下に示す。
<?xml version="1.0" encoding="UTF-8"?>
<RegistryOperationProfile xmlns="xml.profile.sa.verisign.com"
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation="xml.profile.sa.verisign.com
RegistryOperationProfile.xsd">
<registryOperation>
<operationInfo>
<operationID transLogEntryExists="true">2</operationID>
<operationName>ADD-ORDER</operationName>
<conceptClassName>RegisterORDEROp</conceptClassName>
</operationInfo>
<databaseInfo>
<table name="TRANSACTION" optional="false">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>TRANSACTIONID</column>
<column>SESSIONID</column>
<column allowedValues="2">OPERATIONID</column>
<column>TRANSACTIONDATE</column>
</table>
<table name="TRANSACTION" optional="false">
<dbOperation max="1" min="1">UPDATE</dbOperation>
<column>SCN</column>
</table>
<table name="TRANSACTIONATTRIBUTES" optional="false" depends="TRANSACTION">
<dbOperation max="100" min="1">INSERT</dbOperation>
<column>TRANSACTIONID</column>
<column>ATTRIBUTE</column>
<column>ATTRIBUTEVALUE</column>
</table>
<table name="ORDER" optional="false" depends-'TRANSACTION">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>ORDERID</column>
<column minLength="2" maxLength="67">ORDERNAME</column>
<column minValue="1" maxValue="10">REGISTRATIONPERIOD</column>
<column>ORDEREXPIRATIONDATE</column>
<column>TRANSACTIONID</column>
<column minLength="1" maxLength="32">AUTHINFO</column>
<column>CREATEDDATE</column>
<column allowedValues="3,14">ENCODINGTYPEID</column>
<column>PARENTORDER</column>
<column allowedValues="Y">ZONEINSERTION</column>
</table>
<table name="ORDERAUDIT" optional="false" depends="ORDER">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>ORDERID</column>
<column minLength="2" maxLength="67">ORDERNAME</column>
<column minValue="1" maxValue="10">REGISTRATIONPERIOD</column>
<column>ORDEREXPIRATIONDATE</column>
<column>TRANSACTIONID</column>
<column minLength="1" maxLength="32">AUTHINFO</column>
<column>CREATEDDATE</column>
<column allowedValues="3,14">ENCODINGTYPEID</column>
<column>PARENTORDER</column>
<column allowedValues="Y">ZONEINSERTION</column>
<column>TRANSACTIONDATE</column>
</table>
<table name="ORDERSTATUS" optional="false" depends="ORDER">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>ORDERID</column>
<column allowedValues="1">STATUSCODE</column>
<column>CREATEDDATE</column>
</table>
<table name="ORDERSTATUSAUDIT" optional="false" depends="ORDERSTATUS">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>ORDERID</column>
<column allowedValues="1">STATUSCODE</column>
<column>CREATEDDATE</column>
<column>TRANSACTIONID</column>
</table>
<table name="ORDERLINEITEMLINK" optional="true" depends="ORDER">
<dbOperation max="13" min="1">INSERT</dbOperation>
<column>TRANSACTIONlD</column>
<column>ORDERID</column>
<column>LINEITEMID</column>
</table>
<table name="ORDERLINEITEMLINKAUDIT" optionai="true" depends="ORDERLINEITEMLINK">
<dbOperation max="13" min="1">INSERT</dbOperation>
<column>TRANSACTIONID</column>
<column>ORDERID</column>
<column>LINEITEMID</column>
</table>
<table name="INTERNATIONALORDER" optional="true" depends="ORDER">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>ORDERID</column>
<column>INTERNATIONALORDERID</column>
<column allowedValues="1,2,4,6,11,12,13">ENCODINGTYPEID</column>
</table>
<table name="INTERNATIONALORDERAUDIT" optional="true" depends="INTERNATIONALORDER">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>ORDERID</column>
<column>INTERNATIONALORDERID</column>
<column allowedValues="1,2,4,6,11,12,13">ENCODINGTYPEID</column>
</table>
<table name- 'CHARVARIANT" optional="true">
<dbOperation max="100" min="1">INSERT</dbOperation>
<column>VARIANTVALUE</column>
</table>
<table name="CHARVARIANTAUDIT" optional="true" depends="CHARVARIANT">
<dbOperation max="100" min="1">INSERT</dbOperation>
<column>VARIANTVALUE</column>
</table>
<table name="ORDERCHARVARIANTLINK" optional="true" depends="ORDER">
<dbOperation max="100" min="1">INSERT</dbOperation>
<column>ORDERID</column>
<column>VARIANTID</column>
</table>
<table name="ORDERCHARVARIANTLINKAUDIT" optional="true" depends="ORDERCHARVARIANTLINK">
<dbOperation max="100" min="1">INSERT</dbOperation>
<column>ORDERID</column>
<column>VARIANTID</column>
</table>
</databaseInfo>
<validationCriterion>
<databaseValidation>
<referentialValidation ignore="false" knownIssue="false">
<masterTable name="TRANSACTION">
<dbOperation max="1" min="1">INSERT</dbOperation>
<masterColumn>TRANSACTIONID</masterColumn>
</masterTable>
<childTable name="TRANSACTIONATTRIBUTES">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>TRANSACTIONID</column>
</childTable>
<childTable name="ORDER">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>TRANSACTIONID</column>
</childTable>
<childTable name="ORDERAUDIT">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>TRANSACTIONID</column>
</childTable>
<childTable name="ORDERSTATUSAUDIT">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>TRANSACTIONID</column>
</childTable>
<childTable name="ORDERLINEITEMLLNK">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>TRANSACTIONID</column>
</childTable>
<childTable name="ORDERLINEITEMLINKAUDIT">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>TRANSACTIONID</column>
</childTable>
</referentialValidation>
<referentialValidation ignore="false" knownIssue="false">
<masterTable name="ORDER">
<dbOperation max="1" min="1">INSERT</dbOperation>
<masterColumn>ORDERID</masterColumn>
</masterTable>
<childTable name="ORDERAUDIT">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>ORDERID</column>
</childTable>
<childTable name="ORDERSTATUS">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>ORDERID</column>
</childTable>
<childTable name="ORDERSTATUSAUDIT">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>ORDERID</column>
</childTable>
<childTable name="ORDERCHARVARIANTLINK">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>ORDERID</column>
</childTable>
<childTable name="ORDERCHARVARIANTLINKAUDIT">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>ORDERID</column>
</childTable>
</referentialValidation>
<referentialValidation ignore="false" known Issue="false">
<masterTable name="ORDER">
<dbOperation max="1" min="1">INSERT</dbOperation>
<masterColumn>ORDERNAME</masterColumn>
</masterTable>
<childTable name="ORDERAUDIT">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>ORDERNAME</column>
</childTable>
</referentialValidation>
<referentialValidation ignore="false" knownIssue="false">
<masterTable name="ORDER">
<dbOperation max="1" min="1">INSERT</dbOperation>
<masterColumn>REGISTRATIONPERIOD</masterColumn>
</masterTable>
<childTable name="ORDERAUDIT">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>REGISTRATIONPERIOD</column
</childTable>
</referentialValidation>
<referentialValidation ignore="false" knownIssue="false">
<masterTable name="ORDER">
<dbOperation max="1" min="1">INSERT</dbOperation>
<masterColumn>ORDEREXPIRATIONDATE</masterColumn>
</masterTable>
<childTable name="ORDERAUDIT">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>ORDEREXPIRATIONDATE</column>
</childTable>
</referentialValidation>
<referentialValidation ignore="false" knownIssue="false">
<masterTable name="ORDER">
<dbOperation max="1" min="1">INSERT</dbOperation>
<masterColumn>AUTHINFO</masterColumn
</masterTable>
<childTable name="ORDERAUDIT">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>AUTHINFO</column>
</childTable>
</referentialValidation>
<referentialValidation ignore="false" knownIssue="false">
<masterTable name="ORDER">
<dbOperation max="1" min="1">INSERT</dbOperation>
<masterColumn>ENCODINGTYPEID</masterColumn>
</masterTable>
<childTable name="ORDERAUDIT">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>ENCODINGTYPEID</column>
</childTable>
</referentialValidation>
<referentialValidation ignore="false" knownIssue="false">
<masterTable name="ORDER">
<dbOperation max="1" min="1">INSERT</dbOperation>
<masterColumn>CREATEDDATE</masterColumn
</masterTable>
<childTable name="ORDERSTATUS">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>CREATEDDATE</column>
</childTable>
<childTable name="ORDERSTATUSAUDIT">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>CREATEDDATE</column>
</childTable>
</referentialValidation>
<referentialValidation ignore="false" knownIssue="false">
<masterTable name="CHARVARIANT">
<dbOperation max="1" min="1">INSERT</dbOperation
<masterColumn>VARIANTVALUE</masterColumn
</masterTable>
<childTable name="CHARVARIANTAUDIT">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>VARIANTVALUE</column>
</childTable>
</referentialValidation>
<referentialValidation ignore="false" knownIssue="false">
<masterTable name="ORDERCHARVARIANTLINK">
<dbOperation max="1" min="1">INSERT</dbOperation>
<masterColumn>VARIANTID</masterColumn>
</masterTable>
<childTable name="ORDERCHARVARIANTLINKAUDIT">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>VARIANTID</column>
</childTable>
</referentialValidation>
<referentialValidation ignore="false" knownIssue="false">
<masterTable name="ORDER">
<dbOperation max="1" min="1">INSERT</dbOperation>
<masterColumn>ORDERNAME</masterColumn>
</masterTable>
<regexOnMasterColumn>
<regularExpression>(.*?)(COM|NET|EDU|ARPA)$</regularExpression>
<group>2</group>
</regexOnMasterColumn>
<childTable name="ORDER">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>PARENTORDER</column>
</childTable>
</referentialValidation>
</databaseValidation>
</validationCriterion>
<validationCriterion>
<databaseValidation>
<conditionalValidation ignore="false" knownIssue="false">
<tableName>TRANSACTIONATTRIBUTES</tableName>
<dbOperation max="100" min="1">INSERT</dbOperation>
<column value="ORDERName" name="ATTRIBUTE"/>
<column value="RegistrationPeriod" name="ATTRIBUTE"/>
<column value="Authinfo" name="ATTRIBUTE"/>
</conditionalValidation>
</databaseValidation>
</validationCriterion>
<validationCriterion>
<databaseValidation>
<existsInTableValidation ignore="false" knownIssue="false">
<table name="INTERNATIONALORDER" dbOperation="INSERT"/>
<regexValidation>
<tableName>ORDER</tableName>
<dbOperation max="1" min="1">INSERT</dbOperation>
<columnName>ORDERNAME</columnName>
<regex>
<regularExpression>^XN-- *</regularExpression>
</regex>
</regexValidation>
</existsInTableValidation>
</databaseValidation>
</validationCriterion>
<validationCriterion>
<databaseValidation>
<dateValidation ignore="false" knownIssue="false">
<firstTable dbOperation="INSERT" name="ORDER">
<column>CREATEDDATE</column>
<condition javaCalendarConstant="1" truncateTime="true">
<value>10</value>
</condition>
</firstTable>
<secondTable dbOperation="INSERT" name="ORDER">
<column>ORDEREXPIRATIONDATE</column>
<condition truncateTime="true"/>
</secondTable>
</dateValidation>
</databaseValidation>
</validationCriterion>
<validationCriterion>
<transLogValidation ignore="false" knownIssue="false">
<tableName>TRANSACTION</tableName>
<dbOperation max="1" min="1">UPDATE</dbOperation>
<columnName>SCN</columnName>
<transLogEntryParam name="N/A"/>
</transLogValidation>
<transLogValidation ignore="false" knownIssue="true">
<tableName>ORDER</tableName>
<dbOperation max="1" min="1">INSERT</dbOperation>
<columnName>ORDERNAME</columnName>
<transLogEntryParam name="dm" ignoreCase="true"/>
</transLogValidation>
<transLogVaIidation ignore="false" knownIssue="false">
<tableName>ORDER</tableName>
<dbOperation max="1" min="1">INSERT</dbOperation>
<columnName>REGISTRATIONPERIOD</columnName>
<transLogEntryParam name="rPd" ignoreCase="true"/>
</transLogValidation>
<transLogValidation ignore="false" knownIssue="false">
<tableName>ORDER</tableName>
<dbOperation max="1" min="1">INSERT</dbOperation>
<columnName>AUTHINFO</columnName>
<transLogEntryParam name="aln" ignoreCase="false"/>
</transLogValidation>
</validationCriterion>
</registryOperation>
</RegistryOperationProfile>
<?xml version="1.0" encoding="UTF-8"?>
<RegistryOperationProfile xmlns="xml.profile.sa.verisign.com"
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation="xml.profile.sa.verisign.com
RegistryOperationProfile.xsd">
<registryOperation>
<operationInfo>
<operationID transLogEntryExists="true">2</operationID>
<operationName>ADD-ORDER</operationName>
<conceptClassName>RegisterORDEROp</conceptClassName>
</operationInfo>
<databaseInfo>
<table name="TRANSACTION" optional="false">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>TRANSACTIONID</column>
<column>SESSIONID</column>
<column allowedValues="2">OPERATIONID</column>
<column>TRANSACTIONDATE</column>
</table>
<table name="TRANSACTION" optional="false">
<dbOperation max="1" min="1">UPDATE</dbOperation>
<column>SCN</column>
</table>
<table name="TRANSACTIONATTRIBUTES" optional="false" depends="TRANSACTION">
<dbOperation max="100" min="1">INSERT</dbOperation>
<column>TRANSACTIONID</column>
<column>ATTRIBUTE</column>
<column>ATTRIBUTEVALUE</column>
</table>
<table name="ORDER" optional="false" depends-'TRANSACTION">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>ORDERID</column>
<column minLength="2" maxLength="67">ORDERNAME</column>
<column minValue="1" maxValue="10">REGISTRATIONPERIOD</column>
<column>ORDEREXPIRATIONDATE</column>
<column>TRANSACTIONID</column>
<column minLength="1" maxLength="32">AUTHINFO</column>
<column>CREATEDDATE</column>
<column allowedValues="3,14">ENCODINGTYPEID</column>
<column>PARENTORDER</column>
<column allowedValues="Y">ZONEINSERTION</column>
</table>
<table name="ORDERAUDIT" optional="false" depends="ORDER">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>ORDERID</column>
<column minLength="2" maxLength="67">ORDERNAME</column>
<column minValue="1" maxValue="10">REGISTRATIONPERIOD</column>
<column>ORDEREXPIRATIONDATE</column>
<column>TRANSACTIONID</column>
<column minLength="1" maxLength="32">AUTHINFO</column>
<column>CREATEDDATE</column>
<column allowedValues="3,14">ENCODINGTYPEID</column>
<column>PARENTORDER</column>
<column allowedValues="Y">ZONEINSERTION</column>
<column>TRANSACTIONDATE</column>
</table>
<table name="ORDERSTATUS" optional="false" depends="ORDER">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>ORDERID</column>
<column allowedValues="1">STATUSCODE</column>
<column>CREATEDDATE</column>
</table>
<table name="ORDERSTATUSAUDIT" optional="false" depends="ORDERSTATUS">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>ORDERID</column>
<column allowedValues="1">STATUSCODE</column>
<column>CREATEDDATE</column>
<column>TRANSACTIONID</column>
</table>
<table name="ORDERLINEITEMLINK" optional="true" depends="ORDER">
<dbOperation max="13" min="1">INSERT</dbOperation>
<column>TRANSACTIONlD</column>
<column>ORDERID</column>
<column>LINEITEMID</column>
</table>
<table name="ORDERLINEITEMLINKAUDIT" optionai="true" depends="ORDERLINEITEMLINK">
<dbOperation max="13" min="1">INSERT</dbOperation>
<column>TRANSACTIONID</column>
<column>ORDERID</column>
<column>LINEITEMID</column>
</table>
<table name="INTERNATIONALORDER" optional="true" depends="ORDER">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>ORDERID</column>
<column>INTERNATIONALORDERID</column>
<column allowedValues="1,2,4,6,11,12,13">ENCODINGTYPEID</column>
</table>
<table name="INTERNATIONALORDERAUDIT" optional="true" depends="INTERNATIONALORDER">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>ORDERID</column>
<column>INTERNATIONALORDERID</column>
<column allowedValues="1,2,4,6,11,12,13">ENCODINGTYPEID</column>
</table>
<table name- 'CHARVARIANT" optional="true">
<dbOperation max="100" min="1">INSERT</dbOperation>
<column>VARIANTVALUE</column>
</table>
<table name="CHARVARIANTAUDIT" optional="true" depends="CHARVARIANT">
<dbOperation max="100" min="1">INSERT</dbOperation>
<column>VARIANTVALUE</column>
</table>
<table name="ORDERCHARVARIANTLINK" optional="true" depends="ORDER">
<dbOperation max="100" min="1">INSERT</dbOperation>
<column>ORDERID</column>
<column>VARIANTID</column>
</table>
<table name="ORDERCHARVARIANTLINKAUDIT" optional="true" depends="ORDERCHARVARIANTLINK">
<dbOperation max="100" min="1">INSERT</dbOperation>
<column>ORDERID</column>
<column>VARIANTID</column>
</table>
</databaseInfo>
<validationCriterion>
<databaseValidation>
<referentialValidation ignore="false" knownIssue="false">
<masterTable name="TRANSACTION">
<dbOperation max="1" min="1">INSERT</dbOperation>
<masterColumn>TRANSACTIONID</masterColumn>
</masterTable>
<childTable name="TRANSACTIONATTRIBUTES">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>TRANSACTIONID</column>
</childTable>
<childTable name="ORDER">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>TRANSACTIONID</column>
</childTable>
<childTable name="ORDERAUDIT">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>TRANSACTIONID</column>
</childTable>
<childTable name="ORDERSTATUSAUDIT">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>TRANSACTIONID</column>
</childTable>
<childTable name="ORDERLINEITEMLLNK">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>TRANSACTIONID</column>
</childTable>
<childTable name="ORDERLINEITEMLINKAUDIT">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>TRANSACTIONID</column>
</childTable>
</referentialValidation>
<referentialValidation ignore="false" knownIssue="false">
<masterTable name="ORDER">
<dbOperation max="1" min="1">INSERT</dbOperation>
<masterColumn>ORDERID</masterColumn>
</masterTable>
<childTable name="ORDERAUDIT">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>ORDERID</column>
</childTable>
<childTable name="ORDERSTATUS">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>ORDERID</column>
</childTable>
<childTable name="ORDERSTATUSAUDIT">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>ORDERID</column>
</childTable>
<childTable name="ORDERCHARVARIANTLINK">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>ORDERID</column>
</childTable>
<childTable name="ORDERCHARVARIANTLINKAUDIT">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>ORDERID</column>
</childTable>
</referentialValidation>
<referentialValidation ignore="false" known Issue="false">
<masterTable name="ORDER">
<dbOperation max="1" min="1">INSERT</dbOperation>
<masterColumn>ORDERNAME</masterColumn>
</masterTable>
<childTable name="ORDERAUDIT">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>ORDERNAME</column>
</childTable>
</referentialValidation>
<referentialValidation ignore="false" knownIssue="false">
<masterTable name="ORDER">
<dbOperation max="1" min="1">INSERT</dbOperation>
<masterColumn>REGISTRATIONPERIOD</masterColumn>
</masterTable>
<childTable name="ORDERAUDIT">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>REGISTRATIONPERIOD</column
</childTable>
</referentialValidation>
<referentialValidation ignore="false" knownIssue="false">
<masterTable name="ORDER">
<dbOperation max="1" min="1">INSERT</dbOperation>
<masterColumn>ORDEREXPIRATIONDATE</masterColumn>
</masterTable>
<childTable name="ORDERAUDIT">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>ORDEREXPIRATIONDATE</column>
</childTable>
</referentialValidation>
<referentialValidation ignore="false" knownIssue="false">
<masterTable name="ORDER">
<dbOperation max="1" min="1">INSERT</dbOperation>
<masterColumn>AUTHINFO</masterColumn
</masterTable>
<childTable name="ORDERAUDIT">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>AUTHINFO</column>
</childTable>
</referentialValidation>
<referentialValidation ignore="false" knownIssue="false">
<masterTable name="ORDER">
<dbOperation max="1" min="1">INSERT</dbOperation>
<masterColumn>ENCODINGTYPEID</masterColumn>
</masterTable>
<childTable name="ORDERAUDIT">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>ENCODINGTYPEID</column>
</childTable>
</referentialValidation>
<referentialValidation ignore="false" knownIssue="false">
<masterTable name="ORDER">
<dbOperation max="1" min="1">INSERT</dbOperation>
<masterColumn>CREATEDDATE</masterColumn
</masterTable>
<childTable name="ORDERSTATUS">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>CREATEDDATE</column>
</childTable>
<childTable name="ORDERSTATUSAUDIT">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>CREATEDDATE</column>
</childTable>
</referentialValidation>
<referentialValidation ignore="false" knownIssue="false">
<masterTable name="CHARVARIANT">
<dbOperation max="1" min="1">INSERT</dbOperation
<masterColumn>VARIANTVALUE</masterColumn
</masterTable>
<childTable name="CHARVARIANTAUDIT">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>VARIANTVALUE</column>
</childTable>
</referentialValidation>
<referentialValidation ignore="false" knownIssue="false">
<masterTable name="ORDERCHARVARIANTLINK">
<dbOperation max="1" min="1">INSERT</dbOperation>
<masterColumn>VARIANTID</masterColumn>
</masterTable>
<childTable name="ORDERCHARVARIANTLINKAUDIT">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>VARIANTID</column>
</childTable>
</referentialValidation>
<referentialValidation ignore="false" knownIssue="false">
<masterTable name="ORDER">
<dbOperation max="1" min="1">INSERT</dbOperation>
<masterColumn>ORDERNAME</masterColumn>
</masterTable>
<regexOnMasterColumn>
<regularExpression>(.*?)(COM|NET|EDU|ARPA)$</regularExpression>
<group>2</group>
</regexOnMasterColumn>
<childTable name="ORDER">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>PARENTORDER</column>
</childTable>
</referentialValidation>
</databaseValidation>
</validationCriterion>
<validationCriterion>
<databaseValidation>
<conditionalValidation ignore="false" knownIssue="false">
<tableName>TRANSACTIONATTRIBUTES</tableName>
<dbOperation max="100" min="1">INSERT</dbOperation>
<column value="ORDERName" name="ATTRIBUTE"/>
<column value="RegistrationPeriod" name="ATTRIBUTE"/>
<column value="Authinfo" name="ATTRIBUTE"/>
</conditionalValidation>
</databaseValidation>
</validationCriterion>
<validationCriterion>
<databaseValidation>
<existsInTableValidation ignore="false" knownIssue="false">
<table name="INTERNATIONALORDER" dbOperation="INSERT"/>
<regexValidation>
<tableName>ORDER</tableName>
<dbOperation max="1" min="1">INSERT</dbOperation>
<columnName>ORDERNAME</columnName>
<regex>
<regularExpression>^XN-- *</regularExpression>
</regex>
</regexValidation>
</existsInTableValidation>
</databaseValidation>
</validationCriterion>
<validationCriterion>
<databaseValidation>
<dateValidation ignore="false" knownIssue="false">
<firstTable dbOperation="INSERT" name="ORDER">
<column>CREATEDDATE</column>
<condition javaCalendarConstant="1" truncateTime="true">
<value>10</value>
</condition>
</firstTable>
<secondTable dbOperation="INSERT" name="ORDER">
<column>ORDEREXPIRATIONDATE</column>
<condition truncateTime="true"/>
</secondTable>
</dateValidation>
</databaseValidation>
</validationCriterion>
<validationCriterion>
<transLogValidation ignore="false" knownIssue="false">
<tableName>TRANSACTION</tableName>
<dbOperation max="1" min="1">UPDATE</dbOperation>
<columnName>SCN</columnName>
<transLogEntryParam name="N/A"/>
</transLogValidation>
<transLogValidation ignore="false" knownIssue="true">
<tableName>ORDER</tableName>
<dbOperation max="1" min="1">INSERT</dbOperation>
<columnName>ORDERNAME</columnName>
<transLogEntryParam name="dm" ignoreCase="true"/>
</transLogValidation>
<transLogVaIidation ignore="false" knownIssue="false">
<tableName>ORDER</tableName>
<dbOperation max="1" min="1">INSERT</dbOperation>
<columnName>REGISTRATIONPERIOD</columnName>
<transLogEntryParam name="rPd" ignoreCase="true"/>
</transLogValidation>
<transLogValidation ignore="false" knownIssue="false">
<tableName>ORDER</tableName>
<dbOperation max="1" min="1">INSERT</dbOperation>
<columnName>AUTHINFO</columnName>
<transLogEntryParam name="aln" ignoreCase="false"/>
</transLogValidation>
</validationCriterion>
</registryOperation>
</RegistryOperationProfile>
削除命令操作のプロファイル(XMLに作成)を以下に示す。
<?xml version="1.0" encoding="UTF-8'"?>
<RegistryOperationProfile xmlns="xml.profile.sa.verisign.com"
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation="xml.profile.sa.verisign.com
RegistryOperationProfile.xsd">
<registryOperation>
<operationInfo>
<operationID transLogEntryExists="true">4</operationID>
<operationName>DEL-ORDER</operationName>
<conceptClassName>DeleteORDEROp</conceptClassName>
</operationInfo>
<databaseInfo>
<table name="TRANSACTION" optional="false">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>TRANSACTIONID</column>
<column>SESSIONID</column>
<column allowedValues="4">OPERATIONID</column>
<column>TRANSACTIONDATE</column>
</table>
<table name="TRANSACTION" optional="false">
<dbOperation max="1" min="1">UPDATE</dbOperation>
<column>SCN</column>
</table>
<table name="TRANSACTIONATTRIBUTES" optional="false" depends="TRANSACTION">
<dbOperation max="100" min="1">INSERT</dbOperation>
<column>TRANSACTIONID</column>
<column>ATTRIBUTE</column>
<column>ATTRIBUTEVALUE</column>
</table>
<table name="ORDER"optional="true" depends="TRANSACTION">
<dbOperation max="1" min="1">DELETE</dbOperation>
<column>ORDERID</column>
<column>ORDERNAME</column>
<column>REGISTRARID</column>
<column>REGISTRATIONPERIOD</column>
<column>REGISTRATIONEXPIRATIONDATE</column>
<column>TRANSACTIONID</column>
</table>
<table name="ORDER" optional="true" depends="TRANSACTION">
<dbOperation max="1" min="1">UPDATE</dbOperation>
<column>ORDERID</column>
<column>ORDERNAME</column>
<column>REGISTRARID</column>
<column>REGISTRATIONPERIOD</column>
<column>REGISTRATIONEXPIRATIONDATE</column>
<column>TRANSACTIONID</column>
</table>
<table name="ORDERAUDIT" optional="false" depends="ORDER">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>ORDERID</column>
<column>ORDERNAME</column>
<column>REGISTRARID</column>
<column>REGISTRATIONPERIOD</column>
<column>REGISTRATIONEXPIRATIONDATE</column>
<column>TRANSACTIONID</column>
</table>
<table name="ORDERSTATUS" optional="false" depends="ORDER">
<dbOperation max="1" min="1">DELETE</dbOperation>
<column>ORDERID</column>
<column>STATUSCODE</column>
</table>
<table name="ORDERSTATUS" optional="true" depends="ORDER">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>ORDERID</column>
<column>STATUSCODE</column>
</table>
<table name="ORDERSTATUSAUDIT" optional="false" depends="ORDERSTATUS">
<dbOperation max="10" min="1">INSERT</dbOperation>
<column>ORDERID</column>
<column>STATUSCODE</column>
</table>
<table name="LINEITEMSTATUS" optional="true" depends="LINEITEM">
<dbOperation max="1" min="1">DELETE</dbOperation>
<column>LINElTEMID</column>
<column>STATUSCODE</column>
</table>
<table name="LINEITEMSTATUSAUDIT" optional="true" depends="LINEITEMSTATUS">
<dbOperation max="10" min="1">INSERT</dbOperation>
<column>LINEITEMID</column>
<column>STATUSCODE</column>
</table>
<table name= "LINEITEM" optional="true" depends="ORDER">
<dbOperation max="1" min="1">DELETE</dbOperation>
<column>TRANSACTIONID</column>
<column>LINElTEMID</column>
</table>
<table name="LINEITEMAUDIT" optional="true" depends="ORDER">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>LINEITEMID</column>
<column>SERVERNAME</column>
<column>TRANSACTIONID</column>
<column>TRANSACTIONDATE</column>
</table>
<table name=ORDERLINEITEMLINK" optional="true" depends="ORDER">
<dbOperation max="1" min="1">DELETE</dbOperation>
<column>TRANSACTIONID</column>
<column>ORDERID</column>
<column>LINEITEMID</column>
</table>
<table name="ORDERLINEITEMLINKAUDIT" optional="true" depends="ORDER">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>TRANSACTIONID</column>
<column>ORDERID</column>
<column>LINEITEMID</column>
</table>
<table name="INTERNATIONALORDER" optional="true" depends="ORDER">
<dbOperation max="1" min="1">DELETE</dbOperation>
<column>ORDERID</column>
<column>INTERNATIONALORDERID</column>
</table>
<table name="INTERNATIONALORDERAUDIT" optional="true" depends="INTERNATIONALORDER">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>ORDERID</column>
<column>INTERNATIONALORDERID</column>
<column allowedValues="1,2,4,6,11,12,13">ENCODINGTYPEID</column>
</table>
<table name="INTERNATIONALLINEITEM" optional="true" depends="INTERNATIONALORDER">
<dbOperation max="1" min="1">DELETE</dbOperation>
<column>INTERNATIONALLINEITEMID</column>
</table>
<table name="INTERNATIONALLINEITEMAUDIT" optional="true" depends="INTERNATIONALORDER">
<dbOperation max="1" min="1 ">INSERT</dbOperation>
<column>TRANSACTIONID</column>
<column allowedValues="1,2,4,6,11,12,13">ENCODINGTYPEID</column>
</table>
<table name="CHARVARIANT" optional="true">
<dbOperation max="1" min="1">DELETE</dbOperation>
<column>VARIANTID</column>
</table>
<table name="CHARVARIANTAUDIT" optional="true" depends="CHARVARIANT">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>TRANSACTIONID</column>
<column>TRANSACTIONDATE</column>
<column>VARIANTID</column>
</table>
<table name="ORDERCHARVARIANTLINK" optional="true">
<dbOperation max="1" min="1">DELETE</dbOperation>
<column>ORDERID</column>
<column>VARIANTID</column>
</table>
<table name="ORDERCHARVARIANTLINKAUDIT" optional ="true" depends="ORDERCHARVARIANTLINK">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>TRANSACTIONID</column>
<column>TRANSACTIONDATE</column>
<column>ORDERID</column>
<column>VARIANTID</column>
</table>
<table name="COMPONENT" optional="true" depends="LINEITEM">
<dbOperation max="13" min="1">DELETE</dbOperation>
<column>COMPONENT</column>
</table>
<table name="COMPONENTAUDIT" optional="true" depends="COMPONENT">
<dbOperation max="13" min="1">INSERT</dbOperation>
<column>COMPONENT</column>
<column>TRANSACTIONID</column>
<column>TRANSACTIONDATE</column>
</table>
<table name="LINEITEMCOMPONENTLINK" optional="true" depends="LINEITEM">
<dbOperation max="13" min="1">DELETE</dbOperation>
<column>COMPONENT</column>
<column>LINEITEMID</column>
</table>
<table name="LINEITEMCOMPONENTLINKAUDIT" optional="true" depends="LINEITEMCOMPONENTLINK">
<dbOperation max="13" min="1">INSERT</dbOperation>
<column>COMPONENT</column>
<column>TRANSACTIONID</column>
<column>TRANSACTIONDATE</column>
</table>
<table name="ORDERTRACKING" optional="true" depends="ORDER">
<dbOperation max="1" min="1">DELETE</dbOperation>
<column>TRANSACTIONID</column>
<column>OPERATIONID</column>
<column>ORDERID</column>
<column>CREATEDDATE</column>
</table>
<mutuallyExclusive>
<table name="ORDER" dbOperation="UPDATE"/>
<table name="ORDER" dbOperation="DELETE"/>
</mutuallyExclusive>
</databaseInfo>
<validationCriterion>
<databaseValidation>
<referentialValidation ignore="false" knownIssue="false">
<masterTable name="TRANSACTION">
<dbOperation max="1" min="1">INSERT</dbOperation>
<masterColumn>TRANSACTIONID</masterColumn>
</masterTable>
<childTable name="TRANSACTIONATTRIBUTES">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>TRANSACTIONID</column>
</childTable>
<childTable name="ORDERAUDIT">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>TRANSACTIONID</column>
</childTable>
</referentialValidation>
</databaseValidation>
</validationCriterion>
<validationCriterion>
<transLogValidation ignore="false" knownIssue="false">
<tableName>TRANSACTION</tableName>
<dbOperation max="1" min="1">UPDATE</dbOperation>
<columnName>SCN</columnName>
<transLogEntryParam name="N/A"/>
</transLogValidation>
<transLogValidation ignore="false" knownIssue="true">
<tableName>ORDER</tableName>
<dbOperation max="1" min="1">DELETE</dbOperation>
<columnName>ORDERNAME</columnName>
<transLogEntryParam name="dm" ignoreCase="true"/>
</transLogValidation>
</validationCriterion>
</registryOperation>
</RegistryOperationProfile>
<?xml version="1.0" encoding="UTF-8'"?>
<RegistryOperationProfile xmlns="xml.profile.sa.verisign.com"
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation="xml.profile.sa.verisign.com
RegistryOperationProfile.xsd">
<registryOperation>
<operationInfo>
<operationID transLogEntryExists="true">4</operationID>
<operationName>DEL-ORDER</operationName>
<conceptClassName>DeleteORDEROp</conceptClassName>
</operationInfo>
<databaseInfo>
<table name="TRANSACTION" optional="false">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>TRANSACTIONID</column>
<column>SESSIONID</column>
<column allowedValues="4">OPERATIONID</column>
<column>TRANSACTIONDATE</column>
</table>
<table name="TRANSACTION" optional="false">
<dbOperation max="1" min="1">UPDATE</dbOperation>
<column>SCN</column>
</table>
<table name="TRANSACTIONATTRIBUTES" optional="false" depends="TRANSACTION">
<dbOperation max="100" min="1">INSERT</dbOperation>
<column>TRANSACTIONID</column>
<column>ATTRIBUTE</column>
<column>ATTRIBUTEVALUE</column>
</table>
<table name="ORDER"optional="true" depends="TRANSACTION">
<dbOperation max="1" min="1">DELETE</dbOperation>
<column>ORDERID</column>
<column>ORDERNAME</column>
<column>REGISTRARID</column>
<column>REGISTRATIONPERIOD</column>
<column>REGISTRATIONEXPIRATIONDATE</column>
<column>TRANSACTIONID</column>
</table>
<table name="ORDER" optional="true" depends="TRANSACTION">
<dbOperation max="1" min="1">UPDATE</dbOperation>
<column>ORDERID</column>
<column>ORDERNAME</column>
<column>REGISTRARID</column>
<column>REGISTRATIONPERIOD</column>
<column>REGISTRATIONEXPIRATIONDATE</column>
<column>TRANSACTIONID</column>
</table>
<table name="ORDERAUDIT" optional="false" depends="ORDER">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>ORDERID</column>
<column>ORDERNAME</column>
<column>REGISTRARID</column>
<column>REGISTRATIONPERIOD</column>
<column>REGISTRATIONEXPIRATIONDATE</column>
<column>TRANSACTIONID</column>
</table>
<table name="ORDERSTATUS" optional="false" depends="ORDER">
<dbOperation max="1" min="1">DELETE</dbOperation>
<column>ORDERID</column>
<column>STATUSCODE</column>
</table>
<table name="ORDERSTATUS" optional="true" depends="ORDER">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>ORDERID</column>
<column>STATUSCODE</column>
</table>
<table name="ORDERSTATUSAUDIT" optional="false" depends="ORDERSTATUS">
<dbOperation max="10" min="1">INSERT</dbOperation>
<column>ORDERID</column>
<column>STATUSCODE</column>
</table>
<table name="LINEITEMSTATUS" optional="true" depends="LINEITEM">
<dbOperation max="1" min="1">DELETE</dbOperation>
<column>LINElTEMID</column>
<column>STATUSCODE</column>
</table>
<table name="LINEITEMSTATUSAUDIT" optional="true" depends="LINEITEMSTATUS">
<dbOperation max="10" min="1">INSERT</dbOperation>
<column>LINEITEMID</column>
<column>STATUSCODE</column>
</table>
<table name= "LINEITEM" optional="true" depends="ORDER">
<dbOperation max="1" min="1">DELETE</dbOperation>
<column>TRANSACTIONID</column>
<column>LINElTEMID</column>
</table>
<table name="LINEITEMAUDIT" optional="true" depends="ORDER">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>LINEITEMID</column>
<column>SERVERNAME</column>
<column>TRANSACTIONID</column>
<column>TRANSACTIONDATE</column>
</table>
<table name=ORDERLINEITEMLINK" optional="true" depends="ORDER">
<dbOperation max="1" min="1">DELETE</dbOperation>
<column>TRANSACTIONID</column>
<column>ORDERID</column>
<column>LINEITEMID</column>
</table>
<table name="ORDERLINEITEMLINKAUDIT" optional="true" depends="ORDER">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>TRANSACTIONID</column>
<column>ORDERID</column>
<column>LINEITEMID</column>
</table>
<table name="INTERNATIONALORDER" optional="true" depends="ORDER">
<dbOperation max="1" min="1">DELETE</dbOperation>
<column>ORDERID</column>
<column>INTERNATIONALORDERID</column>
</table>
<table name="INTERNATIONALORDERAUDIT" optional="true" depends="INTERNATIONALORDER">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>ORDERID</column>
<column>INTERNATIONALORDERID</column>
<column allowedValues="1,2,4,6,11,12,13">ENCODINGTYPEID</column>
</table>
<table name="INTERNATIONALLINEITEM" optional="true" depends="INTERNATIONALORDER">
<dbOperation max="1" min="1">DELETE</dbOperation>
<column>INTERNATIONALLINEITEMID</column>
</table>
<table name="INTERNATIONALLINEITEMAUDIT" optional="true" depends="INTERNATIONALORDER">
<dbOperation max="1" min="1 ">INSERT</dbOperation>
<column>TRANSACTIONID</column>
<column allowedValues="1,2,4,6,11,12,13">ENCODINGTYPEID</column>
</table>
<table name="CHARVARIANT" optional="true">
<dbOperation max="1" min="1">DELETE</dbOperation>
<column>VARIANTID</column>
</table>
<table name="CHARVARIANTAUDIT" optional="true" depends="CHARVARIANT">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>TRANSACTIONID</column>
<column>TRANSACTIONDATE</column>
<column>VARIANTID</column>
</table>
<table name="ORDERCHARVARIANTLINK" optional="true">
<dbOperation max="1" min="1">DELETE</dbOperation>
<column>ORDERID</column>
<column>VARIANTID</column>
</table>
<table name="ORDERCHARVARIANTLINKAUDIT" optional ="true" depends="ORDERCHARVARIANTLINK">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>TRANSACTIONID</column>
<column>TRANSACTIONDATE</column>
<column>ORDERID</column>
<column>VARIANTID</column>
</table>
<table name="COMPONENT" optional="true" depends="LINEITEM">
<dbOperation max="13" min="1">DELETE</dbOperation>
<column>COMPONENT</column>
</table>
<table name="COMPONENTAUDIT" optional="true" depends="COMPONENT">
<dbOperation max="13" min="1">INSERT</dbOperation>
<column>COMPONENT</column>
<column>TRANSACTIONID</column>
<column>TRANSACTIONDATE</column>
</table>
<table name="LINEITEMCOMPONENTLINK" optional="true" depends="LINEITEM">
<dbOperation max="13" min="1">DELETE</dbOperation>
<column>COMPONENT</column>
<column>LINEITEMID</column>
</table>
<table name="LINEITEMCOMPONENTLINKAUDIT" optional="true" depends="LINEITEMCOMPONENTLINK">
<dbOperation max="13" min="1">INSERT</dbOperation>
<column>COMPONENT</column>
<column>TRANSACTIONID</column>
<column>TRANSACTIONDATE</column>
</table>
<table name="ORDERTRACKING" optional="true" depends="ORDER">
<dbOperation max="1" min="1">DELETE</dbOperation>
<column>TRANSACTIONID</column>
<column>OPERATIONID</column>
<column>ORDERID</column>
<column>CREATEDDATE</column>
</table>
<mutuallyExclusive>
<table name="ORDER" dbOperation="UPDATE"/>
<table name="ORDER" dbOperation="DELETE"/>
</mutuallyExclusive>
</databaseInfo>
<validationCriterion>
<databaseValidation>
<referentialValidation ignore="false" knownIssue="false">
<masterTable name="TRANSACTION">
<dbOperation max="1" min="1">INSERT</dbOperation>
<masterColumn>TRANSACTIONID</masterColumn>
</masterTable>
<childTable name="TRANSACTIONATTRIBUTES">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>TRANSACTIONID</column>
</childTable>
<childTable name="ORDERAUDIT">
<dbOperation max="1" min="1">INSERT</dbOperation>
<column>TRANSACTIONID</column>
</childTable>
</referentialValidation>
</databaseValidation>
</validationCriterion>
<validationCriterion>
<transLogValidation ignore="false" knownIssue="false">
<tableName>TRANSACTION</tableName>
<dbOperation max="1" min="1">UPDATE</dbOperation>
<columnName>SCN</columnName>
<transLogEntryParam name="N/A"/>
</transLogValidation>
<transLogValidation ignore="false" knownIssue="true">
<tableName>ORDER</tableName>
<dbOperation max="1" min="1">DELETE</dbOperation>
<columnName>ORDERNAME</columnName>
<transLogEntryParam name="dm" ignoreCase="true"/>
</transLogValidation>
</validationCriterion>
</registryOperation>
</RegistryOperationProfile>
上記のプロファイルに基づき、一実施形態において、OLTPデータベースに記憶された適当なトランザクションに対して、多様な操作のステップが検証される。プロファイルは、データベースにデータを書き込むための操作がどのように進行すべきかを提示するため、データがこの正確なフォーマットで書き込まれない場合、セキュリティオーディタは、さらなる調査および/またはレポートのために、トランザクションを警告する。類似の構文は、アプリケーションサーバからデータベースへの保管の連鎖を確立するために、アプリケーショントランザクションログからデータベーストランザクションログへのマッピングのために使用される。
図20は、本発明の実施形態に従い、システムがセキュリティオーディタからの結果をレポートする簡易化されたブロック図である。登録システム2205からのデータは、セキュリティオーディタ2210に提供される。実施形態において、登録システムからのデータは、登録者のためにドメイン名を登録する、登録機関によって提供することができる。登録者データおよびそのようなデータをデータベースに記憶することの追加の検討は、本明細書全体に提供される。セキュリティオーディタ2210は、登録システム2205からのデータを処理し、異常が検出された場合、通知が24/7監視チーム2220に提供される。通知は、本明細書に説明される詳細および要約レポートまたは他の通知方法の形態をとることができる。
24/7監視チーム2220は、障害チケットを生成し、これは、障害チケットデータベース2222に記憶される場合がある。障害チケットデータベース2222は、システム実装に応じて、遠隔に配置される場合がある24/7監視チームと同一場所に配置することができる。セキュリティオーディタ2210からのレポートに関する情報は、24/7監視チームによって、運用/エンジニアリングチーム2230へ渡される。情報は、自動的に、または24/7監視チームによる見直し後に渡すことができる。いくつかの実施形態において、24/7監視チームによって生成される障害チケットは、運用/エンジニアリングチーム2230へ情報および通知を提供するために利用される。図示されるように、運用/エンジニアリングチームは、障害チケットデータベース2222へのアクセスを有する。セキュリティオーディタによって検出された問題の性質に応じて、例えば、登録者と連絡すること等によって、セキュリティオーディタ2210への更新、登録システム2205への更新を含む可能性がある、適切な処置がとられる。
また、本明細書に説明される例および実施形態は、説明の目的に過ぎないこと、それを考慮した多様な変形または変更は、当業者に示唆されるであろう、そして、本明細書の精神および権限ならびに添付の請求項の範囲内に含まれるものであることを理解されたい。
110・・・OLTPデータ
120・・・データベースバリデータ
130・・・データキャッシュ
140・・・データコリレータ
150・・・トランザクションログファイル
160・・・トランザクションログデータキャッシュ
170・・・レポートジェネレータ
120・・・データベースバリデータ
130・・・データキャッシュ
140・・・データコリレータ
150・・・トランザクションログファイル
160・・・トランザクションログデータキャッシュ
170・・・レポートジェネレータ
Claims (30)
- SRSレジストリトランザクションデータを検証するための方法であって、
第1のデータベースからOLTPトランザクションデータを受信することと、
前記OLTPトランザクションデータをパースすることと、
前記パースされたOLTPトランザクションデータを1組のプロファイルのうちの1つ以上と比較することであって、前記1組のプロファイルのうちの前記1つ以上の各々が、XMLファイルのメタデータを含む、比較することと、
前記パースされたOLTPトランザクションデータを第1のデータキャッシュにキャッシュすることと、
前記OLTPトランザクションデータに関連するログデータを受信することと、
前記ログデータを第2のデータキャッシュにキャッシュすることと、
前記第1のデータキャッシュにキャッシュされている前記パースされたトランザクションデータを、前記第2のデータキャッシュにキャッシュされている前記ログデータと相関させることと、を含む、方法。 - 検証エラーを判定することと、
前記検証エラーに関係する警告を生成することと、をさらに含む、
請求項1に記載の方法。 - 警告を生成することは、前記検証エラーを含む、少なくとも1つのレポートを生成することを含む、請求項2に記載の方法。
- 前記少なくとも1つのレポートは、詳細レポートを含む、請求項3に記載の方法。
- 前記第1のデータベースは、SRSレジストリデータベースを含む、請求項1に記載の方法。
- 前記OLTPトランザクションデータは、ドメイン名を追加すること、ドメイン名を削除すること、またはドメイン名を更新することのうちの少なくとも1つに関連するトランザクションデータを含む、請求項1に記載の方法。
- 前記1組のプロファイルは、ドメイン名を追加すること、ドメイン名を削除すること、またはドメイン名を更新することのうちの少なくとも1つのためのプロファイルを含む、請求項6に記載の方法。
- 前記OLTPトランザクションデータは、ドメインネームサーバを追加すること、ドメインネームサーバを削除すること、またはドメインネームサーバを変更することのうちの少なくとも1つに関連するトランザクションデータを含む、請求項1に記載の方法。
- 前記1組のプロファイルは、ドメインネームサーバを追加すること、ドメインネームサーバを削除すること、またはドメインネームサーバを変更することのうちの少なくとも1つのためのプロファイルを含む、請求項8に記載の方法。
- トランザクションデータを検証するための方法であって、
第1のデータベースから前記トランザクションデータを受信することと、
前記トランザクションデータをパースすることと、
前記パースされたトランザクションデータを1組のプロファイルのうちの1つ以上と比較することと、
前記トランザクションデータに関連するログデータを受信することと、
前記パースされたトランザクションデータを前記ログデータと相関させることと、を含む、方法。 - 前記トランザクションデータは、オンライントランザクション処理データを含む、請求項10に記載の方法。
- 前記1組のプロファイルのうちの各々が、メタデータを含む、請求項10に記載の方法。
- 前記メタデータは、XMLファイルの中に提供される、請求項12に記載の方法。
- 前記パースされたトランザクションデータを前記ログデータと相関させる前に、前記パースされたトランザクションデータをキャッシュすることをさらに含む、請求項10に記載の方法。
- 前記パースされたトランザクションデータを前記ログデータと相関させる前に、前記ログデータをキャッシュすることをさらに含む、請求項10に記載の方法。
- 検証エラーを判定することをさらに含む、請求項10に記載の方法。
- 前記検証エラーに基づいて少なくとも1つのレポートを提供することをさらに含む、請求項16に記載の方法。
- トランザクションログデータベースに記憶されたトランザクションログファイルを有するSRSレジストリデータベースに関連するトランザクションデータを検証するためのシステムであって、
前記SRSレジストリデータベースからOLTPトランザクションデータを受信し、前記OLTPトランザクションデータをパースするように動作可能なデータベースリーダと、
前記データベースリーダに結合され、前記パースされたOLTPトランザクションデータを1組のプロファイルのうちの1つ以上と比較するように動作可能なデータベースデータバリデータと、
前記トランザクションログデータベースからトランザクションログファイルを受信するように動作可能なトランザクションログファイルリーダと、
前記データベースデータバリデータおよび前記トランザクションログファイルリーダに結合され、前記パースされたトランザクションデータを前記トランザクションログファイルと相関させるように動作可能なデータコリレータと、を備える、システム。 - 前記1組のプロファイルのうちの前記1つ以上の各々が、XMLファイルの中のメタデータを含む、請求項18に記載のシステム。
- 前記データベースデータバリデータに結合される第1のデータキャッシュをさらに含む、請求項18に記載のシステム。
- 前記トランザクションログファイルリーダに結合される第2のデータキャッシュをさらに含む、請求項18に記載のシステム。
- 前記データコリレータに結合されるレポートジェネレータをさらに含む、請求項18に記載のシステム。
- トランザクションデータを検証するようにデータプロセッサを制御するための複数の命令を記憶するコンピュータ可読媒体であって、前記複数の命令は、
前記データプロセッサに、第1のデータベースから前記トランザクションデータを受信させる命令と、
前記データプロセッサに、前記トランザクションデータをパースさせる命令と、
前記データプロセッサに、前記パースされたトランザクションデータを1組のプロファイルのうちの1つ以上と比較させる命令と、
前記データプロセッサに、前記トランザクションデータに関連するログデータを受信させる命令と、
前記データプロセッサに、前記パースされたトランザクションデータを前記ログデータと相関させる命令と、を含む、コンピュータ可読媒体。 - 前記トランザクションデータは、オンライントランザクション処理データを含む、請求項23に記載のコンピュータ可読媒体。
- 前記1組のプロファイルのうちの各々が、メタデータを含む、請求項23に記載のコンピュータ可読媒体。
- 前記メタデータは、XMLファイルの中に提供される、請求項25に記載のコンピュータ可読媒体。
- 前記パースされたトランザクションデータを前記ログデータと相関させる前に、前記データプロセッサに、前記パースされたトランザクションデータをキャッシュさせる命令をさらに含む、請求項23に記載のコンピュータ可読媒体。
- 前記パースされたトランザクションデータを前記ログデータと相関させる前に、前記データプロセッサに、前記ログデータをキャッシュさせる命令をさらに含む、請求項23に記載のコンピュータ可読媒体。
- 前記データプロセッサに、検証エラーを判定させる命令をさらに含む、請求項23に記載のコンピュータ可読媒体。
- 前記データプロセッサに、前記検証エラーに基づいて少なくとも1つのレポートを提供させる命令をさらに含む、請求項29に記載のコンピュータ可読媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/484,978 US8510263B2 (en) | 2009-06-15 | 2009-06-15 | Method and system for auditing transaction data from database operations |
US12/484,978 | 2009-06-15 | ||
PCT/US2010/037715 WO2010147794A1 (en) | 2009-06-15 | 2010-06-08 | Method and system for auditing transaction data from database operations |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012530288A true JP2012530288A (ja) | 2012-11-29 |
Family
ID=43307466
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012515035A Pending JP2012530288A (ja) | 2009-06-15 | 2010-06-08 | データベース操作からのトランザクションデータを監査するための方法およびシステム |
Country Status (8)
Country | Link |
---|---|
US (2) | US8510263B2 (ja) |
EP (1) | EP2443597A4 (ja) |
JP (1) | JP2012530288A (ja) |
KR (1) | KR20120099335A (ja) |
CN (1) | CN102460441A (ja) |
AU (1) | AU2010260399B2 (ja) |
CA (1) | CA2764510A1 (ja) |
WO (1) | WO2010147794A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018530172A (ja) * | 2015-07-24 | 2018-10-11 | グーグル エルエルシー | 位置センサの精度を改善するためのシステムおよび方法 |
Families Citing this family (63)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IL161722A0 (en) | 2001-11-01 | 2005-11-20 | Verisign Inc | Method and system for validting remote database |
US9292612B2 (en) | 2009-04-22 | 2016-03-22 | Verisign, Inc. | Internet profile service |
US8527945B2 (en) | 2009-05-07 | 2013-09-03 | Verisign, Inc. | Method and system for integrating multiple scripts |
US8510263B2 (en) | 2009-06-15 | 2013-08-13 | Verisign, Inc. | Method and system for auditing transaction data from database operations |
US8904519B2 (en) * | 2009-06-18 | 2014-12-02 | Verisign, Inc. | Shared registration system multi-factor authentication |
US8977705B2 (en) * | 2009-07-27 | 2015-03-10 | Verisign, Inc. | Method and system for data logging and analysis |
US8327019B2 (en) | 2009-08-18 | 2012-12-04 | Verisign, Inc. | Method and system for intelligent routing of requests over EPP |
US8856344B2 (en) | 2009-08-18 | 2014-10-07 | Verisign, Inc. | Method and system for intelligent many-to-many service routing over EPP |
US8175098B2 (en) | 2009-08-27 | 2012-05-08 | Verisign, Inc. | Method for optimizing a route cache |
US8352796B2 (en) | 2009-09-17 | 2013-01-08 | At&T Intellectual Property I, L.P. | Selective logging based on set parameter |
US9569753B2 (en) | 2009-10-30 | 2017-02-14 | Verisign, Inc. | Hierarchical publish/subscribe system performed by multiple central relays |
US8982882B2 (en) | 2009-11-09 | 2015-03-17 | Verisign, Inc. | Method and system for application level load balancing in a publish/subscribe message architecture |
US9269080B2 (en) | 2009-10-30 | 2016-02-23 | Verisign, Inc. | Hierarchical publish/subscribe system |
US9235829B2 (en) | 2009-10-30 | 2016-01-12 | Verisign, Inc. | Hierarchical publish/subscribe system |
US9047589B2 (en) | 2009-10-30 | 2015-06-02 | Verisign, Inc. | Hierarchical publish and subscribe system |
US9762405B2 (en) | 2009-10-30 | 2017-09-12 | Verisign, Inc. | Hierarchical publish/subscribe system |
US8504526B2 (en) * | 2010-06-04 | 2013-08-06 | Commvault Systems, Inc. | Failover systems and methods for performing backup operations |
US11449394B2 (en) | 2010-06-04 | 2022-09-20 | Commvault Systems, Inc. | Failover systems and methods for performing backup operations, including heterogeneous indexing and load balancing of backup and indexing resources |
US20120110011A1 (en) * | 2010-10-29 | 2012-05-03 | Ihc Intellectual Asset Management, Llc | Managing application access on a computing device |
US8650150B2 (en) * | 2011-03-14 | 2014-02-11 | Sap Ag | System and method of relating data and generating reports |
US9092482B2 (en) | 2013-03-14 | 2015-07-28 | Palantir Technologies, Inc. | Fair scheduling for mixed-query loads |
US8719232B2 (en) * | 2011-06-30 | 2014-05-06 | Verisign, Inc. | Systems and methods for data integrity checking |
US9367833B2 (en) * | 2011-07-14 | 2016-06-14 | Invention Science Fund I, Llc | Data services outsourcing verification |
US8504542B2 (en) * | 2011-09-02 | 2013-08-06 | Palantir Technologies, Inc. | Multi-row transactions |
US20130246376A1 (en) * | 2012-03-16 | 2013-09-19 | Infosys Limited | Methods for managing data intake and devices thereof |
US8825664B2 (en) | 2012-08-17 | 2014-09-02 | Splunk Inc. | Indexing preview |
US9037556B2 (en) * | 2012-12-03 | 2015-05-19 | Vmware, Inc. | Distributed, transactional key-value store |
US9721086B2 (en) | 2013-03-15 | 2017-08-01 | Advanced Elemental Technologies, Inc. | Methods and systems for secure and reliable identity-based computing |
US9378065B2 (en) * | 2013-03-15 | 2016-06-28 | Advanced Elemental Technologies, Inc. | Purposeful computing |
US9146946B2 (en) * | 2013-05-09 | 2015-09-29 | International Business Machines Corporation | Comparing database performance without benchmark workloads |
CN104036034A (zh) * | 2014-06-30 | 2014-09-10 | 百度在线网络技术(北京)有限公司 | 用于数据仓库的日志分析方法和装置 |
US10528596B2 (en) * | 2014-09-26 | 2020-01-07 | Oracle International Corporation | System and method for consistent reads between tasks in a massively parallel or distributed database environment |
US10394818B2 (en) | 2014-09-26 | 2019-08-27 | Oracle International Corporation | System and method for dynamic database split generation in a massively parallel or distributed database environment |
US10387421B2 (en) | 2014-09-26 | 2019-08-20 | Oracle International Corporation | System and method for generating size-based splits in a massively parallel or distributed database environment |
GB201504710D0 (en) * | 2015-03-20 | 2015-05-06 | Ibm | Establishing transaction metadata |
CN106161066A (zh) * | 2015-04-13 | 2016-11-23 | 中国移动通信集团福建有限公司 | 一种日志采集方法及服务器 |
KR102409202B1 (ko) * | 2015-07-21 | 2022-06-15 | 삼성전자주식회사 | 전자 장치 및 전자 장치에서 폴더 내 객체를 관리하기 위한 방법 |
US9716697B2 (en) * | 2015-07-24 | 2017-07-25 | Google Inc. | Generating bridge match identifiers for linking identifiers from server logs |
US10476993B2 (en) * | 2015-08-12 | 2019-11-12 | Blackberry Limited | Method and system for transaction diagnostics |
US10891258B2 (en) * | 2016-03-22 | 2021-01-12 | Tata Consultancy Services Limited | Systems and methods for de-normalized data structure files based generation of intelligence reports |
CN107231337B (zh) * | 2016-03-25 | 2020-05-22 | 阿里巴巴集团控股有限公司 | 应用于金融报文的校验方法和装置 |
US11256572B2 (en) * | 2017-01-23 | 2022-02-22 | Honeywell International Inc. | Systems and methods for processing data in security systems using parallelism, stateless queries, data slicing, or asynchronous pull mechanisms |
US10897475B2 (en) * | 2017-08-10 | 2021-01-19 | Cisco Technology, Inc. | DNS metadata-based signaling for network policy control |
US11182394B2 (en) | 2017-10-30 | 2021-11-23 | Bank Of America Corporation | Performing database file management using statistics maintenance and column similarity |
US10922430B2 (en) * | 2018-07-16 | 2021-02-16 | Beijing Didi Infinity Technology And Development Co., Ltd. | System and method for data security grading |
SG11202102413PA (en) * | 2018-09-25 | 2021-04-29 | Ab Initio Technology Llc | A dedicated audit port for implementing recoverability in outputting audit data |
US11086840B2 (en) | 2018-12-07 | 2021-08-10 | Snowflake Inc. | Transactional streaming of change tracking data |
US12014360B2 (en) | 2018-12-20 | 2024-06-18 | Lukka, Inc. | Gain and loss computation for cryptocurrency transactions |
JP7373142B2 (ja) * | 2018-12-20 | 2023-11-02 | ルッカ,インコーポレイテッド | 暗号通貨トランザクションに関する損益計算 |
US20210056549A1 (en) * | 2019-08-19 | 2021-02-25 | Lukka, Inc. | Gain and loss computation for cryptocurrency transactions |
US10769220B1 (en) | 2019-04-09 | 2020-09-08 | Coupang Corp. | Systems, apparatuses, and methods of processing and managing web traffic data |
CN110377571B (zh) * | 2019-06-24 | 2021-10-22 | 苏州浪潮智能科技有限公司 | 一种违规日志处理方法、装置和计算机可读存储介质 |
US11461484B2 (en) | 2019-12-30 | 2022-10-04 | Imperva, Inc. | Capturing contextual information for data accesses to improve data security |
CN111078675B (zh) * | 2020-03-23 | 2021-08-10 | 绿城科技产业服务集团有限公司 | 一种多维度的综合数据库sql审核及优化方法和系统 |
US11023607B1 (en) * | 2020-04-03 | 2021-06-01 | Imperva, Inc. | Detecting behavioral anomalies in user-data access logs |
CN112162832B (zh) * | 2020-09-08 | 2024-02-09 | 北京人大金仓信息技术股份有限公司 | 多版本并发控制下实现审计数据存储的方法和装置 |
US12026172B2 (en) | 2020-12-15 | 2024-07-02 | Bank Of America Corporation | System and method for automatically validating data stored in multiple locations |
US20220245120A1 (en) * | 2021-02-03 | 2022-08-04 | Southern California Software Labs, LLC | Automated generation of audit log with application-level metadata using replication log of a database |
US11263206B1 (en) | 2021-03-02 | 2022-03-01 | Coupang Corp. | Systems and methods for multi-nodal stream processing framework for partitioned database |
CN112989781B (zh) * | 2021-03-11 | 2023-11-24 | 携程旅游网络技术(上海)有限公司 | 表单数据自动执行方法、装置、电子设备、存储介质 |
US20230088462A1 (en) * | 2021-09-20 | 2023-03-23 | Salesforce, Inc. | Semantic metadata validation |
JP2025517883A (ja) | 2022-05-20 | 2025-06-12 | アドバンスド エレメンタル テクノロジーズ,インコーポレイティド | 人間の実存的に近い又は実存的なバイオメトリック識別を使用するコネクティッドコンピューティングリソース及びイベント/活動識別情報インフラストラクチャのためのシステム及び方法 |
US12360942B2 (en) | 2023-01-19 | 2025-07-15 | Commvault Systems, Inc. | Selection of a simulated archiving plan for a desired dataset |
Family Cites Families (72)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6760746B1 (en) | 1999-09-01 | 2004-07-06 | Eric Schneider | Method, product, and apparatus for processing a data request |
ATE381846T1 (de) * | 1999-03-03 | 2008-01-15 | Ultradns Inc | Skalierbare und effiziente domainnamenauflösung |
US6338082B1 (en) | 1999-03-22 | 2002-01-08 | Eric Schneider | Method, product, and apparatus for requesting a network resource |
US9141717B2 (en) | 1999-03-22 | 2015-09-22 | Esdr Network Solutions Llc | Methods, systems, products, and devices for processing DNS friendly identifiers |
US8037168B2 (en) | 1999-07-15 | 2011-10-11 | Esdr Network Solutions Llc | Method, product, and apparatus for enhancing resolution services, registration services, and search services |
US7188138B1 (en) | 1999-03-22 | 2007-03-06 | Eric Schneider | Method, product, and apparatus for resource identifier registration and aftermarket services |
USRE43690E1 (en) | 1999-03-22 | 2012-09-25 | Esdr Network Solutions Llc | Search engine request method, product, and apparatus |
WO2000065511A2 (en) * | 1999-04-22 | 2000-11-02 | Network Solutions, Inc. | A shared registration system for registering domain names |
USRE44207E1 (en) | 1999-09-01 | 2013-05-07 | Esdr Network Solutions Llc | Network resource access method, product, and apparatus |
KR100751622B1 (ko) * | 1999-11-26 | 2007-08-22 | 네테카 인코포레이티드 | 네트워크 어드레스 서버, 도메인 명칭 분석 방법, 및 컴퓨터 판독 가능 기록 매체 |
US6643652B2 (en) * | 2000-01-14 | 2003-11-04 | Saba Software, Inc. | Method and apparatus for managing data exchange among systems in a network |
US20020116205A1 (en) * | 2000-05-19 | 2002-08-22 | Ankireddipally Lakshmi Narasimha | Distributed transaction processing system |
US7734815B2 (en) * | 2006-09-18 | 2010-06-08 | Akamai Technologies, Inc. | Global load balancing across mirrored data centers |
US7725602B2 (en) * | 2000-07-19 | 2010-05-25 | Akamai Technologies, Inc. | Domain name resolution using a distributed DNS network |
US7227950B2 (en) * | 2001-02-27 | 2007-06-05 | Visa International Service Association | Distributed quantum encrypted pattern generation and scoring |
IL161722A0 (en) | 2001-11-01 | 2005-11-20 | Verisign Inc | Method and system for validting remote database |
US7565402B2 (en) | 2002-01-05 | 2009-07-21 | Eric Schneider | Sitemap access method, product, and apparatus |
JP3791464B2 (ja) * | 2002-06-07 | 2006-06-28 | ソニー株式会社 | アクセス権限管理システム、中継サーバ、および方法、並びにコンピュータ・プログラム |
US7512585B2 (en) * | 2002-07-11 | 2009-03-31 | Oracle International Corporation | Support for multiple mechanisms for accessing data stores |
US7734745B2 (en) * | 2002-10-24 | 2010-06-08 | International Business Machines Corporation | Method and apparatus for maintaining internet domain name data |
US20050105513A1 (en) * | 2002-10-27 | 2005-05-19 | Alan Sullivan | Systems and methods for direction of communication traffic |
US7310686B2 (en) * | 2002-10-27 | 2007-12-18 | Paxfire, Inc. | Apparatus and method for transparent selection of an Internet server based on geographic location of a user |
US20050027882A1 (en) * | 2003-05-05 | 2005-02-03 | Sullivan Alan T. | Systems and methods for direction of communication traffic |
US20040215695A1 (en) * | 2003-03-31 | 2004-10-28 | Sue-Chen Hsu | Method and system for implementing accurate and convenient online transactions in a loosely coupled environments |
US7761570B1 (en) * | 2003-06-26 | 2010-07-20 | Nominum, Inc. | Extensible domain name service |
US7769826B2 (en) * | 2003-06-26 | 2010-08-03 | Nominum, Inc. | Systems and methods of providing DNS services using separate answer and referral caches |
US8799225B2 (en) * | 2003-11-05 | 2014-08-05 | Lumigent Technologies, Inc. | Process and system for auditing database activity |
US7543739B2 (en) * | 2003-12-17 | 2009-06-09 | Qsecure, Inc. | Automated payment card fraud detection and location |
WO2005069823A2 (en) | 2004-01-15 | 2005-08-04 | Jun Song | Centralized transactional security audit for enterprise systems |
EP1738314A4 (en) * | 2004-03-19 | 2009-12-02 | Oversight Technologies Inc | METHOD AND SYSTEMS FOR TRANSACTION MONITORING MONITORING |
US7383230B2 (en) * | 2004-04-23 | 2008-06-03 | Wolff Gregory J | System and method for the efficient exchange and pricing of services and intangible works |
US7761678B1 (en) * | 2004-09-29 | 2010-07-20 | Verisign, Inc. | Method and apparatus for an improved file repository |
US7685270B1 (en) * | 2005-03-31 | 2010-03-23 | Amazon Technologies, Inc. | Method and apparatus for measuring latency in web services |
AU2006251563A1 (en) * | 2005-05-24 | 2006-11-30 | Paxfire, Inc. | Enhanced features for direction of communication traffic |
US7546368B2 (en) * | 2005-06-01 | 2009-06-09 | Neustar, Inc. | Systems and methods for isolating local performance variation in website monitoring |
EP1732034A1 (en) * | 2005-06-06 | 2006-12-13 | First Data Corporation | System and method for authorizing electronic payment transactions |
US8122035B2 (en) * | 2005-06-28 | 2012-02-21 | International Business Machines Corporation | Method and system for transactional fingerprinting in a database system |
US7987251B2 (en) * | 2005-09-16 | 2011-07-26 | Microsoft Corporation | Validation of domain name control |
US7477575B2 (en) * | 2005-09-23 | 2009-01-13 | Verisign, Inc. | Redundant timer system and method |
EP1929805B1 (en) * | 2005-09-27 | 2017-11-15 | Morgan Stanley | Mobile enterprise applications over telephony systems and methods |
US7933951B2 (en) * | 2006-01-20 | 2011-04-26 | Paxfire, Inc. | Systems and methods for discerning and controlling communication traffic |
US8606926B2 (en) * | 2006-06-14 | 2013-12-10 | Opendns, Inc. | Recursive DNS nameserver |
US8713188B2 (en) * | 2007-12-13 | 2014-04-29 | Opendns, Inc. | Per-request control of DNS behavior |
US20080133729A1 (en) * | 2006-08-17 | 2008-06-05 | Neustar, Inc. | System and method for managing domain policy for interconnected communication networks |
WO2008021512A2 (en) * | 2006-08-17 | 2008-02-21 | Neustar, Inc. | System and method for handling jargon in communication systems |
US8234379B2 (en) * | 2006-09-14 | 2012-07-31 | Afilias Limited | System and method for facilitating distribution of limited resources |
US20080147559A1 (en) * | 2006-11-30 | 2008-06-19 | Cohen Alexander J | Data services outsourcing verification |
US20100030897A1 (en) * | 2006-12-20 | 2010-02-04 | Rob Stradling | Method and System for Installing a Root Certificate on a Computer With a Root Update Mechanism |
US7694016B2 (en) * | 2007-02-07 | 2010-04-06 | Nominum, Inc. | Composite DNS zones |
US8190572B2 (en) * | 2007-02-15 | 2012-05-29 | Yahoo! Inc. | High-availability and data protection of OLTP databases |
WO2009052408A2 (en) * | 2007-10-18 | 2009-04-23 | Neustar, Inc. | System and method for sharing web performance monitoring data |
US20090138397A1 (en) * | 2007-11-23 | 2009-05-28 | Bansi Lal Sharma | Credit card payment system and method |
US20090235359A1 (en) * | 2008-03-12 | 2009-09-17 | Comodo Ca Limited | Method and system for performing security and vulnerability scans on devices behind a network security device |
US7925782B2 (en) * | 2008-06-30 | 2011-04-12 | Amazon Technologies, Inc. | Request routing using network computing components |
US20090282038A1 (en) * | 2008-09-23 | 2009-11-12 | Michael Subotin | Probabilistic Association Based Method and System for Determining Topical Relatedness of Domain Names |
US9172713B2 (en) * | 2008-09-24 | 2015-10-27 | Neustar, Inc. | Secure domain name system |
US7930393B1 (en) * | 2008-09-29 | 2011-04-19 | Amazon Technologies, Inc. | Monitoring domain allocation performance |
US20100082490A1 (en) * | 2008-09-30 | 2010-04-01 | Apple Inc. | Systems and methods for secure wireless transactions |
US8521908B2 (en) * | 2009-04-07 | 2013-08-27 | Verisign, Inc. | Existent domain name DNS traffic capture and analysis |
US9292612B2 (en) * | 2009-04-22 | 2016-03-22 | Verisign, Inc. | Internet profile service |
US8676989B2 (en) * | 2009-04-23 | 2014-03-18 | Opendns, Inc. | Robust domain name resolution |
US8527945B2 (en) * | 2009-05-07 | 2013-09-03 | Verisign, Inc. | Method and system for integrating multiple scripts |
US8510263B2 (en) | 2009-06-15 | 2013-08-13 | Verisign, Inc. | Method and system for auditing transaction data from database operations |
US8904519B2 (en) | 2009-06-18 | 2014-12-02 | Verisign, Inc. | Shared registration system multi-factor authentication |
US8977705B2 (en) * | 2009-07-27 | 2015-03-10 | Verisign, Inc. | Method and system for data logging and analysis |
US8380870B2 (en) * | 2009-08-05 | 2013-02-19 | Verisign, Inc. | Method and system for filtering of network traffic |
US20110035497A1 (en) * | 2009-08-05 | 2011-02-10 | Dynamic Network Services, Inc. | System and method for providing global server load balancing |
US8327019B2 (en) * | 2009-08-18 | 2012-12-04 | Verisign, Inc. | Method and system for intelligent routing of requests over EPP |
US8175098B2 (en) * | 2009-08-27 | 2012-05-08 | Verisign, Inc. | Method for optimizing a route cache |
US8982882B2 (en) * | 2009-11-09 | 2015-03-17 | Verisign, Inc. | Method and system for application level load balancing in a publish/subscribe message architecture |
US9047589B2 (en) * | 2009-10-30 | 2015-06-02 | Verisign, Inc. | Hierarchical publish and subscribe system |
US9286369B2 (en) * | 2009-12-30 | 2016-03-15 | Symantec Corporation | Data replication across enterprise boundaries |
-
2009
- 2009-06-15 US US12/484,978 patent/US8510263B2/en active Active
-
2010
- 2010-06-08 WO PCT/US2010/037715 patent/WO2010147794A1/en active Application Filing
- 2010-06-08 CA CA2764510A patent/CA2764510A1/en not_active Abandoned
- 2010-06-08 KR KR1020117030865A patent/KR20120099335A/ko not_active Ceased
- 2010-06-08 CN CN2010800363791A patent/CN102460441A/zh active Pending
- 2010-06-08 JP JP2012515035A patent/JP2012530288A/ja active Pending
- 2010-06-08 AU AU2010260399A patent/AU2010260399B2/en active Active
- 2010-06-08 EP EP10789942A patent/EP2443597A4/en not_active Withdrawn
-
2013
- 2013-08-09 US US13/963,339 patent/US9535971B2/en active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018530172A (ja) * | 2015-07-24 | 2018-10-11 | グーグル エルエルシー | 位置センサの精度を改善するためのシステムおよび方法 |
Also Published As
Publication number | Publication date |
---|---|
US20140074772A1 (en) | 2014-03-13 |
US9535971B2 (en) | 2017-01-03 |
AU2010260399B2 (en) | 2014-08-14 |
US20100318858A1 (en) | 2010-12-16 |
CA2764510A1 (en) | 2010-12-23 |
WO2010147794A1 (en) | 2010-12-23 |
CN102460441A (zh) | 2012-05-16 |
AU2010260399A1 (en) | 2012-01-19 |
KR20120099335A (ko) | 2012-09-10 |
EP2443597A4 (en) | 2013-01-09 |
EP2443597A1 (en) | 2012-04-25 |
US8510263B2 (en) | 2013-08-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2012530288A (ja) | データベース操作からのトランザクションデータを監査するための方法およびシステム | |
US11188619B2 (en) | Single click delta analysis | |
US11526487B2 (en) | Database world state integrity validation | |
US9633106B1 (en) | Log data analysis | |
EP1484695B1 (en) | Automatic task generator method and system | |
US8626778B2 (en) | System and method for conversion of JMS message data into database transactions for application to multiple heterogeneous databases | |
US11847110B2 (en) | Method and system for supporting data consistency on an active standby database after DML redirection to a primary database | |
US7774361B1 (en) | Effective aggregation and presentation of database intrusion incidents | |
US11671262B2 (en) | Asynchronously determining relational data integrity using cryptographic data structures | |
US9747288B1 (en) | Scalable transaction-based data repository service | |
CN104063756A (zh) | 远程用电信息控制系统 | |
US7779300B2 (en) | Server outage data management | |
US20230034426A1 (en) | Method, system, and computer program product for implementing a standby database with real-time secure subsetting | |
US20160283584A1 (en) | Grouping of Database Objects | |
US8041687B2 (en) | Dynamic generation of XML Schema for backend driven data validation | |
Ogle et al. | Canonical situation data format: The common base event v1. 0.1 | |
Cisco | Appendix A: Error and Event Messages | |
Smirnov et al. | A portable implementation framework for intrusion-resilient database management systems | |
US7765230B2 (en) | Method and system for managing data | |
Chu et al. | Design and implementation of a website security monitoring system from users' perspective | |
Mensah et al. | Oracle9i Application Server Best Practices, Release 2 (9.0. 3) Part No. B10578-02 Copyright© 2003 Oracle Corporation. All rights reserved. Contributing Author: Jesse Anton, Jerry Bortvedt, Alice Chan, Christine Chan, Lee Cooper, Helen Grembowicz, Kurt Heiss, Pavana Jain, Valerie Kane, John Lang, Bill Lankenau, Bruce Lowenthal, Kuassi |