「想定外のアクセス」を確実にとらえるログ取得法FortiDBによるDB監査・モニタリング

データベースアクセスが設計通り正しく行われているか? あってはならない“幽霊インスタンス”が残っていないか?――今、あるがままの状況を漏らさず把握する正しいデータベース監査の手法を紹介する。

2009年07月23日 00時00分 公開
[ITmedia]

 情報漏えい防止や内部統制の見地からも、企業内のデータベースに対して「いつ、誰が、どのような操作を行ったのか」を確実に把握できる状態にしておく必要があることは言うまでもない。しかし、これは技術的には意外に困難なテーマでもある。データベースの動作のログを完全に残すのは難しく、手法によっては取りこぼしが生じてしまうからだ。

 データベースの内部でどのような処理が実行されたかを外部から漏れなく把握することは技術的に困難だが、手段はある。それは、データベース自身に記録を任せることだ。この手法は、記録の完全性という点では申し分ないが、ハイトランザクションシステムの場合にはパフォーマンス面での影響も考えられる。

 そこで、データベースの重要性と利便性のバランスを考える必要があるのだが、昨今のセキュリティ面での懸念を考えれば、完全な記録を取ることの重要性は否定できないだろう。この完全なログ取得とセキュリティ監視を行うのが、フォーティネットのアプライアンス製品「FortiDB」である。

内部監査のためのデータベースログ取得

 データベースに対して「いつ、誰が、何を」したかを記録しておくことは、情報漏えいや重大な法令違反など万一の事態に遭遇した際には極めて重要な証拠となる。もちろん事後対応のためだけではなく、日本版SOX法の規制対象となる上場企業などでは本来内部監査の一環として取り組むべき活動だとも考えられる。また、こうした記録体制がきちんとできていることが、故意による犯罪行為を未然に防ぐ予防対応ともなり得る。

 データベースの動作に関するログの取得には、さまざまな手法が考えられている。現在市場で提供されている製品が採用している手法としては、「メモリ参照型」「パケットキャプチャー型」「Audit型」の3種類が存在する。これらはいずれも長所/短所があり、完全な技術はまだない。

 メモリ参照型は、データベースへのリクエスト内容(SQL)が一時的に格納されている共有メモリ領域の中から、実行中のSQLの内容を取り出して監視し、疑わしいアクセスを検知するという手法だ。一定間隔でメモリ領域をスキャンするというもので、原理的に取りこぼしのリスクがある。また、データベースサーバにエージェントモジュールをインストール必要があるため、エージェントの動作によりわずかなパフォーマンス低下を引き起こす可能性もある。さらに、万一エージェントモジュールが不具合を起こした場合には、その間のアクセス監視がまったく機能しなくなってしまい、最悪データベースサーバごと不安定になることもあり得る。

 パケットキャプチャー型は、ネットワーク上でのデータベースサーバとクライアントの通信状況を、パケットを収集することで知るという手法だ。ネットワークスイッチのモニタリングポートを利用したり、専用のアプライアンスをパケットが通過する地点に設置するなど、実装手法には幾つかのバリエーションが考えられるが、データベースサーバとクライアントの間でパケットを監視する点に変わりはない。ネットワーク上でモニタリングするため、データベースサーバのパフォーマンスには影響を与えない点が利点となるが、一方でパケットの取りこぼしなどが発生する恐れがある。また、パケットからデータベースサーバへのリクエストを復元するのに手間が掛かったり、クライアントからリクエストが送られたにもかかわらず、データベース側でリクエストが処理されないことも考えられる。従って、そうした例外的な状況に対する対応が複雑になるといった問題を抱えているのだ。

 なお、パケットキャプチャー型の盲点は、ネットワークを経由しない操作はまったく捕捉できないことだ。例えば、データベースサーバのコンソールから直接操作した場合などがこれに当たる。特権的なアクセス権限を持つデータベース管理者が直接操作するといった状況を一切記録に残せないのは、監査という観点では深刻な問題である。直接ログインしての操作を禁止するなど、運用面での何らかの取り組みが必要となる。

 これらの手法が原理的に「すべての操作を確実に捕捉する」ことを保証できず、多少の取りこぼしの可能性を織り込んだ上での実装であるのに対し、すべての操作を完全に捕捉可能な手法となるのがAudit型だ。FortiDBでは、ログ取得手法としてAudit型を採用している。

Audit型の長所とは?

 Audit型のデータベース監査は、データベース側に実装されている監査(Audit)機能を利用することが名前の由来だ。データベースをAuditモードで実行すると、データベース自体がどのような操作を行ったかの記録を残しながら動作するようになる。FortiDBでは、こうしてデータベース自体が作成した監査記録を定期的に取得し、分析およびアーカイブを行う。

画像 FortiDBはデータベースに対してモニタリング・記録を行う「監視カメラ」の役割を果たす

 Audit型のログ収集は、データベース自身が実行した操作を記録することから、その完全性はデータベース自体が保証してくれる。リクエストされたものの、キャンセルされ結局は実行されなかった操作などが実行済みとして間違って記録されたり、実行された操作が記録から漏れたりといった心配はない。そのデメリットとしては、Auditモードでは多少のパフォーマンス低下があることだが、完全なログが取れることとのトレードオフとしては、受け入れられないレベルではないだろう。この辺りの判断はデータベースに格納されているデータの価値などによっても変わってくるが、業務上重要なデータベースの場合は、監査を優先させるべきだろう。

ログ分析によるセキュリティ維持

 Audit型ログ収集を行うFortiDBでは、収集したログをリアルタイムで解析することで、不正な操作の兆候を察知して対応することが可能だ。

 フォーティネットでは、「まずユーザーアカウントのセッションログから取得を始めることをお勧めする」(フォーティネットジャパン インフォメーション・セキュリティBU シニアコンサルティングエンジニアの成田泰彦氏)としている。セッションログには、「どのアカウントが、いつ、どこからデータベースにログインして、ログアウトするまでにどれほどデータを読み取ったのか」という情報が記録される。通常、どのテーブルに対して、どのような操作を行ったのかを詳細に記録するアクションログは、データベースサーバに与える負荷が高くなる。それに対して、セッションログは相対的に負荷が軽い上、一般的なセキュリティリスクには十分対応可能だという。より高度な監査を必要とする場合は、一般ユーザーに対してはセッションログを、管理権限を持つユーザーに対してはアクションログを追加するという設定も有効だという。

画像 Audit型のFortiDBは、データベースへのアクセスや操作などにおける不正な兆候を漏らさず検出できる

 セッションログからは、例えば「ログイン失敗」が検出できる。これは、パスワードを探るための原始的な攻撃である可能性がある。また、同一のアカウントで複数の端末からアクセスが行われていれば、アカウントの盗用や共有化の疑いがあるし、1台の端末からさまざまなユーザーアカウントでログインが行われた場合も、なりすましや端末共有といった状況が推測できる。このほか、勤務時間外のログインや、「ログインからログアウトまでの時間が異様に長い」「大量のデータを読み出した」といった注目すべきセッションについて、セッションログのみから特定することが可能だ。

 もちろん、こうした分析を人間が行うのでは負担が掛かってしまうが、FortiDBではユーザーが設定した条件に従って不審なアクセスを検出し、異常を検知した場合には通知を行うことができる。条件設定はGUIによる簡単な操作で行えるため、ユーザー自身が状況に合わせて細かく条件を変更することも容易だ。

画像 複数のデータベースに対して統一されたルール・監視設定を行える《クリックで拡大》

 さらにルールチェーニング(Rule Chaining)機能もあり、「あるルールに抵触したセッションに対して新たなルールを適用する」ことができる。これを利用すると、セッションログによる監視で異常を検出した場合、当該のセッションに対してアクションログの取得を開始し、全操作を詳細に記録するといった運用も可能になるという。

マルチデータベース環境での監査が可能に

 FortiDBアプライアンスは、最大10データベースインスタンスに対応する小規模企業向け「FortiDB-400B」、最大30データベースインスタンスに対応する中規模企業向け「FortiDB-1000B」、最大60データベースインスタンスに対応する大規模企業向け「FortiDB-2000B」の3モデルが用意される。監査対象となるデータベースは、Oracle Database、IBM DB2、Microsoft SQL Server、Sybase Adaptive Serverの4種類だ。異種混在のマルチデータベース環境でも利用可能なので、柔軟なシステム構成が実現できる。部門展開から全社展開まで、幅広いニーズに対応できるのもポイントだ。

写真 「FortiDB」は規模やニーズに合わせて3モデルから選べる

 なお、FortiDBのユニークな機能として「データベース自動検出機能」が挙げられる。例えば、テストや動作検証などの用途で一時的に立ち上げたデータベースインスタンスがそのまま残ってしまっており、保護が不十分なまま放置されているといった状況は、深刻なセキュリティリスクにつながりかねない。そこにFortiDBの自動検出機能を使えば、ネットワーク上で稼働するデータベースインスタンスを発見できるため、「本来動いているべきではないデータベース」(いわば“幽霊インスタンス”)を的確に排除するのにも役立つ。なお、自動検出では対応する4種類の商用データベースに加え、オープンソースのMySQLの検出も可能だ。

 データベースを保護するためには、まず「どこで、どのようなデータベースが稼働しているか」を把握した上で、それぞれのデータベースに格納されている情報の重要度を踏まえて「どのデータベースに、どのようなアクセスが行われているか」を監視する必要がある。FortiDBは運用管理が容易なアプライアンス型製品であり、これらの用途をくまなくカバーできるため、運用管理コストを引き上げることなく高度なセキュリティを維持することが可能になる。さらに、今後UTM(統合脅威管理)の「FortiGate」などフォーティネットのほかのセキュリティ製品との機能統合も図られる予定なので、ネットワークとデータベースのセキュリティに関する運用管理の一元化も期待できる。企業内部でのデータベース監査体制の強化を考えているユーザーにとっては見逃せないソリューションとなるはずだ。

■問い合わせ先

フォーティネットジャパン株式会社

TEL:03-6434-8531/8533

URL:http://www.fortinet.co.jp/contact/


提供:フォーティネットジャパン株式会社
アイティメディア営業企画/制作:TechTarget編集部