Connection Manager Authentication
=================================

Connection Managerの認証は、
Postgres独自の `pg_hba.conf <https://www.postgresql.org/docs/current/auth-pg-hba-conf.html>`_ ファイルを介して構成されます。 Connection
Managerは、Postgresと同じ認証方法を使用します。

Connection Manager接続タイプ
----------------------------

接続マネージャーは、\ ``pg_hba.conf``
で次の接続タイプをサポートしています。

- ``host`` - TCP/IP接続

- ``hostssl`` - SSLを使用したTCP/IP接続

- ``hostnossl`` - SSLを使用しないTCP/IP接続

Connection Managerの認証方法
----------------------------

接続マネージャーは、\ ``pg_hba.conf``
で次の認証方法をサポートしています。

- ``trust`` - 認証なし

- ``reject`` - 接続を拒否する

- ``md5`` - MD5パスワード認証

- ``scram-sha-256`` - SCRAM-SHA-256パスワード認証

- ``ldap`` - LDAPサーバーを使用して認証する

- ``cert`` - SSL証明書認証。お勧めしません。
  :ref:`Using client certificate authentication <Connection Manager Authentication>` を参照してください。

..  Note::
   Connection Managerは、クライアントユーザーとしてPGDノードに対して認証できる必要があります。レプリケーションと内部通信のために他のPGDノードから発生した接続を受け入れるように、各PGDノードで`pg_hba.conf` ファイルを構成します。

証明書認証方法を使用する場合、接続マネージャーはサーバーキーを提示します。この証明書をConnection
Managerアドレスから受け入れるようにPGDノードを構成する必要があります。

接続マネージャーは、キーがAES暗号化を使用したPKCS#8形式である場合、サーバーキーの復号化への\ ``ssl_passphrase_command``
の使用をサポートします。

.. ::
   ## クライアント証明書認証を使用する

Connection Managerでクライアント証明書\ ``cert``
認証を使用しないことをお勧めします。

クライアント証明書は転送できません。したがって、\ ``cert``
認証を使用する場合、PGDノードへのConnection Managerの接続は、 ``trust``
などの別の認証方法を使用するように構成する必要があります。

``cert`` 認証を使用する場合、Connection
ManagerはユーザーIDマッピングで\ ``pg_ident.conf`` をサポートします。

Connection Managerの認証オプション
----------------------------------

Connection Managerは、 ``pg_hba.conf`` の\ ``user`` および\ ``database``
フィールドの正規表現マッチングもサポートしています。これにより、ユーザー名とデータベース名を照合するためのパターンを指定できるため、複数のユーザーとデータベースの認証の管理が簡単になります。

グループメンバーシップチェックもサポートされています。これにより、各ユーザーを個別に指定するのではなく、データベースに接続できるユーザーのグループを指定できます。

サポートされていないpg_hba.confルール
-------------------------------------

ルールが接続マネージャーでサポートされていない場合、警告としてログに記録され、無視されます。

LDAP認証の注意事項と制約
------------------------

接続マネージャーは、次のキー制約付きで、PostgreSQLと同じLDAP認証機能をサポートします。

- Connection
  Managerは、LDAPサーバーとの通信にOpenLDAPライブラリを使用しません。その結果、標準のOpenLDAP構成ファイル
  ``ldap.conf`` または\ ``.ldaprc`` など および環境変数は無視されます。

- Connection Managerは、 LDAPSまたはLDAP
  StartTLSを使用する場合、デフォルトでLDAPサーバー証明書を検証します。
  LDAPサーバーのSSL証明書に必要なCA証明書は、システムのトラストストアにある必要があります。

- ``LDAPTLS_REQCERT=never``
  環境変数を設定することにより、LDAPサーバーのSSL証明書の検証を抑制します。この変数の他の値は無視されます。
