以下、添付図面を参照して本発明の実施形態を説明する。本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。
本実施例は、分析プログラムの配信元計算機及び配信先計算機において、ネットワークI/O記録&フィルタプログラムを実行する。本実施例において、分析プログラム及び分析結果確認プログラムは、それぞれ、配信先計算機及び配信元計算機において、仮想マシンにおいて実行される。Hypervisor及びネットワークI/O記録&フィルタプログラムは、ホストOS上で動作する。
配信先計算機に実行されるネットワークI/O記録&フィルタプログラムは、分析プログラムが発行するI/O(機密データ漏洩)を監視する。分析プログラム及び仮想マシンは、それぞれパケットの送信元である。配信元計算機に実行されるネットワークI/O記録&フィルタプログラムは、分析結果確認プログラムが発行するI/O(機密データ漏洩)を監視する。分析結果確認プログラム及び仮想マシンは、それぞれパケットの送信元である。
顧客管理者は、ネットワークにおけるセキュリティ境界(データシールド)を予め定義する。データシールド内においては、機密データを含むデータの移動が許可されている。データシールド境界のノード及びデータシールド内のノードが管理情報において管理される。本例において、データシールドは、これらノードにより定義される。以下に説明する例において、データシールドは、ネットワークアドレスの一例であるIPアドレスにより定義される。
例えば、配信先計算機、配信元計算機、分析プログラムが分析するデータを格納する拠点データベースは、データシールド内の計算機である。後述する例において、プロキシサーバがデータシールド境界の計算機として定義される。
ネットワークI/O記録&フィルタプログラムは、監視対処プログラムから送信されるパケットを、送信先ノードのデータシールドにおける位置に基づいて、フィルタリングする。パケットは、ネットワークを転送されるデータユニットであって、任意の通信プロトコルレイヤのデータユニットである。
以下に説明する例において、ネットワークI/O記録&フィルタプログラムは、データシールド外のノード(IPアドレス)を宛先とするパケットをブロック(破棄)する。これにより、データ漏洩監視のための負荷を低減し、データシールド外へ転送されるパケットを、データシールド境界のノードを経由させる。
ネットワークI/O記録&フィルタプログラムは、データシールド境界のノード(IPアドレス)を宛先とするパケットを選択して、監視処理を実行する。監視処理は、フィルタリング及び/又はログ記録を行う。データシールド内のノード(IPアドレス)を宛先とするパケットは、監視処理を行うことなく転送される。これにより、データ漏洩監視のための分析の負荷を低減する。
ネットワークI/O記録&フィルタプログラムは、データシールド境界上のIPアドレスを経由したネットワークI/Oに対して、予め設定されているフィルタポリシ従ってフィルタリングを実行する。フィルタポリシは、例えば、プロキシサーバを介したwrite=httpのパケットにおいて、所定サイズ以上のPUTを禁止する。
ネットワークI/O記録&フィルタプログラムは、データシールド境界上のIPアドレスを宛先とするパケットのログを記録する。例えば、ネットワークI/O記録&フィルタプログラムは、全てのパケットのログを記録する、又は、フィルタポリシに応じて選択した一部のパケットのログを記録する。なお、ネットワークI/O記録&フィルタプログラムは、データシールド境界上ノードを宛先とするパケットのフィルタリングとログ記録の一方のみを実行してもよい。
以下に説明する例において、配信元計算機は、外部デバイスI/O記録&フィルタプログラムを実行する。外部デバイスI/O記録&フィルタプログラムは、分析結果確認プログラムから外部記憶デバイス、例えば、ハードディスクドライブ(HDD)やUSBフラッシュドライブへのデータ漏洩を監視する。配信先計算機も、外部デバイスI/O記録&フィルタプログラムを実行し、分析プログラムから外部記憶デバイスへのデータ漏洩を監視してもよい。
図1Aは、本実施例のシステムの構成例を示す。図1Aにおいて、同一の機能を有する異なる構成要素は、同一の符号を付されることがある。データ分析プログラムの配信元計算機111と配信先計算機112とは、ネットワーク104を介して接続されている。図1Aの例において、ネットワークは、VPN(Virtual Private Network)である。配信元計算機111はデータセンタ101に設置され、配信先計算機112はデータセンタ101とは異なる拠点に設置されている。
配信元計算機111及び配信先計算機112は、VPN104又は他のネットワークを介して、I/Oログデータベース(DB)121及び構成DB122にアクセスする。I/Oログデータベース(DB)121及び構成DB122は、それぞれ、例えば、データセンタ101又は拠点102に設置されたサーバ計算機に格納される。拠点DB123は、拠点102内の、例えばサーバ計算機に格納され、配信先計算機112からアクセスされる。
プロキシサーバ113及び114は、それぞれ、データセンタ101及び拠点102内に設置されている。プロキシサーバ113及び114は、他の計算機と外部ネットワーク(インターネット103)との間のデータ通信を仲介する。
ネットワークにおけるセキュリティ境界であるデータシールド131が、システムにおいて予め定義されている。データシールド131内においては、機密データを含むデータの移動が許可されている。データシールド131は、システム内のノードにより定義される。
具体的には、データシールド内のノード及びデータシールドの境界ノードにより定義される。図1Aの例において、プロキシサーバ113、114は境界ノードであり、外部記憶デバイス125を除く他のノードが、シールド内ノードである。計算機は、ノードの一例である。
配信先計算機112は、データ分析部143、Hypervisor145、ネットワークI/O記録&フィルタ部147、ホストOS148を含む。データ分析部143は、NIC(Network Interface Card)を介して拠点DB123内の拠点データ155を取得して、分析する。
データ分析部143は、プロセッサが、Hypervisor145でデータ分析プログラムを実行することで実現される。データ分析部143の分析結果は、Hypervisor145を介して、ネットワークI/O記録&フィルタ部147に送信される。ネットワークI/O記録&フィルタ部147は、プロセッサが、ホストOS148上で、ネットワークI/O記録&フィルタプログラムを実行することで実現される。
後述するように、ネットワークI/O記録&フィルタ部147は、データ分析部143のネットワークI/Oを監視する監視部である。ネットワークI/O記録&フィルタ部147は、構成DB122に格納されている情報を参照して、データ分析部143からのパケットのフィルタリング及びログ記録を実行する。
構成DB122は、シールド内計算機IPアドレスリスト152、シールド境界計算機IPアドレスリスト153、及びフィルタポリシ154を格納している。構成DB122の情報は、顧客管理者により予め構成される。ネットワークI/O記録&フィルタ部147は、データ分析部143のI/Oログの情報を、I/OログDB121のI/Oログ151に格納する。I/Oログ151は、顧客管理者によりチェックされる。
分析結果は、さらに、ネットワークI/O記録&フィルタ部147から、NIC、VPN104を介して、配信元計算機111に転送される。配信先計算機112は分析結果を示すパケットの送信元計算機であり、配信元計算機111はそのパケットの受信計算機である。
配信元計算機111は、分析結果確認部141、Hypervisor145、外部デバイスI/O記録部146、ネットワークI/O記録&フィルタ部147、ホストOS148を含む。配信元計算機111において、分析結果は、NIC及びホストOS148を介して、ネットワークI/O記録&フィルタ部147に送信される。ネットワークI/O記録&フィルタ部147は、プロセッサが、ホストOS148上でネットワークI/O記録&フィルタプログラムを実行することで実現される。
ネットワークI/O記録&フィルタ部147は、分析結果確認部141のネットワークI/Oを監視する監視部である。ネットワークI/O記録&フィルタ部147は、構成DB122に格納されている情報を事前に読み出し保持する。ネットワークI/O記録&フィルタ部147は、構成情報を参照して、分析結果確認部141からのパケットのフィルタリング及びログ記録を実行する。ネットワークI/O記録&フィルタ部147は、分析結果確認部141のI/Oログの情報を、I/OログDB121におけるI/Oログ151に格納する。
分析結果確認部141は、分析結果を、ネットワークI/O記録&フィルタ部147から、Hypervisor145を介して、受信する。分析結果確認部141は、データ分析者が使用するユーザ端末に送信する。分析結果は、例えば、配信元計算機111の補助記憶に格納される。分析結果確認部141は、プロセッサが、Hypervisor145でデータ分析プログラムを実行することで実現される。
外部デバイスI/O記録部146は、分析結果確認部141の外部記憶デバイス125とのI/Oを監視し、そのログを記録する。ログは、I/Oログ151に格納される。外部デバイスI/O記録部146は、プロセッサが、ホストOS148上で外部デバイスI/O記録プログラムを実行することで実現される。
図1Bは、一般的な計算機構成を示す。配信元計算機111、配信先計算機112、プロキシサーバ113、114、DB121、122、123を格納する計算機、及びプロキシサーバ113、114は、例えば、図1Bに示すハードウェア構成を有する。
計算機12は、CPU(Central Processing Unit)223と、CPU223が処理を実行するために必要なデータ(プログラムを含む)を格納するための主記憶224と、大量のデータを記憶する容量を持つハードディスクやフラッシュメモリなどの補助記憶225を含む。
計算機12は、さらに、他装置と通信を行なうためのIF(インタフェイス)222と、これらの各装置を接続する通信路227と、を含む。プロセッサであるCPU223は、主記憶224に格納されたプログラムを実行することで所定の機能を実現する機能部として動作する。
補助記憶225は、CPU223が使用するデータ(情報)を格納する。プログラムやデータは、あらかじめ主記憶224または非一時的記憶媒体を含む補助記憶225に格納されていてもよいし、必要な時に、IF222を介して他の装置から、インストール(ロード)されてもよい。主記憶224及び補助記憶225は、個別に又は一体でメモリを構成する。計算機12は、さらに、キーボード、ディスプレイなどの入出力を行うための入出力デバイス226を含んでもよい。なお、機能部の一部は、CPU223と異なる専用回路で実現されてもよい。
データシールド131は、構成DB122の情報により管理(定義)されている。具体的には、データシールド131の境界計算機及び内部計算機の情報が、構成DB122に格納される。
図2Aは、シールド内計算機IPアドレスリスト152の構成例を示す。シールド内計算機IPアドレスリスト152はデータシールド内の計算機のIPアドレスを示す。図2Bは、シールド境界計算機IPアドレスリスト153の構成例を示す。シールド境界計算機IPアドレスリスト153は、データシールド131の境界の計算機のIPアドレスを示す。
図2Cは、フィルタポリシ154の構成例を示す。フィルタポリシ154は、ネットワークI/O記録&フィルタ部147により参照され、パケットに応じて実行すべき動作()を示す。具体的には、フィルタポリシ154は、プロトコルカラム203、readカラム204、writeカラム205、及びactionカラム206を有する。
readカラム204及びwriteカラム205は、それぞれ、readパケット及びwriteパケットを監視することなく転送することが許可されているか禁止されているか示す。action206は、禁止されているパケットに対する処理を示す。「禁止」されているパケットに対して、例えば、破棄、ログ記録、破棄及びログ記録、の処理が実行される。
図3は、パケットの構成例を示す。パケットは、Ethernet(登録商標)ヘッダ301、IPヘッダ302、TCPヘッダ303、L7ヘッダ304及びL7データフィールド305を含む。Ethernetヘッダ301は、宛先MACアドレスフィールド306を含む。IPヘッダ302は、送信元IPアドレスフィールド307及び宛先IPアドレスフィールド308を含む。TCPヘッダ303は、シーケンス番号フィールド309を含む。
図4は、分析結果確認部141及びデータ分析部143の処理のフローチャートを示す。分析結果確認部141は、分析部143(分析プログラム)を配信先計算機112のHypervisor145上で起動する(402)。分析部143は、拠点データ155にアクセスし、データ分析処理を実行する(403)。分析部143は、分析結果確認部141にデータ分析結果を送信する(404)。分析結果確認部141は、データ分析者の端末からの要求に応じて、データ分析結果をデータ分析者の端末において表示する(405)。
データ分析結果は、配信先計算機112において、Hypervisor145、ネットワークI/O記録&フィルタ部147、ホストOS148を介して、配信元計算機111に転送される。配信元計算機111において、データ分析結果は、ホストOS148、ネットワークI/O記録&フィルタ部147、Hypervisor145を介して、分析結果確認部141に転送される。
図5は、配信元計算機111及び配信先計算機112における、ネットワークI/O記録&フィルタ部147による処理を含むフローチャートを示す。分析部143又は分析結果確認部141は、Hypervisor145にI/O要求を発行する(501)。Hypervisor145は、I/O要求が、ネットワークI/O要求(ネットワークを介したI/O要求)であるか判定する(502)。
図1Aの例においては、分析結果確認部141からのI/O要求は、ネットワークI/O要求ではなく、外部デバイスへのI/O要求であり得る。発行されたI/O要求がネットワークI/O要求ではない場合(502:他)、Hypervisor145は、I/O要求をホストOS148へのI/O要求に変換し、外部デバイスI/O記録部146に送信する(505)。外部デバイスI/O記録部146は、I/Oログを、I/OログDB121に出力し(506)、I/O要求をホストOS148に転送する。
発行されたI/O要求がネットワークI/O要求である場合(502:ネットワークI/O)、Hypervisor145は、I/O要求をホストOS148へのI/O要求に変換し、ネットワークI/O記録&フィルタ部147に送信する(503)。ネットワークI/O記録&フィルタ部147は、I/O要求に含まれるパケットのIPヘッダ302における宛先IPアドレスフィールド308を参照し、宛先IPアドレスを特定する(504)。
ネットワークI/O記録&フィルタ部147は、シールド内計算機IPアドレスリスト152及びシールド境界計算機IPアドレスリスト153を参照し、パケットの宛先IPアドレスが、データシールド131に対して、どこに存在するか判定する(507)。
宛先IPアドレスがシールド内IPアドレスである場合、つまり、宛先IPアドレスがシールド内計算機IPアドレスリスト152に含まれる場合(507:シールド内IPアドレス)、ネットワークI/O記録&フィルタ部147は、フィルタリング及びログ記録(監視処理)を実行することなく、I/O要求をホストOS148に転送する(508)。
宛先IPアドレスがシールド外IPアドレスである場合、つまり、宛先IPアドレスがシールド内計算機IPアドレスリスト152及びシールド境界計算機IPアドレスリスト153に含まれない場合(507:他)、ネットワークI/O記録&フィルタ部147は、I/O要求を破棄する(511)。
宛先IPアドレスがシールド境界IPアドレスである場合、つまり、宛先IPアドレスがシールド境界計算機IPアドレスリスト153に含まれる場合(507:シールド境界IPアドレス)、ネットワークI/O記録&フィルタ部147は、TCPヘッダ303のシーケンス番号(フィールド309内)に基づき、パケットを再構成した(509)後、フィルタポリシ154に基づきI/O要求(パケット)を処理する(監視処理)(510)。
図6は、フィルタポリシ154に基づく処理(510)の詳細のフローチャートを示す。ネットワークI/O記録&フィルタ部147は、L7ヘッダ304を解析して、使用されているプロトコルと、read/write種別を判定する(601)。ネットワークI/O記録&フィルタ部147は、パケットが該当するエントリを、フィルタポリシ154においてを検索する(602)。
パケットが該当するエントリがフィルタポリシ154に存在しない場合(603:NO)、ネットワークI/O記録&フィルタ部147は、I/OログをI/OログDB121に出力し(610)、当該パケットを破棄する(611)。
パケットが該当するエントリがフィルタポリシ154に存在する場合(603:YES)、ネットワークI/O記録&フィルタ部147は、当該パケットが、ホストOS148からの送信が許可されているか判定する(604)。具体的には、ネットワークI/O記録&フィルタ部147は、該当エントリのreadカラム204とwriteカラム205の内の該当カラムが、「許可」を示すか判定する。
当該パケットが「許可」されている場合(604:YES)、ネットワークI/O記録&フィルタ部147は、I/Oログを出力することなく、I/O要求をホストOS148に転送する(605)。
当該パケットが「禁止」されている場合(604:NO)、ネットワークI/O記録&フィルタ部147は、当該エントリのactionカラム206の値が、「log」を含むか判定する(606)。「log」が含まれている場合(606:YES)、ネットワークI/O記録&フィルタ部147は、I/OログをI/OログDB121に出力する(607)。
さらに、ネットワークI/O記録&フィルタ部147は、当該エントリのactionカラム206の値が、「discard」を含むか判定する(608)。「discard」が含まれてない場合(608:NO)、ネットワークI/O記録&フィルタ部147は、I/O要求をホストOS148に転送する(605)。「discard」が含まれている場合(608:YES)、ネットワークI/O記録&フィルタ部147は、当該パケットを破棄する(609)。
上述のように本実施例の監視処理は、フィルタポリシに従い、パケットの種別(プロトコル種別及びread/write種別)に基づき、パケットの破棄/転送を決定し(フィルタリング)及びログ記録の有無を決定する。
以上のように、ネットワークI/O記録&フィルタ部147は、宛先IPアドレスのデータシールド131に対する位置に基づき一部のパケットのみを選択して、ログ記録及びフィルタリング(監視処理)を実行する。これにより、情報漏洩のための処理負荷を低減できる。パケットの送信元(データ分析結果確認プログラム又は分析プログラム)と同一計算機においてネットワークI/O記録&フィルタ部147が動作することで、他のハードウェア資源を使用することなく効率的にパケットを監視することができる。
以下において、実施例2を説明する。主に、実施例1との差異を説明する。本実施例において、配信元計算機又は配信先計算機からのパケットは、ゲートウェイ計算機に転送される。ネットワークI/O記録&フィルタ部147は、ゲートウェイ計算機において、パケットのフィルタリング及びログ記録を実行する。これにより、配信元計算機及び配信先計算機の負荷を低減できる。また、複数の配信先計算機又は複数の配信元計算機のパケットを1台のゲートウェイ計算機において監視することができる。
図7は、本実施例のシステムの構成例を示す。実施例1の構成に加えて、スイッチ装置A211、ゲートウェイ計算機A213が、データセンタ101において追加され、スイッチ装置B212、ゲートウェイ計算機B214が、拠点102において追加されている。これら装置は、データシールド131内に配置されている。
配信先計算機112は、スイッチ装置B212を介して、ゲートウェイ計算機B214に接続されている。図7は1台の配信先計算機を示すが、複数の配信先計算機がゲートウェイ計算機B214に接続されてもよい。配信元計算機111は、スイッチ装置A211を介して、ゲートウェイ計算機A213に接続されている。図7は1台の配信元計算機を示すが、複数の配信元計算機がゲートウェイ計算機A213に接続されてもよい。
ゲートウェイ計算機A213、ゲートウェイ計算機B214は、VPN104を介して接続されている。配信元計算機111及び配信先計算機112は、それぞれ、ゲートウェイ計算機A213及びゲートウェイ計算機B214を介して、プロキシサーバ113及び114に接続されている。
ゲートウェイ計算機A213、ゲートウェイ計算機B214は、それぞれ、転送制御テーブル252、パケット転送部242、ネットワークI/O記録&フィルタ部147を含む。ゲートウェイ計算機A213、ゲートウェイ計算機B214は、それぞれ、はNICを介して他装置(ネットワーク)に接続されているに接続されている。パケット転送部242は、プロセッサがプログラムを実行することで実現される。
スイッチ装置A211、スイッチ装置B212は、それぞれ、パケット検査部241を含む。スイッチ装置A211、スイッチ装置B212は、それぞれ、はNICを介して他装置(ネットワーク)に接続されているに接続されている。パケット検査部241は、例えば、プロセッサがプログラムを実行することにより実現される。
本実施例において、ネットワークI/O記録&フィルタ部147は、配信元計算機111及び配信先計算機112に代えて、ゲートウェイ計算機A213及びゲートウェイ計算機B214に実装されている。構成DB122は、実施例1の情報に加え、ゲートウェイ計算機IP/MACアドレスリスト251を格納している。
図8は、転送制御テーブル252の構成例を示す。転送制御テーブル252は、パケットの宛先アドレスと転送先アドレスとを関連付ける。転送制御テーブル252は、宛先IPアドレスカラム1001、転送先IPアドレスカラム1002、及び転送先MACアドレスカラム1003を有する。
図9は、ゲートウェイ計算機IPアドレス/MACアドレスリスト251の構成例を示す。ゲートウェイ計算機IPアドレス/MACアドレスリスト251は、ゲートウェイ計算機のアドレスを管理する。ゲートウェイ計算機IPアドレス/MACアドレスリスト251は、IPアドレスカラム1101及びMACアドレスカラム1102を有する。各エントリは、ゲートウェイ計算機のIPアドレスとMACアドレスとを示す。ゲートウェイ計算機IPアドレス/MACアドレスリスト251は、顧客管理者により予め設定される。
図10は、転送制御テーブル252を作成するフローチャートを示す。ゲートウェイ計算機A213、ゲートウェイ計算機B214は、それぞれ、シールド内計算機IPアドレスリスト152に記載されている宛先IPアドレス用の転送制御テーブルエントリを作成する(1201)。ゲートウェイ計算機A213、ゲートウェイ計算機B214は、それぞれ、転送先IPアドレスカラム1002、転送先MACアドレスカラム1003にゲートウェイ計算機のIPアドレス及びMACアドレスを設定する(1202)。
図11は、配信元計算機111及び配信先計算機112における処理のフローチャートを示す。ステップ801から805は、それぞれ、図5のステップ501から503、505、506に対応する。配信元計算機111及び配信先計算機112にネットワークI/O記録&フィルタ部147が実装されていないため、図5のフローチャートにおけるそのステップは省略されている。
図12は、スイッチ装置A211、スイッチ装置B212の処理のフローチャートを示す。パケット検査部241は、受信したパケットの宛先MACアドレスを特定する(901)。パケット検査部241は、受信したパケットのEthernetヘッダ301における宛先MACアドレスフィールド306を参照する。
パケット検査部241は、ゲートウェイ計算機IPアドレス/MACアドレスリスト251を参照し、宛先MACアドレスが、ゲートウェイ計算機のMACアドレスか判定する(902)。パケット検査部241は、ゲートウェイ計算機IPアドレス/MACアドレスリスト251を、事前に構成DB122から読み込み、保持している。
宛先MACアドレスが、ゲートウェイ計算機のMACアドレスである場合(902:YES)、スイッチ装置A211/スイッチ装置B212は、当該パケットをゲートウェイ計算機に転送する(903)。宛先MACアドレスが、ゲートウェイ計算機のMACアドレスではない場合(902:NO)、パケット検査部241は、当該パケットを破棄する(904)。
図12の処理により、スイッチ装置A211上で動作するパケット検査部241は、配信元計算機111からゲートウェイ計算機A213を介して送信されるIPパケット以外のパケットをブロック(破棄)する。スイッチ装置B212上で動作するパケット検査部211は、配信先計算機112からゲートウェイ計算機B214を介して送信されるIPパケット以外のパケットをブロック(破棄)する。これにより、配信元計算機111及び配信先計算機112からの全てネットワークパケットは、ゲートウェイ計算機を通過する。
図13は、ゲートウェイ計算機A213/ゲートウェイ計算機B214におけるパケット転送部242の処理のフローチャートを示す。パケット転送部242は、スイッチ装置からパケットを受信すると、当該パケットの宛先IPアドレスを特定する(1301)。パケット転送部242は、受信パケットのIPヘッダ302における宛先IPアドレスフィールド308を参照する。
パケット転送部242は、転送制御テーブル252を参照し、該当エントリの転送先MACアドレスを取得する(1302)。パケット転送部242は、当該パケットのEthernetヘッダ301の宛先MACアドレスフィールド306に、上記転送先MACアドレスを設定する(1303)。
パケット転送部242は、ゲートウェイ計算機IPアドレス/MACアドレスリスト251を参照し、転送先MACアドレスがゲートウェイ計算機のアドレスであるか判定する(1304)。転送先MACアドレスがゲートウェイ計算機である場合(1304:ゲートウェイ計算機)、パケット転送部242は、転送先に当該パケットを転送する(1305)。転送先MACアドレスがゲートウェイ計算機でない場合(1304:他)、パケット転送部242は、当該パケットをネットワークI/O記録&フィルタ部147に送信する(1306)。
図13の処理により、ネットワークI/O記録装置&フィルタ部147が処理するパケットを、データシールド境界を含む外部宛パケットのみに制限できる。パケット転送部242は、他方のゲートウェイ計算機から受信したパケットを、宛先IPアドレスに従って転送する。
図14は、ゲートウェイ計算機A213/ゲートウェイ計算機B214におけるネットワークI/O記録&フィルタ部147の処理のフローチャートを示す。ネットワークI/O記録&フィルタ部147は、パケット転送部242から受信したパケットのIPヘッダ302における宛先IPアドレスフィールド308を参照し、宛先IPアドレスを特定する(1401)。
ネットワークI/O記録&フィルタ部147は、シールド境界計算機IPアドレスリスト153を参照し、パケットの宛先IPアドレスが、シールド境界のアドレスであるか判定する(1402)。
宛先IPアドレスがシールド外IPアドレスである場合、つまり、宛先IPアドレスがシールド境界計算機IPアドレスリスト153に含まれない場合(1402:他)、ネットワークI/O記録&フィルタ部147は、当該パケットを破棄する(1405)。
宛先IPアドレスがシールド境界IPアドレスである場合、つまり、宛先IPアドレスがシールド境界計算機IPアドレスリスト153に含まれる場合(1402:シールド境界IPアドレス)、ネットワークI/O記録&フィルタ部147は、TCPヘッダ303のシーケンス番号(フィールド309内)に基づき、パケットを再構成する(1403)。
ネットワークI/O記録&フィルタ部147は、フィルタポリシ154及びL7ヘッダ304に基づき、パケットを処理する(1404)。ステップ1404は、図6を参照した説明のように、パケットフィルタリング及び不ログ記録を実行する。廃棄されないパケットは、プロキシサーバに転送される。
以下において、実施例3を説明する。主に、実施例2との差異を説明する。本実施例において、ネットワークI/O記録&フィルタ部147は、ゲートウェイ計算機とは異なるフィルタ計算機に実装される。ゲートウェイ計算機や配信元/配信先計算機と異なる計算機に実装することで、それら計算機の負荷を低減できる。また。既存のネットワークシステムに用意にネットワークI/O記録&フィルタ部147を組み込むことができる。
図15は、本実施例のシステムの構成例を示す。実施例2の構成と比較して、拠点102のゲートウェイ計算機B214、スイッチ装置B212及びプロキシサーバ114が省略されている。フィルタ計算機1511がデータセンタ101において追加されている。
配信元計算機111は、スイッチ装置A211を介して、ゲートウェイ計算機A213に接続されている。ゲートウェイ計算機A213とスイッチ装置B212とは、VPN104を介して接続されている。配信先計算機112は、スイッチ装置B212を介して、ゲートウェイ計算機A213に接続されている。フィルタ計算機1511は、ゲートウェイ計算機A213及びプロキシサーバ113に接続されている。
ネットワークI/O記録&フィルタ部147は、ゲートウェイ計算機に代えて、フィルタ計算機1511に実装されている。フィルタ計算機1511は、NICを介して他装置に接続される。構成DB122は、実施例2の情報に加え、フィルタ計算機IPアドレス/MACアドレスリスト251を格納している。フィルタ計算機IPアドレス/MACアドレスリスト251は、顧客管理者により予め設定されている。
図16は、フィルタ計算機IPアドレス/MACアドレスリスト251の構成例を示す。フィルタ計算機IPアドレス/MACアドレスリスト251は、フィルタ計算機1511のアドレスを管理する。フィルタ計算機IPアドレス/MACアドレスリスト251は、IPアドレスカラム1601及びMACアドレスカラム1602を有する。
図17は、転送制御テーブル252を作成するフローチャートを示す。ゲートウェイ計算機A213は、シールド内計算機IPアドレスリスト152に記載されている宛先IPアドレス用の転送制御テーブルエントリを作成し、転送先IPアドレスカラム1002及び転送先MACアドレスカラム1003に、シールド内計算機のIPアドレス及びMACアドレスをそれぞれ設定する(1701)。
ゲートウェイ計算機A213は、default用の転送制御テーブルエントリを作成し、転送先IPアドレスカラム1002及び転送先MACアドレスカラム1003に、フィルタ計算機1511のIPアドレス及びMACアドレスをそれぞれ設定する(1702)。
スイッチ装置A211のパケット検査部241は、構成DB112から、ゲートウェイ計算機IPアドレス/MACアドレスリスト251を読み込み、配信元計算機111からゲートウェイ計算機A213を介して転送されるIPパケット以外のパケットをブロック(破棄)する。
スイッチ装置B212のパケット検査部241は、構成DB112から、ゲートウェイ計算機IPアドレス/MACアドレスリスト251を読み込み、配信先計算機112からゲートウェイ計算機A213を介して転送されるIPパケット以外のパケットをブロック(破棄)する。これにより、配信元計算機111及び配信先計算機112からの全ての生存パケットは、ゲートウェイ計算機A213を通過する。
図18は、ゲートウェイ計算機A213におけるパケット転送部242の処理のフローチャートを示す。パケット転送部242は、パケットを受信すると、当該パケットの宛先IPアドレスを特定する(1801)。パケット転送部242は、受信パケットのIPヘッダ302における宛先IPアドレスフィールド308を参照する。
パケット転送部242は、転送制御テーブル252において、受信パケットのIPアドレスを検索する。合致するIPアドレスが存在する場合、パケット転送部242は、対応するMACアドレスを取得し(1802)、当該パケットのEthernetヘッダの宛先MACアドレスフィールドに、上記転送先MACアドレスを設定する(1803)。
合致するIPアドレスが存在しない場合、パケット転送部242は、defaultのエントリから、フィルタ計算機1511のMACアドレスを取得し(1802)、当該パケットのEthernetヘッダの宛先MACアドレスフィールドに、フィルタ計算機1511のMACアドレスを設定する(1803)。これにより、データシールド131の外部(シールド境界計算機を介して又は介さず)に向かうパケットのみがフィルタ計算機1511に転送され、フィルタ計算機1511の負荷を低減できる。
パケット転送部242は、設定したMACアドレスに対してパケットを転送する(1804)。フィルタ計算機1511のネットワークI/O記録&フィルタ部147は、実施例2の図14に示すフローチャートが示すようにパケットのフィルタリング及びログ記録を実行する。
なお、本例は一つのゲートウェイ計算機を示すが、実施例2のように、複数のゲートウェイ計算機に異なるフィルタ計算機が接続されてもよい。一つのフィルタ計算機が複数のゲートウェイ計算機に接続されてもよい。
以下において、実施例4を説明する。主に、実施例1との差異を説明する。顧客管理者は、機密情報を含むデータ領域(taint領域)を予め設定する。ネットワークI/O記録&フィルタ部は、taint領域からのデータの転送を監視し、他の領域からのデータは監視対象から除外される。ネットワークI/O記録&フィルタ部は、taint領域からデータが読み出されると、taint領域追跡部に追跡指示を発行する。
taint領域追跡部は、データ分析部/データ分析結果確認部のメモリアクセスを追跡し、taint領域から読み出されたデータの伝播を解析する。これにより、分析部/分析結果確認部からの情報漏洩を効率的に監視できる。
図19は、本実施例のシステムの構成例を示す。実施例1の構成に加え、配信元計算機111及び配信先計算機112において、taint領域追跡部1941が実装されている。taint領域追跡部1941は、taint bitmap1952を含む。taint領域追跡部1941は、CPU223がtaint領域追跡プログラムを実行することにより実現される。構成DB122は、taint領域リスト1951を格納する。
図20は、taint領域リスト1951の構成例を示す。taint領域リスト1951は、ストレージのtaint領域を管理する。taint領域リスト1951は、ストレージIPアドレスカラム2001、開始セクタ番号カラム2002、終了セクタ番号カラム2003を有する。
図21は、taint bitmap1952の構成例を示す。taint bitmap1952は、メモリにおける領域(の格納データ)が、taint領域(の格納データ)であるかを示す。taint bitmap1952は、ページアドレスカラム2101及びtaint有無ビットカラム2102を有する。ページは、メモリにおける管理単位領域である。
図22は、taint領域追跡部1941による処理のフローチャートを示す。taint領域追跡部1941は、taint領域受信通知をネットワークI/O記録&フィルタ部147から受信する(2201)。taint領域追跡部1941は、当該メモリ領域をtaint領域として登録するようtaint bitmap1952を更新する(2202)。taint領域追跡部1941は、Hypervisor145経由で、分析部143/分析結果確認部141にパケット受信を通知する(2203)。
図23は、配信先計算機112及び配信元計算機111それぞれにおける処理のフローチャートを示す。分析部143/分析結果確認部141は、Hypervisor145に命令実行要求を発行する(2301)。Hypervisor145は、taint領域追跡部1941に命令実行通知を発行する(2302)。
taint領域追跡部1941は、命令解析を実行する(2303)。taint領域から読んだデータのメモリwrite発生している場合(2304:YES)、taint領域追跡部1941は、当該メモリ領域をtaint領域として登録するよう、taint bitmap1952を更新する(2305)。これにより、taint領域を追跡できる。taint領域から読んだデータのメモリwrite発生していない場合(2304:NO)、ステップ2305はスキップされる。
taint領域以外から読んだデータのメモリwrite発生している場合(2306:YES)、taint領域追跡部1941は、当該メモリ領域をtaint領域から削除するようtaint bitmap1952を更新する(2307)。taint領域以外から読んだデータのメモリwrite発生していない場合(2306:NO)、ステップ2307はスキップされる。
taint領域追跡部1941は、Hypervisor145に再開要求を発行し、Hypervisor145は、分析部143/分析結果確認部141を再開する(2308)。
図24は、ネットワークI/O記録&フィルタ部147による受信パケットの処理のフローチャートを示す。ネットワークI/O記録&フィルタ部147は、NIC経由でパケットを受信する(2401)。ネットワークI/O記録&フィルタ部147は、受信したパケットが、ストレージI/Oによるパケットであるか判定する(2402)。パケットの送信元IPアドレスフィールド307の値と一致するIPアドレスがtaint領域リスト1951に存在する場合、ネットワークI/O記録&フィルタ部147は、受信したパケットが、ストレージI/Oによるパケットであると判定する。
パケットが、ストレージI/Oによるパケットである場合(2402:YES)、ネットワークI/O記録&フィルタ部147は、パケットにおいてデータが読み出されたセクタを同定し、taint領域リスト1951を参照して、当該セクタがtaint領域であるか判定する(2403)。
当該セクタがtaint領域である場合(2403:YES)、ネットワークI/O記録&フィルタ部147は、受信メモリ領域をtaint領域に登録するよう、taint領域追跡部1941にtaint領域受信通知を発行する(2404)。これにより、taint領域が追跡される。当該セクタがtaint領域でない場合(2403:他)、ステップ2404はスキップされる。
パケットが、ストレージI/Oによるパケットではない場合(2402:NO)、ネットワークI/O記録&フィルタ部147は、受信パケットのIPヘッダ302がtaintマークを含むか判定する(2405)。
IPヘッダ302がtaintマークを含む場合(2405:YES)、ネットワークI/O記録&フィルタ部147は、受信メモリ領域をtaint領域に登録するよう、taint領域追跡部1941にtaint領域受信通知を発行する(2406)。taintマークにより、ノード間でtaint領域のデータを追跡できる。IPヘッダ302がtaintマークを含まない場合(2405:NO)、ネットワークI/O記録&フィルタ部147は、Hypervisor145経由で、分析部143/分析結果確認部141にパケット受信を通知する(2407)。
図25は、ネットワークI/O記録&フィルタ部147による送信パケットの処理のフローチャートを示す。ネットワークI/O記録&フィルタ部147は、taint領域追跡部1941よりtaint領域送信通知を受信する(2501)。ネットワークI/O記録&フィルタ部147は、taint領域のデータについて以下のステップを実行する。
ネットワークI/O記録&フィルタ部147は、当該パケットのIPヘッダ302の宛先IPアドレスフィールド308を参照し、宛先IPアドレスを特定する(2502)。宛先がシールド境界計算機である場合、つまり、宛先IPアドレスがシールド境界計算機IPアドレスリスト153に存在する場合(2503:シールド境界サーバ)、ネットワークI/O記録&フィルタ部147は、フィルタポリシ154及びパケット種別に基づいて、パケットを処理する(2504)。ネットワークI/O記録&フィルタ部147は、読みされたデータのファイル情報を復元し、I/Oログに含める。
宛先がシールド内計算機である場合、つまり、宛先IPアドレスがシールド内計算機IPアドレスリスト152に存在する場合(2503:シールド内計算機)、ネットワークI/O記録&フィルタ部147は、当該パケットのIPヘッダ302にtaintマークを設定してNIC経由で送信する(2505)。
宛先が、シールド境界外アドレスである、つまり、シールド境界計算機でも、シールド境界内計算機でもない場合(2503:他)、ネットワークI/O記録&フィルタ部147は、当該パケットを破棄する(2506)。
上述のように、ネットワークI/O記録&フィルタ部147は、宛先がシールド内計算機であり、かつ、taint領域からのネットワークパケット(ネットワークI/O)を検出すると、当該ネットワークパケットにtaintマークを設定する。また。ネットワークI/O記録&フィルタ部147は、taintマークが設定されたネットワークパケット受信を検出すると、taint領域追跡部にtaint領域受信通知(追跡指示)を発行する。これにより、taint領域追跡処理が、他ノードに承継される。
ネットワークI/O記録&フィルタ部147は、宛先がシールド境界計算機であり、かつ、taint領域からのネットワークパケット(ネットワークI/O)を検出すると、パケットに対するフィルタリング及びログ記録(監視処理)を実行する。taint領域からシールド境界計算機へのネットワークI/O以外のパケットの解析及びログ出力が不要であり、負荷を低減することができる。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
また、上記の各構成・機能・処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード等の記録媒体に置くことができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしもすべての制御線や情報線を示しているとは限らない。実際には殆どすべての構成が相互に接続されていると考えてもよい。