RHEL8 でLISMを構築する

schedule 2022/09/05  refresh 2023/11/08

概要

こんにちは。セシオスサポートチームです。

今回は、弊社から提供しているOSS、「LISM」(リスム)について紹介したいと思います。

 

LISMは 弊社で開発した、LDAP、AD、RDBMSなどを対象にID情報を一元管理するためのソフトウェアで、OSSとして提供しており、誰でもご利用頂くことが可能です。

 

今回はRHEL8の環境でそのLISMを構築してみたいと思います。

 

目次

  • 環境
  • リポジトリ追加
  • 依存パッケージインストール
  • openldapインストール
  • LISMインストール
  • LISM設定
  • 動作確認
  • 終わりに

 

 

環境

 

OS:
 Red Hat Enterprise Linux release 8.6 (Ootpa)

 

ミドルウェア:
 openldap 2.6.3
 LISM 2.3.19

リポジトリ追加

リポジトリを追加します。appstreamとpowertools、EPELを入れます。

 

subscription-manager repos --enable rhel-8-for-x86_64-appstream-rpms 
subscription-manager repos --enable codeready-builder-for-rhel-8-x86_64-rpms
dnf config-manager --set-enabled rhel-8-for-x86_64-appstream-rpms
dnf config-manager --set-enabled codeready-builder-for-rhel-8-x86_64-rpms
dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

 

依存パッケージインストール

ソースからコンパイルをするので、開発者ツールで一通り入れます。

 

dnf groupinstall "Development Tools"

 

開発者ツールで入ってこなかった、コンパイルに必要なパッケージと、LISMで必要になるパッケージをインストールしていきます。

 

dnf install perl perl-devel perl-ExtUtils-Embed cyrus-sasl-devel libdb-devel libtool-ltdl-devel openssl-devel
dnf install perl-LDAP perl-XML-Simple perl-Digest-SHA1 perl-Text-CSV_XS perl-DBI

openldapインストール

https://www.openldap.org/ 公式サイトからソースをダウンロードします。執筆時点では 2.6.3 が最新でした。

 

curl -O https://www.openldap.org/software/download/OpenLDAP/openldap-release/openldap-2.6.3.tgz

 


ダウンロードしてきたら、解凍して、インストールしていきます。LISMは、openLDAPのperlをバックエンドとした構成で稼働するため、./configure では 必ず --enable-perl のオプションが必要です。

 

/usr/bin/ld: xxxx.o: relocation R_X86_64_32 against `.xxxx' can not be used when making a PIE object; recompile with -fPIC

 


ただし、通常のコンパイルだと、上記のようなエラーが発生しました。
これは、gccのコンパイルの挙動が、 version6 から変わったそうで、PIEというメモリ管理の仕組みを前提にしてリンクを張るそうです。
エラーメッセージにあるように、明示的に -fPIC を渡すことで回避できます。

今回検証に使用したgccのバージョンは、「gcc バージョン 8.5.0 20210514 (Red Hat 8.5.0-10) (GCC)」でした。

 

tar zxvf ./openldap-2.6.3.tgz
cd ./openldap-2.6.3
env CC="gcc" CFLAGS="
-fPIC" LDFLAGS="-fPIC" ./configure --prefix=/usr/local/lism --enable-perl
make depend
make
make install

 

 

make に成功すると、以下のように、done と表示されます。続けて make install してください。

 

20220905_7

LISMインストール

LISMは https://ja.osdn.net/projects/lism/ 配布ページよりダウンロードしてサーバーへ転送してください。
20220905_8

解凍し、インストールしていきます。

 

tar zxvf ./LISM-2.3.19.tar.gz
cd ./LISM-2.3.19
perl Makefile.PL PREFIX=/usr/local/lism
make install

 

 

openldap、LISMのインストールが完了したら、PATHを通しておきます。

 

vi ~/.bashrc

(末尾に追加)
export PATH=$PATH:/usr/local/lism/bin/:/usr/local/lism/sbin/

source ~/.bashrc

 

LISM設定

 

LISMを設定してきます。以下の内容にファイルを書き換えてください。

 

# バックアップ
cp /usr/local/lism/etc/openldap/slapd.conf ~/

vi /usr/local/lism/etc/openldap/slapd.conf

 

 

編集内容

 

 

<config>
<!-- データ同期に関する設定 -->
<sync>
<master>
<containerdn>ou=Master</containerdn>
<data>TestLDAP</data>
</master>
</sync>

<!-- システムデータに関する設定 -->
<data name="TestLDAP">
<container>
<oc>organizationalUnit</oc>
<rdn>ou=TestLDAP</rdn>
</container>
<storage name="LDAP" hash="SSHA">
<uri>ldap://ssk-test1.int.secioss.work/dc=secioss,dc=ldap</uri>
<binddn>cn=Manager,dc=secioss,dc=ldap</binddn>
<bindpw>secret</bindpw>
</storage>
</data>
</config>

 

 

LISMで使用する、フォルダを作成してください。

 

mkdir /usr/local/lism/var/log

 

 

LISMの設定ファイルを作成します。

 

vi /usr/local/lism/etc/lism.conf

 

LISMでは、このLISM.conf に様々な設定を書き加えていくことで、ID同期の動きを拡張していきます。
厳選となるシステムの追加や、同期先のシステムを追加したり、同期を行うタイミングで特殊な処理を入れたりと、色々な使い方ができます。今回は、簡単にLDAPを厳選データとして構築します。

編集内容

編集内容

<config>
<!-- データ同期に関する設定 -->
<sync>
<master>
<containerdn>ou=Master</containerdn>
<data>TestLDAP</data>
</master>
</sync>

<!-- システムデータに関する設定 -->
<data name="TestLDAP">
<container>
<oc>organizationalUnit</oc>
<rdn>ou=TestLDAP</rdn>
</container>
<storage name="LDAP" hash="SSHA">
<uri>ldap://ssk-test1.int.secioss.work/dc=secioss,dc=ldap</uri>
<binddn>cn=Manager,dc=secioss,dc=ldap</binddn>
<bindpw>secret</bindpw>
</storage>
</data>
</config>

 

※太字で記載されているLDAPの接続先は、源泉としたいLDAPサーバーを指定してください。
今回は検証用の別サーバーに構築しているopenLDAPサーバーを源泉とした書き方になっています。

RHEL8ではperlのバージョンが変更され、perl の構文が変わっているせいで起動時にエラーが出てしまうので、一部手直しをします。以下のようにファイルを修正してください。

 

 

vi /usr/local/lism/share/perl5/LISM/Storage.pm

 

修正前

 

1681行目:

my @funcs = ($str =~ /%{([^}]*)}/g);
 

 

 

修正後

 

1681行目:

my @funcs = ($str =~ /%\{([^}]*)\}/g);

サービスファイルを定義して、管理を少し楽にします。

 

vi /usr/lib/systemd/system/lism.service

編集内容


[Unit]
Description=openldap LISM Server
After=syslog.target network.target

[Service]
Type=forking
PIDFile=/usr/local/lism/var/run/slapd.pid
Environment=PERL5LIB=/usr/local/lism/share/perl5
ExecStart=/usr/local/lism/libexec/slapd -h "ldap://:3890/"
ExecReload=/bin/kill -HUP $MAINPID
ExecStop=/bin/kill -TERM $MAINPID

[Install]
WantedBy=multi-user.target

サービスファイルを反映させます。

systemctl daemon-reload

 

LISMを動かしてみたいと思います。

 

 

systemctl start lism 

 

 

動作確認

源泉としたLDAPサーバーが以下のような情報を保持しています。

20220905_20

 

LISMに対して検索をしてみます。LISMの待機ポートは3890で設定しているので、接続先は localhost:3890 となります。

源泉データとして扱う、マスターに対して検索処理を実施します。

 

 

ldapsearch -x -LLL -H ldap://localhost:3890/ -D "cn=Manager,dc=lism,dc=com" -w 'PWD1234' -b "ou=Master,dc=lism,dc=com"

 

20220905_1_1

 

データソースとして登録している TestLDAP に対して検索処理を実施します。

 

 

ldapsearch -x -LLL -H ldap://localhost:3890/ -D "cn=Manager,dc=lism,dc=com" -w 'PWD1234' -b "ou=TestLDAP,dc=lism,dc=com"

 

20220905_2_2

 

参照先は同じなので、取得できるデータは代わり映えしませんが、
この様に源泉データとして設定している箇所に対してのサーチ、
データソースとして登録しているシステムに対してのサーチが行なえます。

 

終わりに

いかがでしょうか。今回は構築ということで、あまり設定をしていないため、同期部分の機能がわかりづらかったと思いますが、RHEL8での構築手順は以上となります。

 

詳しい使い方はまた同コラムの次回にご紹介したいと思います。

今後共セシオスリンクをよろしくお願いいたします。


以上、セシオスサポートチームでした。