なお、ここではWebサーバの背後に、データを保存するサーバを設置した場合について書いたが、さらにもう一段、Webサーバとデータベースサーバの間でデータのやりとりを仲介するアプリケーションサーバを設置することで、よりセキュリティを高めることが可能である。
データベースへのアクセスでよく使われるSQL言語は、言語そのものが複雑ということと、インジェクション攻撃に対して弱い性質がある。このため、Webアプリケーション側でのサニタイズ処理が複雑になるほか、データベースにパッチを当てることによって動作が変化するときには、Webアプリケーションにも修正が必要となるため、パッチ当てが遅れる、あるいは適用できないなどの問題が起こる。
そこで、Webアプリケーションとデータベースへの橋渡しの役目を持つアプリケーションサーバを用意する(図4)。このサーバは、データベースへのアクセスをAPIを通して仮想化、単純化する。これにより、各サーバのソフトウェアがよりシンプル化されることによって、パッチ当てや修正が容易となる。またアプリケーション層では、冗長化や負荷分散の機能も併せ持つことが多いのでスケーラビリティの確保にもつながる。
もちろんこの場合も、アプリケーションサーバ自体に対するパッチ適用やサニタイズをはじめとするWebアプリケーションのセキュリティ対策は欠かせない(関連記事参照)
3:監視/検知が機能していること
ここまで説明してきた方法で、システムを構築しても、監視/検知が機能していなければ、インシデント発生時に対応が遅れて、被害の拡大につながりかねない。そこで、実際に攻撃を受けたときに、発生したことをいち早く気づくことと、何が起きたかを把握することが重要となる。
設計という観点では、まず、アクセス制限を実施するファイアウォールなどにおいてそれ自身が監視/検知の機能を持たせることができる。監視/検知を専用のサーバから集中して管理することもよく使われる構成だが、システムのさまざまな情報にアクセスできる必要があり、セキュリティ的には何でもできるシステムとなりやすい。そのため、監視/検知を行うサーバは、厳重なアクセス制限がかけられているネットワークに配置する。
実際に監視/検知を行うためには、SNMP、SNMPTRAP、SYSLOGなどを利用してシステムの状態に関する情報を収集し、MRTG、NMS(Network Management System)などを利用して、システムの状態をグラフなどで可視化したり、システムのログを監視して、アラートを上げられるようなシステムを構成する。
4:管理/運用が容易であること
ここまでの説明でところどころに、管理/運用を容易にするための設計ポイントについて説明したのでおさらいする。
上記以外に、管理/運用を容易にするためのポイントとしては、ソフトウェアやハードウェアの選定が挙げられる。セキュリティを意識するという意味で、ソフトウェアやハードウェアを選定する際に検討すべき項目は、次の3つが挙げられる。
Copyright © ITmedia, Inc. All Rights Reserved.