Active Directory の LDAP認証で PostgreSQL にログインする

PostgreSQLでは md5 を利用したパスワード認証を使用することが多いですが、LDAP 利用した認証も可能です。 Active Directory (AD DS)を LDAPサーバーとした PostgreSQL のログイン認証を試します。

今回はテスト用に用意したサーバー winsrv001 とドメイン jbs0023.local を用いて検証を行います。

Active Directory のユーザー作成

「Active Directory ユーザーとコンピューター」を開き、ユーザーを作成します。

ドメイン名:jbs0023.local サーバー名:winsrv001

PostgreSQL にログインするユーザーの作成

PostgreSQL にログインするユーザー「db014」を作成します。ユーザー名は PostgreSQL に作成するユーザーと同じユーザー名と同じにする必要があります。

バインドユーザーの作成

Active Directory に保存されているパスワードをクエリするためのユーザー「bind」を作成します。このユーザーは PostgreSQL にログインしません。

PostgreSQL のユーザー作成

PostgreSQL のユーザー「db014」を作成します。

認証を Active Directory で行うのでパスワードの設定は必要ありません。

$ createuser db014

認証方法の設定

pg_hba.conf の編集

PostgreSQL の認証方法を指定する pg_hba.conf に以下の1行を追記します。

host    all             db014           192.168.21.0/24         ldap ldapserver=winsrv001.jbs0023.local ldapbasedn="cn=USERS,dc=jbs0023,dc=local" ldapbinddn="CN=bind,CN=Users,dc=jbs0023,dc=local" ldapbindpasswd="bindユーザーのパスワード" ldapsearchattribute="sAMAccountName"

LDAP認証時の各設定オプション

ldapserver LDAPサーバー名
ldapbasedn ユーザーを検索するためのルートDN
ldapbinddn バインドするユーザーのユーザーDN
ldapbindpasswd バインドするユーザーのパスワード
ldapsearchattribute ユーザー名を一致させるための属性

pg_hba.conf の反映

設定した内容を反映するために pg_hba.conf の再読み込みを行います。

$ pg_ctl reload

ログインテスト

通常のログインと同様にログインします。

最後に

LDAP認証による PostgreSQL のログインを試しました。

Active Directory を LDAPサーバーとして利用するにはバインドユーザーが別途必要で、そのパスワードをpg_hba.confに記載しなければならないのは不便ですが、比較的簡単に PostgreSQLの認証を Active Directory でできました。

データベースに直接アクセスするユーザーが多い場合など、認証をActive Directoryで行ったほうが管理しやすい場面があると思います。

執筆担当者プロフィール
三条 光暢

三条 光暢(日本ビジネスシステムズ株式会社)

Oracle、PostgreSQLを中心に各種データベースの設計・構築・運用を携わっています。

担当記事一覧