pg_hba.confファイル

広告

次はpg_hba.confファイルです。このファイルはクライアントの認証に関する記述を行います。PostgreSQLに対するアクセスをどこからであれば許可するかということです。pg_hba.confファイルが置いてある場所はpostgresql.confと同じPostgreSQLをインストールしたディレクトリの下にある「data」ディレクトリの中にあります。私の場合であれば、D:¥PostgreSQL¥8.1¥data¥pg_hba.conf にあります。

このファイルはテキストファイルとなっていますので、テキストエディタで見たり編集することが出来ます。

# PostgreSQL Client Authentication Configuration File
# ===================================================
#
# Refer to the PostgreSQL Administrator's Guide, chapter "Client
# Authentication" for a complete description.  A short synopsis
# follows.
#
# This file controls: which hosts are allowed to connect, how clients
# are authenticated, which PostgreSQL user names they can use, which
# databases they can access.  Records take one of these forms:
#
# local      DATABASE  USER  METHOD  [OPTION]
# host       DATABASE  USER  CIDR-ADDRESS  METHOD  [OPTION]
# hostssl    DATABASE  USER  CIDR-ADDRESS  METHOD  [OPTION]
# hostnossl  DATABASE  USER  CIDR-ADDRESS  METHOD  [OPTION]
#
# (The uppercase items must be replaced by actual values.)
#
# The first field is the connection type: "local" is a Unix-domain socket,
# "host" is either a plain or SSL-encrypted TCP/IP socket, "hostssl" is an
# SSL-encrypted TCP/IP socket, and "hostnossl" is a plain TCP/IP socket.
#
# DATABASE can be "all", "sameuser", "samerole", a database name, or
# a comma-separated list thereof.
#
# USER can be "all", a user name, a group name prefixed with "+", or
# a comma-separated list thereof.  In both the DATABASE and USER fields
# you can also write a file name prefixed with "@" to include names from
# a separate file.
#
# CIDR-ADDRESS specifies the set of hosts the record matches.
# It is made up of an IP address and a CIDR mask that is an integer
# (between 0 and 32 (IPv4) or 128 (IPv6) inclusive) that specifies
# the number of significant bits in the mask.  Alternatively, you can write
# an IP address and netmask in separate columns to specify the set of hosts.
#
# METHOD can be "trust", "reject", "md5", "crypt", "password",
# "krb5", "ident", or "pam".  Note that "password" sends passwords
# in clear text; "md5" is preferred since it sends encrypted passwords.
#
# OPTION is the ident map or the name of the PAM service, depending on METHOD.
#
# Database and user names containing spaces, commas, quotes and other special
# characters must be quoted. Quoting one of the keywords "all", "sameuser" or
# "samerole" makes the name lose its special character, and just match a
# database or username with that name.
#
# This file is read on server startup and when the postmaster receives
# a SIGHUP signal.  If you edit the file on a running system, you have
# to SIGHUP the postmaster for the changes to take effect.  You can use
# "pg_ctl reload" to do that.

# Put your actual configuration here
# ----------------------------------
#
# If you want to allow non-local connections, you need to add more
# "host" records. In that case you will also need to make PostgreSQL listen
# on a non-local interface via the listen_addresses configuration parameter,
# or via the -i or -h command line switches.
#



# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# IPv4 local connections:
host     all         all         127.0.0.1/32          md5
# IPv6 local connections:
#host    all         all         ::1/128               md5

設定する項目は[TYPE][DATABASE][USER][CIDR-ADDRESS][METHOD]の5つの項目で1行となります。

[TYPE]の項目には、「local」「host」、「hostssl」、「hostnossl」などの値が入りますが、現在設定されている「host」と書いてある場合はTCP/IP経由での接続に関する認証について記述する場合です。

[DATABASE]の項目には対象とするデータベース名を記述します。現在設定されている「all」は全てのデータベースを対象とすることを意味します。データベース毎に別々に設定する事も可能です。

[USER]の項目には対象とするPostgreSQLのユーザー名を記述します。現在設定されている「all」は全てのユーザーを対象とすることを意味します。特定のユーザーに対して許可を与える事も可能です。

[CIDR-ADDRESS]の項目にはクライアントのIPアドレスをアドレス/ネットマスクの形で記述します。「127.0.0.1/32」というのはローカルループバックアドレスの事で自分自身を表します。つまり現在はPostgreSQLが稼動しているマシンと同じマシンからのみPostgreSQLへのアクセスが許可されています。

[METHOD]の項目には認証方式について記述します。指定できる値は「trust」,「reject」,「md5」,「crypt」,「password」,「krb5」,「ident」,「pam」のいずれかです。「trust」の場合は無条件での接続許可、「reject」の場合は無条件での接続拒否、「md5」の場合はパスワード要求を MD5 暗号化パスワードの形式で行います。「crypt」も暗号化パスワードを要求しますが古い形の暗号化パスワードです。「password」は暗号化無しのパスワードを要求します。「krb5」はよく分からないのですが「Kerberos V5」というユーザー認証方式を使います。「ident」と「pam」はそれぞれ「identサービス」と「pamサービス」を使って認証を行います。

以上のことから、現在は全てのデータベースを対象として全てのユーザーに対して、接続時にはMD5暗号化パスワードを要求し、同時に接続できるアドレスはPostgreSQLが稼動しているのと同じサーバからに限定している、と言うことになります。

また個々のデータベースに対して個別の設定を行う方法などについては、必要になった時に説明を行います。

( Written by Tatsuo Ikura )