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を入れます。
|
依存パッケージインストール
ソースからコンパイルをするので、開発者ツールで一通り入れます。
dnf groupinstall "Development Tools"
|
開発者ツールで入ってこなかった、コンパイルに必要なパッケージと、LISMで必要になるパッケージをインストールしていきます。
dnf install perl perl-devel perl-ExtUtils-Embed cyrus-sasl-devel libdb-devel libtool-ltdl-devel openssl-devel |
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 -fPIC" LDFLAGS="-fPIC" ./configure --prefix=/usr/local/lism --enable-perl |
make に成功すると、以下のように、done と表示されます。続けて make install してください。
LISMインストール
LISMは https://ja.osdn.net/projects/lism/ 配布ページよりダウンロードしてサーバーへ転送してください。
解凍し、インストールしていきます。
|
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で使用する、フォルダを作成してください。
|
LISMの設定ファイルを作成します。
|
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を動かしてみたいと思います。
|
動作確認
源泉としたLDAPサーバーが以下のような情報を保持しています。
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" |
データソースとして登録している TestLDAP に対して検索処理を実施します。
ldapsearch -x -LLL -H ldap://localhost:3890/ -D "cn=Manager,dc=lism,dc=com" -w 'PWD1234' -b "ou=TestLDAP,dc=lism,dc=com" |
参照先は同じなので、取得できるデータは代わり映えしませんが、
この様に源泉データとして設定している箇所に対してのサーチ、
データソースとして登録しているシステムに対してのサーチが行なえます。
終わりに
いかがでしょうか。今回は構築ということで、あまり設定をしていないため、同期部分の機能がわかりづらかったと思いますが、RHEL8での構築手順は以上となります。
詳しい使い方はまた同コラムの次回にご紹介したいと思います。
今後共セシオスリンクをよろしくお願いいたします。
以上、セシオスサポートチームでした。