MySQLで機密データを保護するための6ステップ

文:Contributor Melonfire(TechRepublic) 翻訳校正:原井彰弘
2007-12-25 10:10:01
  • このエントリーをはてなブックマークに追加

 テクノロジーを基盤とした組織において最も重要な資産は、データベースに含まれている顧客や製品の情報であるのが普通だ。そのため、そのような組織でのデータベース管理におけるクリティカルな部分では、外部からの攻撃やハードウェア、ソフトウェアの障害からデータベースを保護することが必要となる。

 多くの場合、ハードウェアやソフトウェアの障害は、データのバックアップを正しく管理することで対処できる。多くのデータベースにはその作業すべてを自動で行うツールが用意されているので、この種の作業は比較的簡単に行うことができ、エラーも発生しにくい。しかしながら、そう単純に行かないのはパズルの2つ目、つまり、外部からハッカーがシステムに侵入するのを防ぎ、システム内部に含まれている情報が盗まれたり破壊されたりしないようにすることだ。残念ながら、この問題を自動的に解決するような方法はないのが普通である。システム管理者であるあなたが、バリケードや障害物を手作業で設けることによってハッカーを立ち往生させ、会社のデータを保護しなければならないのである。

 データベースの安全性を確保しない言い訳として、安全性を確保することは「難しく」、しかも「複雑である」ということがよく挙げられる。これは確かに真実であるが、MySQLを使っているのなら、簡単なことをいくつか行うだけで直面するリスクを大きく減少させることが可能である。このチュートリアルではそのような作業6つを一覧にしたが、MySQLのマニュアルやディスカッションフォーラムを読めば、さらに多くの情報を入手できるだろう。

ステップ1:供与テーブルからワイルドカードを取り除く

 MySQLのアクセス制御システムは、一連のいわゆる「供与テーブル」(grant tables)を利用して動作している。この供与テーブルでは、各ユーザごとにデータベース、テーブル、またはカラムのレベルでアクセスレベルを設定できる。また、ワイルドカードを用いれば、管理者が特定のユーザや一連のテーブルに対してすべてを許可することも可能である。しかし、そのような設定を行うことは本質的に危険な行為だ。なぜなら、問題のあるアカウント一つを用いて、ハッカーがシステムの他の部分にアクセスする可能性があるからだ。従って、ユーザには正確に権限を割り当て、各々がタスクを実行する上で必要なアクセス権限のみを持たせるように注意しなければならない。特に、SUPER権限を個々のユーザに割り当てる際には、細心の注意を払うべきである。SUPER権限を与えられたユーザは、基本的なサーバ設定の変更を行えるだけでなく、すべてのデータベースへのアクセス権限も持っているのである。

 ヒント:個々のユーザアカウントに対してSHOW PRIVILEGESコマンドで供与テーブルを調査し、ワイルドカードによる許可が適切であるかどうかを考えてみよう。

ステップ2:安全なパスワードの使用を求める

 ユーザアカウントを保護しているのはパスワードのみである。従って、MySQLをインストールしたときにまず最初にしなければならないことは、MySQLのrootアカウントにパスワードを設定することだ(デフォルトでは空になっている)。このぽっかりと空いた穴をふさいだら、次のステップは、すべてのユーザアカウントには必ずパスワードを設定して、簡単に推測可能な誕生日やユーザ名、辞書に載っている語などをパスワードとして使用しないよう、ユーザに求めることだ。

 ヒント:MySQLの--secure-authオプションを用いて、古くて安全性の低い形式のパスワードを利用できないようにしよう。

  • 新着記事
  • 特集
  • ブログ
このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]