pool_hba.confファイル

Pgpool-II 3.6.5 文書
前のページ | 上に戻る | 第 6章クライアント認証 | 次のページ

# 6.1. `pool_hba.conf`ファイル

PostgreSQLの`pg_hba.conf`と同じようPgpool-IIでも`pool_hba.conf`とよばれる設定ファイルを使った同様のクライアント認証機能をサポートしています。 Pgpool-IIインストールするとデフォルトインストール先の設定ファイルディレクトリ（`"/usr/local/etc"`）にサンプルの`pool_hba.conf.sample`が含まれています。 デフォルトではpool_hbaによる認証は無効になっており、`enable_pool_hba`を`on`に設定することで有効になります。 enable_pool_hba設定パラメータをご覧ください。

`pool_hba.conf`のフォーマットはPostgreSQLの`pg_hba.conf`のものとほとんど同じです。 `pool_hba.conf`ファイルの一般的な書式は、1行につき1つのレコードというレコードの集合です。 空行はコメント用の`#`文字以降の文字と同じく無視されます。 レコードは行をまたいで続けることはできません。 レコードはスペースもしくはタブ、もしくはその両方で区切られた、複数のフィールドで構成されています。 フィールドには、フィールド値が二重引用符付きの場合空白文字を含むことができます。 データベース、ユーザもしくはアドレスフィールド内のキーワード(例：`all`または`replication`)の一つを引用するとその特別な意味が失われ、その名称のデータベース、ユーザもしくはホストと一致するようになります。

それぞれのレコードは接続形式、（接続形式に対して意味を持つのであれば）クライアントのIPアドレス範囲、データベースの名前、ユーザ名およびこれらのパラメータに一致する接続で使用される認証方法を指定します。 接続形式、クライアントアドレス、要求されたデータベース、およびユーザ名に一致する最初のレコードが認証処理に使用されます。 「失敗時の継続」や、 あるいは「バックアップ」はありません。 これは、もしあるレコードが選択されて認証に失敗した場合、後続のレコードは考慮されないということです。 どのレコードも一致しない時はアクセスが拒否されます。

レコードは以下の書式のうちの1つの形式を取ります。

    local      database  user  auth-method  [auth-options]
    host       database  user  CIDR-address  auth-method  [auth-options]

フィールドの意味は以下のようになっています。

`local`

  このレコードはUnixドメインソケットを使用する接続に対応します。 この種類のレコードを使用しないと、Unixドメインソケット経由の接続は拒否されます

`host`

  このレコードは、TCP/IPを使用した接続に対応します。 `host`レコードは、SSLもしくは非SSL接続のいずれかに対応します。

  > 注意: サーバのデフォルトの動作は、ローカルループバックアドレスである`localhost`のみTCP/IP接続を監視しています。 よってサーバにおいてlisten_addressesパラメータが適切な値に設定された状態で起動されていない限り、リモートのTCP/IP接続はできません。

`database`

  このレコードで対応するデータベース名を指定します。 `all`という値は、全てのデータベースと対応することを指定します。

  > 注意: databaseフィールド値として`"samegroup"`はサポートされません

  > Pgpool-IIはPostgreSQLバックエンドサーバにあるユーザ情報を事前に知る事ができないため、データベース名は`pool_hba.conf`にあるdatabaseフィールドの項目のみと比較されます。

`user`

  このレコードで対応するデータベースユーザ名を指定します。 `all`という値は、全てのユーザが対応することを指定します。 それ以外の場合には特定のデータベースユーザの名前となります。

  > 注意: userフィールド値として"+"を使ったグループ指定はサポートされません

  > 上記の`"samegroup"`と同じ理由で、ユーザ名は単純に`pool_hba.conf`にあるuserフィールドの項目のみ対してチェックされます。

`address`

  このレコードに対応しているクライアントマシンのアドレスを指定します。 IPアドレスの範囲は、範囲の開始アドレス、続いてスラッシュ(`/`)とCIDRマスクの長さという標準の数値表記で指定されます。 CIDRマスク長とは、クライアントIPアドレスが一致しなければならない、高位のビット数を表すものです。 指定するIPアドレスのこれより右側のビットには、0を指定しなければなりません。 IPアドレスと`/`、およびCIDRマスク長の間には空白を入れてはいけません。

  > 注意: 現在、IPv6アドレス/マスク表記法はサポートされません

  このフィールドは`host`レコードにのみ適用されます。

`auth-method`

  接続がこのレコードに一致する場合に使用する認証方式を指定します。 使用できる選択肢は以下にまとめていますが、詳しく項6.2を参照してください。

  `trust`

    接続を無条件で許可します。 この方式は、Pgpool-IIに接続できる全てのユーザを許可します。

  `reject`

    接続を無条件に拒否します。 特定のホストをあるグループから「除外」するために便利です。 例えば、1行の`reject`は特定のホストが接続することを拒否します。

  `md5`

    クライアントに対して認証時に二重MD5ハッシュ化パスワードを要求します。

    > 注意: `md5`認証を使うには、ユーザ名とパスワードを`pool_passwd`というパスワードファイルに登録する必要があります。 詳細は項6.2.2を参照してください。

  `pam`

    オペレーティングシステムによって提供されるPAM（Pluggable Authentication Modules）サービスを使用した認証です。 詳細は項6.2.3を参照してください

    Pgpool-IIが稼働するホスト上のユーザ情報を使ったPAM認証を利用することができます。 PAMサポートを有効にするには、Pgpool-IIが`"--with-pam"`をつけてconfigureされていなければなりません。

    PAM認証を有効にするには、Pgpool-IIのサービス設定ファイルをシステムのPAM設定ディレクトリ（通常は`"/etc/pam.d"`にあります）に作成しなければなりません。 サービス設定ファイルのサンプルはインストールディレクトリ下に`"share/pgpool.pam"`としてインストールされています。

`auth-options`

  `auth-method`フィールドの後ろに、認証方式のオプションを指定する、`name`=`value`の形式のフィールドが存在する可能性があります。

`pool_hba.conf`レコードは接続が試みられる度に順番に検査されますので、レコードの順序はとても大切です。 典型的には、始めの方のレコードには厳しい接続照合パラメータと緩い認証方式があるのに対し、終わりの方のレコードにはより緩い照合パラメータとより厳しい認証方式があります。 例えば、ローカルTCP接続では`trust`認証方式、リモートTCP接続に対してはパスワードを要求したいとします。 この場合、広範囲にわたって許可されるクライアントのIPアドレスに対するパスワード認証を指定するレコードの前に127.0.0.1からの接続に対する`trust`認証指定のレコードが置かれなければなりません。

> ティップ: ここで説明された全てのpool_hba認証のオプションはクライアントとPgpool-IIの間についてだということに注意してください。 クラインアントは依然として、PostgreSQLによる認証を通過しなければなりませんし、バックエンドPostgreSQLサーバ上のデータベースに対して`CONNECT`権限を持っていなければなりません。

> pool_hbaにとってはクライアントに指定されたユーザ名やデータベース名(例. psql -U testuser testdb)が実際にバックエンド上に存在するかどうかは問題ではありません。 pool_hbaは`pool_hba.conf`の値とマッチするかどうかのみを気にします。

Some examples of `pool_hba.conf` entries are below. See the next section for details on the different authentication methods. `pool_hba.conf`ファイルの例をいくつか以下に示します。 各種認証方式の詳細については次の節をご覧ください。

例 6-1. `pool_hba.conf`の項目の例

    # Allow any user on the local system to connect to any database with
    # any database user name using Unix-domain sockets (the default for local
    # connections).
    #
    # TYPE  DATABASE        USER            ADDRESS                 METHOD
    local   all             all                                     trust

    # The same using local loopback TCP/IP connections.
    #
    # TYPE  DATABASE        USER            ADDRESS                 METHOD
    host    all             all             127.0.0.1/32            trust

    # Allow any user from host 192.168.12.10 to connect to database
    # "postgres" if the user's password is correctly supplied.
    #
    # TYPE  DATABASE        USER            ADDRESS                 METHOD
    host    postgres        all             192.168.12.10/32        md5

前のページ | ホーム | 次のページ
クライアント認証 | 上に戻る | 認証方式