PostgreSQLへセキュアに接続する方法
文:Vincent Danen(TechRepublic) 翻訳校正:原井彰弘
2008-01-29 16:30:00
PostgreSQLは、おそらく最高のSQLサーバの一つだろう。しかし、初心者にとってはMySQLのような他のSQLデータベースと比較して扱いやすいとはいえない。
暗号化されたパスワードを使用するには、PostgreSQL内のユーザに関するレコードを変更し、マッチ対象となる暗号化されたパスワードを与えなければならない。たとえば、新しいユーザを追加し、そのユーザが保有するデータベースへのアクセスも行えるようにするには、以下のようなコマンドを用いる。
# su - postgres $ createuser joe Shall the new role be a superuser? (y/n) n Shall the new role be allowed to create databases? (y/n) n Shall the new role be allowed to create more new roles? (y/n) n CREATE ROLE $ createdb joe CREATE DATABASE $ psql postgres=# ALTER USER joe WITH ENCRYPTED PASSWORD 'foobar'; ALTER ROLE postgres=$ q $ exit # cd /var/lib/pgsql/data # echo "local joe joe md5" >>pg_hba.conf # service postgresql restart
この時点から、ユーザjoeがデータベースへの接続を試みるとパスワードを要求されるようになる。
$ psql Password: joe=#
プロンプトから、joeがユーザ名と同名のデータベースに接続したことが分かるだろう。また、パスワードが必要となったことも分かる。一方で、localhostを経由して接続を試みた場合は以下のようになってしまう。
re$ psql -h localhost psql: FATAL: no pg_hba.conf entry for host "127.0.0.1", user "joe", database "joe", SSL off
この場合は当然、pg_hba.confが以下のようになっていることが前提だ。
local all postgres trust host all postgres 127.0.0.1/32 trust local joe joe md5
もちろん、これは設定のごく一部にすぎない。しかし、サポートされている認証方法を調べたいときには、どのような変わったタイプの認証スキームでも試してみることができるようになっただろう。
- ホワイトペーパー



