こんにちは。セシオスサポートチームです。
今回は、弊社から提供しているOSS、「LISM」(リスム)について紹介したいと思います。
LISMは 弊社で開発した、LDAP、AD、RDBMSなどを対象にID情報を一元管理するためのソフトウェアで、OSSとして提供しており、誰でもご利用頂くことが可能です。
今回はRHEL8の環境でその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  | 
https://www.openldap.org/ 公式サイトからソースをダウンロードします。執筆時点では 2.6.3 が最新でした。
| curl -O https://www.openldap.org/software/download/OpenLDAP/openldap-release/openldap-2.6.3.tgz | 
| /usr/bin/ld: xxxx.o: relocation R_X86_64_32 against `.xxxx' can not be used when making a PIE object; recompile with -fPIC | 
| t ar zxvf ./openldap-2.6.3.tgz -fPIC" LDFLAGS="-fPIC" ./configure --prefix=/usr/local/lism --enable-perl  | 
make に成功すると、以下のように、done と表示されます。続けて make install してください。
|  | 
openldap、LISMのインストールが完了したら、PATHを通しておきます。
| vi ~/.bashrc(末尾に追加)export PATH=$PATH:/usr/local/lism/bin/:/usr/local/lism/sbin/source ~/.bashrc | 
| # バックアップ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>
|  | 
|  | 
編集内容
<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>
| 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 | 
|  | 
| ldapsearch -x -LLL -H ldap://localhost:3890/ -D "cn=Manager,dc=lism,dc=com" -w 'PWD1234' -b "ou=Master,dc=lism,dc=com" | 
| ldapsearch -x -LLL -H ldap://localhost:3890/ -D "cn=Manager,dc=lism,dc=com" -w 'PWD1234' -b "ou=TestLDAP,dc=lism,dc=com" | 
参照先は同じなので、取得できるデータは代わり映えしませんが、
この様に源泉データとして設定している箇所に対してのサーチ、
データソースとして登録しているシステムに対してのサーチが行なえます。
いかがでしょうか。今回は構築ということで、あまり設定をしていないため、同期部分の機能がわかりづらかったと思いますが、RHEL8での構築手順は以上となります。
詳しい使い方はまた同コラムの次回にご紹介したいと思います。
今後共セシオスリンクをよろしくお願いいたします。
以上、セシオスサポートチームでした。