phpPgAdmin はブラウザ経由で PostgreSQL サーバを操作可能なPHP で書かれたブラウザ上で動作するプログラムです。MySQL で言うところのphpMyAdminに相当します。
SSH など psql コマンド操作を提供しない環境においては、phpPgAdmin などのツールをインターフェイスとしてユーザーに提供する必要があります。
phpPgAdmin (WEBサーバ)と PostgreSQL サーバが同一ホストでPostgreSQL が自ホストの接続に限定している場合、Webサーバを経由して操作するため Webサーバに接続可能なホスト全てが接続出来てしまうことになります。
そのため、PostgreSQL の認証方式や phpPgAdmin を設置するWebサーバの公開ディレクトリに対しては厳格なセキュリティ対策が求められます。認証無しで postgres (スーパーユーザ)に接続できる状態は大変危険です。
MySQL をブラウザ経由で操作する phpMyAdmin の場合、phpMyAdmin 側でブラウザ認証に関する機能が幾つか用意されていますが、phpPgAdmin にはこれらの機能は現在の所、提供されておらず特に注意が必要です。
phpPgAdmin を設置したディレクトリを Webサーバで公開する事になります。ここでは CentOS-4.5 / Apache 2 / PHP4.3 において説明しています。
PostgreSQL を PHP で操作するには 以下のPHPモジュール (php-pgsql) が必要です。 CentOS 4.5 ではパッケージが提供されておりインストールするだけで利用可能な状態になります。
でインストールされていなければ先にインストールしておきます。
以下からソースをダウンロードします。
http://phppgadmin.sourceforge.net/?page=download
PHP 動作可能な WEBサーバーでディレクトリを公開する事になります。ここでは、 /var/www/phpPgAdmin に設置するとして話を進めます。適宜パスは置き換えてください。 また、いきなりWEB公開中のディレクトリに設置するような事は控えてください。
Webサーバ Apache の実行ユーザーに権限を変更します。 CentOS のデフォルトは ユーザ apache グループ apache になります。
上記ディレクトリ /var/www/phpPgAdmin を Webサーバで公開することになりますが、 その前に phpPgAdmin の設定を行ないます。 phpPgAdmin の設定は、phpPgAdmin/conf/config-inc.php で行ないます。
修正箇所
18行目
$conf['servers'][0]['host'] = '';
↓
$conf['servers'][0]['host'] = 'localhost';
PostgreSQL サーバを指定します。同一ホストであれば localhost です。
71行目
root や postgres といった一般的なユーザー名でのログインを禁止します。パスワードが正しくてもログインする事は出来ません。セキュリティ上、この設定は解除すべきではありません。※
$conf['extra_login_security'] = true;
78行目
所有者以外のデータベースは非表示にします。
$conf['owned_only'] = false;
↓
$conf['owned_only'] = true;
$conf['extra_login_security'] = false; .
とした場合、スーパーユーザー postgres をはじめ root などの一般的な Unix アカウントの利用を許可することになります。
もし、ユーザー管理のために phpPgAdmin を管理者が利用したいのであれば、phpPgAdmin のセキュリティを緩めるのではなく専用の PostgreSQL ユーザーを追加すべきです。例えば以下のようにします。
phpPgAdmin を利用して管理者がユーザー/データベース管理を行う場合は、ここで追加した posposmaster を使用する事にします。
以上で phpPgAdmin のインストールと初期設定は終わりです。次は phpPgAdmin の公開設定を行ないます。使用している WEB サーバーは Apache 2 です。