1. 情報漏えい対策として,RDBMSへのアクセス・ログ取得を強化。
2. ログの取得漏れを無くすために,DB専用の監査ツールを利用。
3. Oracleの機能を利用し,SQL文の発行者をログに記録。

 「万が一,自社で情報流出があったとしても,アクセス・ログを見れば,すぐ誰が何をしたかが分かるようにしなければならない」(ぷららネットワークス ネットワーク管理部 次長 荒木孝広氏)――。

 ISP事業者のぷららネットワークスは,約182万人の会員情報を抱える。個人情報へのアクセス・ログは以前から取得していたが,情報漏えいの証拠を残すため,ログ取得を強化した。

取得していたログは不完全

 ログの取得には以前から3つの問題があり,情報漏えいを見つけにくい状況だった(図1)。第1に,データベースへのアクセス・ログは必要最低限しか取得していなかった。ぷららネットワークスでは個人情報を格納するRDBMSにはOracle Databaseを利用している。Oracleへのアクセス・ログは,Oracleに備わる監査機能「Audit Trail」を用い,ユーザーのログイン/ログアウト情報のみを記録していた。これは,Audit Trailでログイン後の操作まで取得すると,RDBMSの性能に悪影響が出てしまうためだ。

図1●データベース管理システムのログ取得について抱えていた問題
図1●データベース管理システムのログ取得について抱えていた問題
個人情報を格納するデータベースに対しては,Oracleが備えるAudit Trailや業務アプリケーションでログを取得していたが,情報漏えいを見付けるには問題があった

 操作履歴としてWebサーバーや業務アプリケーションのログがあるが,それらの書式は統一されていない。これが,2つ目の問題である。3つ目の問題は,SQL*Plusなどの管理ツールを利用した場合の操作ログは取得できていなかったことである。

DBに負荷を掛けないツールを利用

 問題を解決するために,2004年7月,インサイトテクノロジーの情報漏えい監視ツール「Performance Insight Security for Oracle(PISO)」の採用を決定する。OracleのAudit Trail機能を利用する製品ならほかにもあったが,経験上,Audit Trailで多くのログを取得すると負荷が高くなることは分かっていたため,Audit Trailを使わないPISOに決めた。PISOは,エージェント・ソフトがOracleの動作用のメモリー領域であるSGA(System Global Area)に直接アクセスする仕組みであるため,Oracleに与える影響は小さい。こうした仕組みなので,SQL*Plusなどの管理ツールからのアクセス・ログも取得できる。ログを一括管理できることも,PISOを採用した理由の一つである(図2)。

図2●PISOを採用した主な理由
図2●PISOを採用した主な理由
インサイトテクノロジーのPerformance Insight Security for Oracle(PISO)を用いて,ログを取得することにした。PISOは,性能への影響が小さく,ログが一括管理できる

 個人情報を格納するデータベース・システムは大規模で,ピーク時には400~450セッションが同時に接続し,1日1000万件以上を処理する。しかし,「PISO導入による負荷はほとんどなく,導入前と比較して,スワップ・メモリーも実メモリーの空き領域もほとんど変わらない状態」(ネットワーク管理部 チーフ 長谷部勇氏)である。

誰が何をしたかを特定する

 PISOの導入によって,データベースへのアクセス・ログを漏れなく取得できるようになった。だが当初の狙いである「誰が何をしたかを特定する」にはPISOだけでは不十分。ログの中のSQL文の利用者を特定する工夫が不可欠だった。

 そこでぷららネットワークスは,PISOのログにユーザー名を書き込むように業務アプリケーションに手を入れ,SQL文の利用者を特定できるようにした(図3上)。業務アプリケーションがOracleにセッションを張る際に,「DBMS_APPLICATION_INFO」というOracleのパッケージを利用する。Oracleのパッケージは,ストアド・プロシージャやストアド・ファンクションを一つにまとめてカプセル化したもの。PISOがDBMS_APPLICATION_INFOと連携できるので,これを利用してユーザーの情報をログに記録できた。具体的には,業務アプリケーションから「DBMS_APPLICATION_INFO.SET_CLIENT_INFO」と「DBMS_APPLICATION_INFO.SET_MODULE」という2つのプロシージャを呼び出し,OracleのV$SESSION表に情報を書き込むようにした。PISOはV$SESSION表に書き込まれたユーザー情報を読み取り,ログに記録する。

図3●ログ取得に関する主な工夫
図3●ログ取得に関する主な工夫
3階層のシステム構造の場合,どのユーザーがどのデータにアクセスしたかが分かりにくい。そこで,アプリケーションに関数を組み込んで,SQL文と利用者を結び付けるようにした。また,ログを改ざんされないように,ボリュームをロックできるストレージ装置を採用した
[画像のクリックで拡大表示]

 そのほか,ストレージ装置の機能を用いて,ログが改ざんされないように工夫した(図3下)。PISOがログを書き込むディスクはマウント先を限定することで機密性を高めている。それに加え,ログを格納する専用ストレージ装置に日本ネットワーク・アプライアンスのNAS装置「NetApp FAS920」を採用し,オプションでSnapLockという改ざん防止機能を利用する。過去のログ・ファイルを格納しているボリュームにはロックをかけ,ログの改ざんを防止している。

PISO導入後の調整に1カ月

 PISOを導入する際,「1カ月くらいはチューニングが必要」(ネットワーク管理部 チーフ 川野豊数氏)だった。PISOは,SQL文にハッシュ関数をかけ,業務アプリケーションからの定型的なSQL文はハッシュ値のみをログとして記録し,定型外のSQL文はハッシュ値とSQL文そのものを残す。新しい処理や新しくオブジェクトをコールすると,アラートが上がる。そのために,定型的なものかどうかなどアラートの精査が必要となる。

PROFILE
名称:株式会社ぷららネットワークス
本社所在地:東京都豊島区東池袋3-1-1 サンシャイン60 24階
資本金:78億1000万円(2005年1月時点)
従業員:約140人(2005年1月時点)
業務内容:電気通信事業など
URL:http://www.plala.or.jp/