このトピックでは、NetWitnessコア データベースの概要について説明します。NetWitnessコア サービスには、NetWitness Suite製品専用に開発された独自のデータベースが含まれます。このデータベースでは、従来のリレーショナル データベースとの共通点が少なく、既存のデータベース テクノロジーも使用されていません。この点が、多くのユーザがコア データベースの動作や活用方法を理解することを難しくしています。このガイドの目的は、NetWitness Suiteのユーザがデータベースを理解し、最大限に活用できるよう支援することです。
システム管理者は、ここで紹介する情報を参考に、NetWitness Suiteの導入計画を立て、パフォーマンスを最大限に引き出すためのチューニングを実施することができます。アナリストは、より構造化された解析手法を用いたレポートの作成と迅速化を図るためにこのガイドを役立てることができます。コンテンツ開発者は、このガイドを参考にすることで、データベース システムが効率よく処理できるようなコンテンツの作成が可能となります。
このガイドで対象とするNetWitness Suite製品
このガイドでは、NetWitness Suite 11.0の機能について説明します。次のNetWitness Suiteコンポーネントには、コア データベースが含まれています。
- Concentrator
- Archiver
- Decoder
- Log Decoder
- Workbench
用語説明
ここでは、このドキュメントで使用されている用語の定義を示します。NetWitness Suiteシステムに追加される順序で記載しています。
- パケット データベース :パケット データベースには、RAW形式の収集データが格納されます。Decoderでは、パケットがネットワークから収集されたままの状態でパケット データベースに格納されます。Log Decoderは、パケット データベースを使用してrawログを格納します。パケット データベースに格納されたRAWデータには、パケットIDでアクセスできます。ただし、このIDは通常、エンド ユーザからは見えません。
- パケットID :パケット データベース内のパケットやログを一意に識別するための数値。
- メタ データベース :メタ データベースには、DecoderまたはLog DecoderによってRAWデータ ストリームから抽出された情報が格納されます。メタ アイテムは、Parser、ルール、Feedが生成します。
- メタID :メタ データベース内のメタ アイテムを一意に識別するための数値。
- メタ キー :各メタ アイテムのタイプをクラス分けするための名前。よく使用されるメタ キーとして、ip.src、time、serviceなどがあります。
- メタ値 :それぞれのメタ アイテムには、値が格納されています。個々のParser、Feed、ルールによって生成される内容がこの値によって表されます。
- セッション データベース :セッション データベースには、セッションに対してパケットとメタ アイテムを関連づける情報が格納されます。
- セッション :Packet Decoderでは、セッションが、単一の論理ネットワーク ストリームを表します。たとえば、TCP/IP接続は1つのセッションです。Log Decoderでは、各ログ イベントが1つのセッションになります。それぞれのセッションには、そのセッションを示すすべてのパケットIDとメタIDへの参照が含まれています。
- セッションID :セッション データベース内のセッションを一意に識別するための数値。
- インデックス :インデックスは一連のファイルの集合で構成され、メタ値を使用してセッションIDを検索する手段を提供します。
- コア データベース :パケット、メタ、セッション、インデックスの組み合わせを指します。
このドキュメントでは、構文の定義に EBNF 文法を使用しています。
NetWitnessコア データベースの歴史
コア データベースは、パケット キャプチャ システム用にNetWitness(現RSA)が開発したものです。NetWitnessの創業間もない頃、開発者たちは、既存のデータベース テクノロジーでは、フル パケット キャプチャに伴う高速な取り込みに対応していくことが難しいだろうと考えました。当時のデータベース テクノロジーでは要求される収集速度に追い付かず、絶えず収集されるセッションの数に対応しきれていませんでした。さらに、パケットごとに分類を行うことなど、到底できません。同様に、データのボリュームの面でも、保存したパケットは利用後すぐに破棄し、記憶域を再利用しなければなりませんでした。つまり、当時のデータベースには速度と記憶域の二重の弱点がありました。そこで、NetWitnessは、パケット データベース、セッション データベース、メタ データベースから成るデータベースを作成しました。
NetWitnessのデータベースには、NetWitness Investigatorの分析機能を実現するために、メタ インデックスが追加されました。このインデックスは、元のデータベースと同じ設計目標を共有し、大規模な大量のインデックスに対しても、極めて高い収集レートを維持する設計になっています。
このインデックスは、年月を重ね、かなりの進化を遂げています。初期のバージョンのインデックスは、メタ データベースに一意に存在するメタ値の数について、おおよその値を推定する機能しかありませんでした。また、期待に沿ったクエリ パフォーマンスがなかなか実現できず、対応に苦慮したバージョンもありました。たとえば、レポートの作成は数秒で完了することが期待されますが、NetWitness 9.0では、数分かかることも珍しくありませんでした。一方、最新バージョンのインデックスは、NetWitness 9.0のインデックスの設計思想を継承しながらも、期待されるパフォーマンスを満たすよう向上が図られ、新機能も追加されるなど、大幅な進化を遂げています。
コア データベースの長所と短所
長所:
- 高い収集レートを維持し、一括挿入時のダウンタイムが不要。
- 優れたクエリ パフォーマンスと高い収集レートを両立。
- 古いデータの自動クリーンアップとロールオーバー、最小限のフラグメンテーション。
- 多数のメタ値インデックス(Concentratorでは、デフォルトで100以上)。
- シングル ノード内でペタバイト級のデータベース サイズとテラバイト級のインデックス サイズに拡張できるスケーラビリティ。
- メタ キー/値ペアを使用して、セッション内に任意のメタ アイテムを格納できる高い柔軟性。セッションを使用することで、ほぼすべての種類のデータ レコードを表現することが可能です。
短所:
- クエリの機能が限定され、複雑なクエリに対応しきれていない。
- パケット、メタ、セッションのデータベース スキーマが固定され、カスタマイズはすべてカスタム メタ キーと値によって行う必要がある。
- 多くのSQLデータベースに見られるようなトランザクションの原子性保証がない。