終わりなきデータベースのセキュリティ対策で押さえるべきポイントとは
不正アクセスを想定したデータベース・セキュリティ対策
先ほどお伝えしたとおり、データベース内に正規のユーザとしてログインされると、「そのユーザの権限内で可能なSQLが実行される」ことがデータベースにおける正常な動作であるため、データを持ち出されたり、変更(改ざん)されても防ぎようがありません。では、データベースに対してどのようなセキュリティ対策を講じれば良いのでしょうか。
データベースのアクセス・ログの取得
データベースのアクセス・ログは、データベースに不正アクセスがあったのか、なかったのかを確認する唯一の手がかりです。アクセス・ログを取得していなければ、情報漏えいがあったとしても、どのようなSQLで情報が持ち出されたのか、何件の情報漏えいがあったのかを特定することができません。被害総額もあくまで「可能性」ということで試算するため高額となるケースがあります。また、仮にデータベースからの情報漏えいでなかったとしてもそれを証明することができません。このため、正規、不正規を問わず、以下の観点でデータベースへのアクセス・ログをすべて漏らさず取得する必要があります。
- いつ
- 誰が
- どこから
- どのデータに
- どのように
データベースへのアクセスの分類
データベースへのアクセス・ログは第三者から情報漏えいを通報された際の調査の元にはなりますが、取得しただけでは不正アクセスに気付くことは不可能です。例えばIDやパスワードなどの個人情報が盗み出された時には気付かず、その情報からお金が引き出されるなどの不正利用に発展してはじめて対処を行っているようでは、被害総額がさらに増えてしまいます。
自らが不正アクセスに気付くためには、何が正規のアクセスで、何が不正なアクセスなのかを事前に整理しておくことが重要です。一般的にデータベースへのアクセスは、アプリケーションから行われる「業務系アクセス」とデータベースの維持管理のために行われる「管理系アクセス」の2つに大別することができます(実際のデータベースの利用状況によって異なります)。業務系アクセス、管理系アクセスそれぞれについて、データベースのアクセス・ログとして必要なものは何かを整理してみましょう。
業務系アクセス
- いつ:24時間365日
- 誰が:アプリケーションの利用者(データベースのユーザIDは1つ)
- どこから:インターネット経由で利用者の端末から(データベースから見るとアプリケーション・サーバから)
- どのデータに:業務用テーブル。ただし、アクセスできるテーブル、行、列はアプリケーションのユーザIDにより限定、限定条件は・・・・
- どのように:アプリケーションから限定されたSQLで
管理系アクセス
- いつ:24時間365日
- 誰が:○○さん、△△さん
- どこから:社内のネットワーク上の○○さん、△△さんに貸与されているPCから
- どのデータに:業務用テーブル、管理用テーブル
- どのように:業務用テーブルはDBMS固有ユーティリティでバックアップ操作のみ、SQLによる検索、追加、修正、削除の行操作は行わない。管理用テーブルについては特定の管理ツールから実行される限定されたSQLのみ。
上記はあくまでイメージをつかんでもらうための単純な例ですが、何が正規のアクセスで、何が不正なアクセスかを判断するためには、まずどのようなアクセスがあり、それは、いつ、誰が、どこから、どのデータを、どのようにアクセスするのか把握しておかなければなりません。つまり、何が正規のアクセスなのか把握せずして、何が不正なアクセスなのかを把握することはできないのです。