ニュース
2004/02/23 10:30:00 更新


「失敗事例をよく見て」――SQL Serverの設定・運用に潜むセキュリティの落とし穴

SQL Serverユーザーグループ(PASSJ)は2月20日、都内にて「PASSJ Conference 2004」を開催した。データベースのセキュリティに関するセッションも設けられ、PASSJ理事の河端善博氏が説明を行った。

 SQL Serverユーザーグループ(PASSJ)は2月20日、都内にて「PASSJ Conference 2004」を開催した。次期SQL Server「Yukon」について紹介する基調講演のほか、SQL Serverの開発、運用に関する複数のセッションが行われた。

 その1つが、SQL Serverのセキュリティについて解説する「事例から学ぶDBセキュリティ」だ。

 データベースサーバは、顧客の個人情報をはじめ、企業にとって重要な情報を格納している。だが、その不用意なコーディングや設定は、情報を流出させる糸口を作り出してしまいかねない。PASSJ理事で、セキュリティ分科会のボードリーダーを務める河端善博氏が、いくつかのデモンストレーションを交えながら、SQL Serverの開発/運用において留意すべきポイントを紹介した。

ファイアウォールやIDSの導入だけでは終わらない

 一般に「侵入」されると言うと、Webの改ざんや情報流出、盗難といった直接的な結果だけに目が行きがちだ。しかし河端氏は、犯人の特定や警察への通報、告発(およびその元になる証拠保全)といった対処と、顧客や取引先への説明といった対応までもが、侵入というプロセスの中に含まれてくると指摘。それを踏まえてどう対策を取るかを考えねばならないと述べた。

 「高価なファイアウォールやIDS(不正侵入検知システム)を入れたからそれでいい、という話ではない」(河端氏)。

 万一侵入を受けた場合、POSシステムのように、その企業にとって決して停止できないシステムを安全に切り離し、運用を継続することができるかについても考える必要がある。それが改ざんやバックドアを埋め込まれていないかを確認する必要があるのはもちろん、場合によっては、FAXなど何らかの代替手段を用意できるか、そのリスクも含めて検討すべきという。

 またセキュリティ対策を進めるとして、本人以外にもそのことを理解している人がいるかどうかもポイントだ。同氏によると、「社内に他に分かる人がいないから」という理由で、新婚旅行先でウイルス対応に追われたという泣ける話もあったという。そういった悲しい事態を避けるには、侵入されることが何を意味するかを各々が実感した上で、社内で情報交換を行っていく必要がある。

「失敗」を大事に

 その上で河端氏は、SQL Serverを用いてシステムを構築、運用していく上での代表的な留意点について紹介した。

 1つは、フォームなどでもよく用いられるクエリーの扱いだ。ごく簡単な結果を返すだけのクエリでも、入力チェックを漏らしただけで個人情報の漏えいを許したり、場合によってはサーバ上で任意のコマンドを実行させられたりする恐れがある。

 これを避けるには、入力値に対するエスケープ処理を行うとともに、「アドホッククエリを用いず、パラメータ変数を用いて実行させるようにする」(河端氏)。変数を取り扱うことができるsp_executesqlを利用するのもいい手段だという。これだけで、対処に億単位の費用を要する恐れもある個人情報流出の可能性を減らすことができる。

 ストアドプロシージャやプログラムの内容の解読も、侵入を容易にすることにつながる。内容が見えれば、どこに脆弱性が存在するかを見つけやすくなり、攻撃を受ける可能性は高まるからだ。

 ストアドプロシージャの場合、他人からその内容を読まれないようにするには、「WITH ENCRYPTION」を指定してオブジェクトごと暗号化する手段があるが、実際にはこれを解読するツールがネットワーク上に出回っている。ただ、それを踏まえて、さらに強力な暗号化を施す「SQL Shield」のようなツールも存在しているので、そういったツールの活用を考慮すべき、という。

 プログラムそのものについても同様に、解析ツールが存在している。これも、いわゆるObfuscatorを利用して難読化を図っておくべきだ。「概してC#やVB.NETのように生産性の高いツールは解読も楽。ソースコードが見えることを前提にして対策を施すべき」(河端氏)という。

 河端氏はさらに、ネットワークパケットの盗聴や設定ミスといったポイントにも触れている。特に後者については、何らかの攻撃を受けたとして、それが不正侵入によるものなのか、それとも設定ミスに起因するものなのかを見分けるのは困難だ。管理者自身の責任を明らかにする意味でも、「権限変更をはじめとする設定変更をいつ行ったのか、作業記録をすべて残しておくことが重要」という。

 そのためにも、テスト用サーバと本番用サーバを厳密に運用したうえで、「(ログの残らない)Enterprise Manager上でさくさくと設定を変更するのではなく、設定変更用のクエリを別途作成し、それを通じて作業すべき」(河端氏)。

 最後に同氏は、セキュリティに対する基本的な姿勢として、安易な対策に走らない、優先順位を明確にするといった項目を挙げた。「他人の失敗をよく見ておくことが大事。顧客も、特に上の立場の人ほど、実際に失敗すれば、対策の必要性を分かってくれる」(同氏)。

 なお、同氏が紹介したSQL Serverの基本的なセキュリティ対策については、PASSJのWebサイトにもまとめられている。

関連リンク
▼PASSJ

[ITmedia]

Copyright © ITmedia, Inc. All Rights Reserved.