phpMyAdmin に限らず、サーバ管理ツールやグループウェアなどの Web アプリケーションを利用する場合は、ツール側のセキュリティ対策は勿論ですが、Web サーバ側でも適切にセキュリティ対策(アクセス制限と監視) を行う必要があります。
phpMyAdmin の設置とは切り分けて考える必要があるため、ここでは例をあげて Apache Web サーバ側で適用するセキュリティ ポリシーについて考えます。
phpMyAdmin の設定は、config.inc.php を編集して行います。サーバ管理者が利用する phpMyAdmin と ローカルユーザに提供する phpMyAdmin それぞれに異なるセキュリティポリシーを適用したい場合は、異なるディレクトリで phpMyAdmin を設置します。
例えば、ドキュメントルート外にそれぞれの phpMyAdmin を配置し、
/data/local_user/phpMyAdmin
/data/admin/phpMyAdmin
Apache の /Alias/ 処理で
で公開し、管理者用の https://mydomain.net/admin/phpMyAdmin/ はガチガチのポリシーで、 https://mydomain.net/local_user/phpMyAdmin/ は、利便性に配慮したポリシーでといった具合に。
管理者は ローカルユーザーに提供するデータベースやアカウントの追加などの保守をセキュリティレベルを引き上げる事で、インターネット側からも管理する事が可能になります。( SSHを開いてSQLコマンドを叩く必要がない )
MySQL サーバは、phpMyAdmin を設置する場所、つまり Web サーバとは別のサーバにする、開発用途は外部に公開されないファイアウォール内部に独自に設置するのが安全で普通です。ここで説明している内容は、外部から管理者が phpMyAdmin 経由でもメンテナンスが行えます。
外部(インターネット側)から、ssh を使用せずphpMyAdmin を利用して保守管理を行なうケースも想定しています。主に、MySQL アカウントの管理やバックアップ作業を行うために phpMyAdmin をセットアップします。
このケースでは高い安全性が求められるため、phpMyAdmin への接続は、SSL クライアント認証の利用を前堤とします。一般の MySQL ユーザーが利用する phpMyAdmin と別に Apache でセキュリティポリシーを設定する必要があるため、個別にインストールします。
Webサーバ(Apache側)で求められるセキュリティポリシーの一例です。
ホスティングサービスなど不特定多数にサービスを提供する場合、Apache Web サーバの設定の一部を httaccess により利用者譲渡する場合がありますが、これは想定していません。サーバ管理者が Web サーバ側でセキュリティを高めるようにします。
サーバ管理者がローカルユーザに提供する phpMyAdmin を設置します。 phpMyAdmin は、Cookie 認証を用いることで phpMyAdmin に MySQL サーバへのアクセスコードを指定する必要がなくなります。
また、Apache 側で LAN 内からの接続に限定するなどして上記、管理者用と異なりセキュリティレベルを引き下げて利便性を優先する事も可能になります。
一般ユーザー用 phpMyAdmin のセキュリティポリシー例です。
ローカルユーザは、phpMyAdmin の公開ディレクトリへアクセスすると、ページ上で、MySQL のアカウント情報の入力を求められます。パスすると、その MySQL ユーザが持つ権限の範囲内でデータベースを制御する事が出来ます。
上記、管理者用の phpMyAdmin とは異なり外部から接続は出来ませんが、求められるのは MySQL アカウントのみなので利便性が高くなります。
MySQLのログ監視とは別に Apache 側も phpMyAdmin に関するログは記録するようにしてください。phpMyAdmin に限った話ではありませんが、ブラウザ経由のシステム管理は、何日、誰がアクセスしたか管理者が把握できるようにしておきます。エラーログの監視も忘れずに。
位置行単位のログ監視、設定の自由度では、Swatch が便利です。