2012年1月14日土曜日

CentOS6.2 の SSSD で LDAP filter を設定する

SSSDを使って、LDAP連携をやってるんだけど、特定の属性値を持ったIDだけを連携対象に
したいと思って、ちょっと調べてみました。

結果は、微妙……

manにもあるとおり、こんな設定を入れる事で、認証の制限は出来ました。
access_provider = ldap
ldap_access_filter = memberOf=cn=allowedusers

でも、ユーザーとしては、存在している事になってしまいます。
例えば、id user01 とか、getent passwd でユーザー情報が確認出来てしまいます。

ログイン出来なければ良いシステムであれば、これでも良いんだけど、例えばメールサーバ
だと、pop/imap等でメールを取り出す事は出来ないけど、送られてきたメールはサーバが
受信してしまいます。

これでは、メールを送ってくれた人も、メールが届いていない事に気づけないし困ってしまいます。

という事で、現時点で、LDAP上のアカウントのうち、システムを利用できるユーザーを、適当な
ldap filterを使って制限を行いたい場合は、sssdは使わずに、旧来の nslcd を使う方法を取り、
nslcd.conf と pam_ldap.conf でfilterを掛ける必要がありそうです。



ちなみに、SSSDの最新版(1.7系)では、LDAP filterを柔軟に適用出来るようです。
SSSDは、まだまだ発展途上といったところでしょうか。。。