レガシーな操作方法は、暗号化対策のSSHでデータベースにログオンし、コマンドラインからデータベースを操作する方法である。この方法は、バックアップなどの作業なら問題ないが、例えば「特定のレコードだけを取り出したい」「特定のフィールドを書き換えたい」といった編集や保守、改良を加える際――特にWebアプリケーションの開発時におけるテーブル作成やテーブル編集など――には、コマンドラインでの操作は困難を極める。
そこでMicrosoft Accessなどのデータベースソフトを使って、ホスティングサービス上のデータベースに接続して操作したくなってくるのだ。
幸いMySQLやPostgreSQLでは、Windows用のODBCドライバが提供されている。そのためこれらのODBCドライバを使えば、Accessなどのデータベースソフトを使って、ホスティングサービスで提供されているデータベースを操作することができる。
そうとはいえ、これを許容してしまうとインターネット上を暗号化されないデータベース情報が流れるため好ましいことではない。それに加え、悪意ある者がデータベースサーバを攻撃してくる可能性も高くなる。
このような問題を解決するのが「SSHポートフォワーディング」だ。SSHポートフォワーディングは、クライアントPCとサーバとをSSHで通信して中継する一種のVPNを提供する(図2)。
SSHポートフォワーディングを使うためには、基本的にはサーバ側がSSHに対応していればよい。ただし、一部のホスティングサービスでは、SSH自身は使えても、ポートフォワーディングを許さない設定になっていることもあるため、その確認が必要だ。
SSHポートフォワーディングを用いる場合、クライアント側では、SSHのポートフォワード用のソフトを使う。Windowsの場合には、たとえば、「PortForwarder」がある(関連リンク)。また、SSHに対応したターミナルソフト「Poderosa」にもポートフォワーディングのためのツールが付属している(関連リンク)。
実際に接続するには、図2に示したように、クライアント側のアプリケーションは、自らのPC宛(localhost)に接続するようにする。すると転送が通信され、あたかもサーバに直接接続しているように見えるのだ。
ここでは、SSHポートフォワーディングによるデータベース操作を説明したが、もしホスティングサービスが、SSL-VPNなどのVPN機能を提供しているのであれば、それらのVPN機能を使っても、同様なことができる。ただし、どのようなプロトコルに対応するのかは、VPNの種類に依存するため、データベースへの接続はできないこともあるので注意が必要だ。
データベースには重要なデータが格納されるので、万一、データベースサーバに侵入されれば、データが丸ごと盗まれてしまう可能性がある。
そこで安全性を高める方法として、「Webサーバ」と「データベースサーバ」を分ける方法がある。これは、最近一般的となってきた運用手法だ(図3)。
Webサーバとデータベースサーバを分ける場合、Webサーバに2枚のネットワークカードを装着し、Webサーバとデータベースサーバ間は、プライベートIPアドレスで構成する。そうすれば、インターネットから直接データベースサーバに接続できないようになる。このような構成を考慮して、近年のホスティングでは、「2台セットにして提供する」というサービスも見られるようになってきた。
もちろん、インターネットから直接データベースサーバにアクセスできないようにすれば、いつでも安全を保てるというわけではない。なぜならば、もし、Webサーバに侵入されてしまったら、それを踏み台にしてデータベースサーバへ侵入できてしまうからだ。
つまりWebサーバを適切に監視し、データベースサーバに侵入される前に異常に気づくかどうかが、被害を増大させないためのポイントだ。そこでWebサーバに、侵入検知サービスを導入するとよいだろう。
Copyright © ITmedia, Inc. All Rights Reserved.