OpenLDAPサーバーがRHEL8/CentOS8のリポジトリから無くなったので対策検討

アプリケーションのユーザー管理や認証では、従来からのLDAP(Lightweight Directory Access Protocol)を利用したい。多くの認証&アクセス制御のソフトウェアやネットワーク機器などがLDAPに対応しているためである。これはKubernetes上でコンテナ化したアプリケーションを運用するとしても同じである。

ところが、OpenLDAPサーバーは RHEL8/CentOS8 では、もはや、ソフトウェアリポジトリに登録されていない。それでは、RHEL8/CentOS8で LDAPサーバーを設定したければ、どうすれば良いのか？ 

この記事は代替案について調べてみた結果のメモである。

~~~
## CentOS8系の場合
$ cat /etc/redhat-release 
CentOS Linux release 8.0.1905 (Core) 
$ yum search openldap-server
<中略>
No matches found.
$ logout

## CentOS7系の場合
<中略>
$ cat /etc/redhat-release 
CentOS Linux release 7.7.1908 (Core)
$ yum search openldap-server
<中略>
openldap-servers.x86_64 : LDAP server
openldap-servers-sql.x86_64 : SQL support module for OpenLDAP server
~~~

参考資料: [Red Hat Enterprise Linux 8 の OpenLDAP について調べてみた](https://tech-lab.sios.jp/archives/15115)



## OpenLDAPの非推奨化

RHEL7.4 リリースノートの中で「第39章 非推奨の機能」としてOpenLDAPサーバーが挙げられている。

~~~
Identity Management に関連する非推奨機能
以下の機能は将来削除されるか、または他のコンポーネントに置き換えられる予定です。
* authconfig
* pam_pkcs11
* pam_krb5
* OpenLDAP サーバー
~~~

引用元：[RHEL7.4 リリースノート 第39章 非推奨の機能](https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/7.4_release_notes/chap-red_hat_enterprise_linux-7.4_release_notes-deprecated_functionality)

RHEL7 のメンテナンスサポート 2フェーズ は、2024年6月30日と公表されており、RHEL8のメンテナンスサポートは、2029年5月が予定されており、延長ライフサイクルサポートの終了日は未定となっている。そのため、これから構築するシステム基盤では、RHEL8ベースで考えていきたい。
参考資料 [Red Hat Enterprise Linux のライフサイクル](https://access.redhat.com/ja/support/policy/updates/errata#Maintenance_Support_2_Phase)


## 対策案

[OpenLDAP](https://www.openldap.org/)のOSSプロジェクトホームページから、ソースコードやドキュメントを誰でも無料で利用できるので、対策として、２つの方法の案が考えられる。

* 案1 OpenLDAP 2.4 のソースコードをダウンロードして、ビルドして、インストールする
* 案2 代替となるOSSプロジェクトで RHEL8/CentOS8 のバイナリを提供するLDAPサーバーを採用する。


## OpenLDAPをソースコードからビルド＆インストール

案1では OpenLDAPについて、複数のWebページで、CentOS8上で、ソースコードからインストール方法が開示されている。

* [Installing OpenLDAP from Source on CentOS 8](https://tylersguides.com/guides/install-openldap-from-source-on-centos-8/)
* [Install and Setup OpenLDAP on CentOS 8](https://kifarunix.com/install-and-setup-openldap-on-centos-8/)
* [Symas OpenLDAP for RHEL and CentOS 8](https://ldap.com/2019/12/04/symas-openldap-for-rhel-and-centos-8/)
* [OpenLDAP 2.A Quick-Start Guide](https://www.openldap.org/doc/admin24/quickstart.html)

上記、3番目の Symasは、rpmパッケージを提供しており、自分自身でソースコードからバイナリをビルドする必要はない。また、４番目の Quick-Start Guideでは、Linuxディストリビューションに関わらず OpenLDAPをソースコードからビルドする方法が案内されている。

案１は、ソースコードをからバイナリをビルドする、すなわち、実行形式を作らなくてはいけない。OpenLDAPのコードは、様々なライブラリを利用しており、それら必要なコードの環境を準備することから始めなくてはいけないため、インストールに時間を要する。スキルが無いとできないと言う訳では無いが、ソースコードのコンパイルやライブラリのリンクなどの過程で問題が発生した場合、原因を突き止めて対策する必要がある。また、バイナリが正しく動作するかのテストも必要であり、機能テストの実行は、コマンドのオプションが提供されているので、テストの実行自体は簡単にできる。しかし、テストの結果で不具合が発見された場合は、ソースコードやリンクするライブラリとの整合などを自身で調べて対応が必要となる。これも時間を要する作業となり、問題の状態から英語資料を調べて対策を探すなどが必要で、目的を達成する点では好ましく無い。

この様な理由から、案1のソースコードからインストールすることは、避けて、バイナリを利用することから始めたい。


## 代替のLDAPソフトウェア(案２の具体化)

[ldap.com](https://ldap.com/)は、LDAPディレクトリサービスの使用に関する情報を提供し、その使用を推奨することを目的としたウェブサイトであり、有用な情報が掲載されている。この中で[Directory Servers](https://ldap.com/directory-servers/)には、商用ソフトウェア製品、オープンソースプロジェクトなどが紹介されている。

特に利用できそうなソフトウェアを以下にピックアップする。

* [389 Directory Server](https://directory.fedoraproject.org/index.html)  

このソフトウェアは、Fedora Directory Server と呼ばれていた物であり、Linuxの企業向けオープンソースのLDAPとして開発が推進されている。このソフトウェアは、有償サブスクリプションサービス下で利用することができる Red Hat Directory Server とドキュメントが共通との記述があり、相違点についても記載がある。 このソフトウェアは、Linuxの各ディストリビューションに対して、[バイナリコードのダウンロード](https://directory.fedoraproject.org/docs/389ds/download.html)を提供している。

* [ApacheDS](https://directory.apache.org/apacheds/)

Javaで書かれたLDAPサーバーで、KereberosなどLDAP以外の機能も提供している。こちらもApacheライセンスで提供されるオープンソースコードである。このソフトウェアも各Linuxディストリビューションに対して[バイナリコードのダウンロード](https://directory.apache.org/apacheds/downloads.html)がある。このApacheDSの良いところは、[Apache Directory Studio](https://directory.apache.org/studio/) と呼ばれる Eclipse-based のLDAPブラウザがセットで開発されている点で、アプリケーション開発者にとってフレンドリーなLDAPである。


* [IBM Security Directory Server](https://www.ibm.com/support/knowledgecenter/ja/SSVJJU_6.4.0/com.ibm.IBMDS.doc_6.4/c_po_SDS_overview.html)

これは有償のIBMのソフトウェア製品でありOSSでは無い。Javaランタイム環境のWebSphere や Unix互換オペレーティングシステムのAIXなどとの連携もサポートされた製品で、筆者も過去何度かSIプロジェクトで提案して構築した経験がある。この製品は認証を必要とするIBM関連製品との連携が楽に実施できる点、ウェブUIなどが充実している点、データの管理には、Db2を利用しているため、既存のデータベース運用のノウハウでLDAPを利用できる点で優れている。前述の２つのOSSと比較すると、ソフトウェアの使用料金や保守サポート料などが必要となる。

* [Microsoft Active Directory](https://docs.microsoft.com/ja-jp/windows/win32/srvnodes/directories?redirectedfrom=MSDN)

これはマイクロソフト社の有償ソフトウェア製品でありOSSでは無い。Windowsサーバーとクライアントを構築管理する者にとっての基礎知識知識である。このActive Directoryは、Windowsドメインのサービスを始め様々な機能を提供する。

* ドメインサービス：　ドメインの機能を提供する
* 証明書サービス：	社内認証局としての機能を提供する
* フェデレーションサービス： 組織間のシングルサインオンの機能を提供する
* Rights Managementサービス： 特定のファイルに対する暗号化とアクセス制御機能を提供する
* ライトウェイトディレクトリサービス： ディレクトリデータベースの機能を提供する

Active Directoryは、Windows Serverの管理者であれば基礎知識であり、スキルを持ったエンジニアも確保しやすいと思われるが、RHEL8/CentOS8の基板のためにワザワザ導入するのも現実的ではない。


* [Red Hat Directory Server](https://www.redhat.com/en/technologies/cloud-computing/directory-server)

これは、Red Hat社の有償サブスクリプション契約下で利用可能なソフトウェアである。この製品は、オペレーティングシステムに依存せず、管理者がユーザーIDとアプリケーション情報を保存と取得ができる。先に挙げた[389 Directory Server](https://directory.fedoraproject.org/index.html) のサブスクリプション・サポート付き版と言える。

* アプリケーションの設定
* ユーザープロファイル
* グループデータ
* ポリシー
* アクセス制御情報

アプリケーションは、個別のファイルを読み取る代わりに、ディレクトリに設定を保存および取得することで、場所の独立性を実現できる。これにより、ユーザーはほぼすべてのコンピューターで作業することができる。また、情報を使用するアプリのサイズや数に関係なく、IT管理者はユーザーの資格情報とプロファイルを1か所で管理できる。


## まとめ

Red Hat8/CentOS8 のリポジトリに、OpenLDAP Server が登録されなくなった。代替案が RHELのドキュメントに明確に掲示されていない。そこで、代替案について調べた結果、[Red Hat Directory Server](https://www.redhat.com/en/technologies/cloud-computing/directory-server)のベースとなっていると推測される [389 Directory Server](https://directory.fedoraproject.org/index.html) があった。この両者のソフトウェアのドキュメントは共通とされる。

Linuxディストリビューションが配布するバイナリ内でOpenLDAPを継続して利用したければ、Ubuntu Linux へ移行すればよく、CentOS8 から RHEL8 のパスを視野に入れてOSSを利用するのであれば、[389 Directory Server](https://directory.fedoraproject.org/index.html) が有望だと思われる。また、アプリケーション開発者にとって、フレンドリーなLDAPは、EclipseベースのApache Directory Studioをプロジェクトにもつ[ApacheDS](https://directory.apache.org/apacheds/) も候補にあげられる。