PostgreSQLへセキュアに接続する方法

文:Vincent Danen(TechRepublic) 翻訳校正:原井彰弘
2008-01-29 16:30:00
  • このエントリーをはてなブックマークに追加

 暗号化されたパスワードを使用するには、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

 もちろん、これは設定のごく一部にすぎない。しかし、サポートされている認証方法を調べたいときには、どのような変わったタイプの認証スキームでも試してみることができるようになっただろう。

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