LDAPで研究室のアカウント管理
研究室では主にファイルサーバーを使ってデータの共有・継承を行っています。今後Wikiやredmineなども活用したいと思い、アカウントの管理が複雑になりそうなので、LDAPを導入することにしました。
LDAPは様々な情報を保管するデータベースのようなソフトですが、主にアカウント(ユーザーIDやパスワード)を保管して、様々なソフトに認証の仕組みを提供することができます。
今回はOpenLDAPを使います。
左のloginをクリックして、ログイン画面に進む。
Login DNとしてcn=admin, dc=tsbio, dc=info 、Passwordとしてcompose.yamlに設定したものを入力してAuthenticateをクリックする。
OpenLDAPのインストール
実機のOSはMIRACLE Linux9.0です。これにdockerでOpenLDAPのコンテナを作成します。 compose.yamlを編集して、ldapサービスを定義します。compose.yamlの一部
ldap:
image: osixia/openldap
container_name: ldap
restart: always
volumes:
- ./ldap/var/lib/ldap:/var/lib/ldap
- ./ldap/etc/ldap/slapd.d:/etc/ldap/slapd.d
ports:
- 389:389
environment:
LDAP_ORGANISATION: tsbioinfo
LDAP_DOMAIN: tsbio.info
LDAP_BASE_DN: "dc=tsbio,dc=info"
LDAP_ADMIN_PASSWORD: xxxxx
OpenLDAPを起動
# docker compose up -d ldap
接続確認
コンテナに入ってldapsearchコマンドを動かします。# docker exec -it ldap bash # ldapsearch -x -H ldap://localhost -b dc=tsbio,dc=info -D "cn=admin,dc=tsbio,dc=info" -w xxxxx (以下検索結果) # # extended LDIF # # LDAPv3 # baseldapsearchコマンドをホスト(MIRACLE LINUX)側にインストールしておくと、いちいちコンテナに入らなくてすみます。with scope subtree # filter: (objectclass=*) # requesting: ALL # # tsbio.info dn: dc=tsbio,dc=info objectClass: top objectClass: dcObject objectClass: organization o: tsbioinfo dc: tsbio
# dnf install openldap # ldapsearch -x -H ldap://localhost -b dc=tsbio,dc=info -D "cn=admin,dc=tsbio,dc=info" -w xxxxx (以下省略)
データの登録
LDIFという形式でデータを用意し、ldapaddコマンドで登録、、、というのは骨が折れるので、phpLDAPadminを使います。 こちらもdockerを利用し、ホストのApacheからリバースプロキシで接続するようにします。compose.yamlの一部
ldap-admin:
image: osixia/phpldapadmin
restart: always
ports:
- 10085:80
environment:
PHPLDAPADMIN_LDAP_HOSTS: ldap
PHPLDAPADMIN_HTTPS: false
phpLDAPadminを起動
# docker compose up -d ldap-admin
/etc/httpd/conf.d/kiku3.confの一部
<Virtualhost *:443>
<Location /ldap/>
Require ip 157.110.xx.yy # IPアドレスによるアクセス制限
ProxyPass http://localhost:10085/
ProxyPassReverse http://localhost:10085/
</Location>
</Virtualhost>
apacheを再起動
# systemctl restart httpd
動作確認
https://kiku3.tsbio.info/ldap/ をブラウザーで開くと、以下のような画面が表示される。
左のloginをクリックして、ログイン画面に進む。
Login DNとしてcn=admin, dc=tsbio, dc=info 、Passwordとしてcompose.yamlに設定したものを入力してAuthenticateをクリックする。
メンバー登録
ou=Laboの登録
- 画面左のツリーで、dc=tsbio,dc=infoをクリックする。
- Create new entry here をクリックする。
- 右のTemplates中の Generic: Organisational Unitをクリックする。
- Laboと入力し、Create Objectをクリックする。
inetOrgPersonの登録
ol=Laboを追加したのと同じように、ou=Laboの下にCourier Mail Accountを作成する。 今のところサーバーへのログインとかsambaアカウントの作成を考えておらず、ウェブサービスの認証に使うだけなので、このオブジェクトで十分と思う。