アクセス制限

PostgreSQLでサーバ側は起動したもののvistaからの接続に失敗した。なんでだろう?と思っていたらサーバ側での接続設定がいろいろできていなかったようでパスワード等も設定されていなかったのかしら。というわけで本日はPostgreSQLの接続設定。

/opt/postgresql-8.3.3/pg_hba.conf

上記ファイルはpostgresqlのデータ配置(?)ディレクトリにある。下記PostgreSQLサーバを実行しているコマンドの-Dのオプションで指定しているディレクトリ。

[postgres@CentOS-5.2 ~]$ ps -ef | grep postgres
postgres  2023     1  0 20:02 ?        00:00:00 /usr/local/postgresql-8.3.3/bin/postmaster -p 5432 -D /opt/postgresql-8.3.3
postgres  2026  2023  0 20:02 ?        00:00:00 postgres: writer process                                                   
postgres  2027  2023  0 20:02 ?        00:00:00 postgres: wal writer process                                               
postgres  2028  2023  0 20:02 ?        00:00:00 postgres: autovacuum launcher process                                      
postgres  2029  2023  0 20:02 ?        00:00:00 postgres: stats collector process                                          
root      2355  2327  0 20:03 pts/0    00:00:00 su - postgres
postgres  2356  2355  0 20:03 pts/0    00:00:00 -bash
root      2461  2433  0 20:05 pts/1    00:00:00 su - postgres
postgres  2462  2461  0 20:05 pts/1    00:00:00 -bash
postgres  2515  2462  0 20:12 pts/1    00:00:00 ps -ef
postgres  2516  2462  0 20:12 pts/1    00:00:00 grep postgres
[postgres@CentOS-5.2 ~]$ 

pg_hba.conf

インストール時から編集していない状態のpg_hba.confファイルの内容は下記。

# "local" is for Unix domain socket connections only
local   all         all                               trust
# IPv4 local connections:
host    all         all         127.0.0.1/32          trust
# IPv6 local connections:
host    all         all         ::1/128               trust
  • 第1項目:接続タイプ
    • local:localhostからの接続(Unixドメインソケットを使用)
    • host:ネットワーク経由(TCP/IP経由の接続)
    • hostss:SSLを使用したネットワーク経由(TCP/IP経由の接続)
  • 第2項目:接続先データベース
    • all:すべてのデータベース
    • [データベース名]:記述しているデータベースのみ
  • 第3項目:接続ユーザ
    • all:すべてのユーザ
    • [ユーザ名]:記述しているユーザ名のみ
  • 第4項目:接続元ネットワークの制限(localの場合は無し)
  • 第5項目:認証方式
    • trust:無条件で許可
    • reject:無条件で拒否
    • md5:暗号化パスワード(MD5形式)[推奨]
    • crypt:暗号化パスワード(crypt形式)
    • password:パスワード(平文)
    • krb4:よくわかんない…
    • krb5:よくわかんない…
    • ident:identサーバを利用
    • pam:OSのPAMサービスを使用

1行につき1形式。認証待ちのアクセスは、上から記述された順番に接続形式・接続先データベース・接続ユーザ・接続元ネットワークが一致した場合に認証を行う。つまりは上に記述しているものが一致した時点で適用。下の方にゆるい条件の制限を、上に厳しめの条件の制限を書くのが良いのかもしれない。
全ての条件(行)が一致しなかった場合は接続を拒否される。

今回は下記の記述を入れる事によって、vistaからの接続をOKとする。

host    all         all         192.168.74.0/24          md5

TCP/IP接続において、全てのデータベース・全てのユーザに対して「192.168.74.0/24」のネットワークからの接続はMD5形式の暗号化パスワード認証を行う。
上記を3つめの条件として入れようかな。
パスワード制限を入れたからには、各ユーザ(role)に対してパスワード設定が必要となる事は言うまでもなくやらねばね♪