ページへ戻る

− Links

 印刷 

Gentoo Linuxな生活​/LDAPのセキュリティ設定 のバックアップソース(No.1) :: Nest Of Hawk

xpwiki:Gentoo Linuxな生活/LDAPのセキュリティ設定 のバックアップソース(No.1)

  Next »[4]
*LDAPデータのユーザ間セキュリティを考慮する [#cf10c8a8]
LDAPのデータはいろいろ重要データが入っています。中には人に見られたくないデータもある。なもので、ユーザ間で見られても良いデータ、見られると嫌なデータを分けておこうと思います。

私のポリシーは以下で。
-Managerさんは当然全て読み書き可能
-syncuserさんはレプリカの都合上全て読み出し可能
-パスワードは自分自身は読み書き可能。他ユーザは参照も不可
-個人アドレス帳も他ユーザは参照不可。個人情報保護の観点で。
-その他の情報は他ユーザも参照可能
ということで行ってみましょう。

*LDAPサーバのアクセスリスト [#y657123f]
OpenLDAPにはアクセスリストという便利な機能があります。これを用いることで、各ユーザのアクセス制御が可能です。
[[SLAPD.ACCESSのManページ>http://www5f.biglobe.ne.jp/~inachi/openldap/man23/man5/slapd.access.5.html]]とか見ると良いですかね。構文は

 access to <what> [ by <who> <access> [ <control> ] ]+

:<what>|どの要素を
:<who>|誰に
:<access>|どんなアクセスを許すか
:<control>|アクセス規則適用のフローを制御します

詳しくは、そっちを見てやってください。

さて、アクセスリストのポリシー実現方法を具体的に。
**パスワードは自分自身は読み書き可能。他ユーザは参照も不可 [#d4a5bfd5]
 access to attrs=userPassword,sambaNTPassword
        by self write
        by dn="cn=Manager,dc=example,dc=com" write
        by dn="cn=syncuser,dc=example,dc=com" read
        by anonymous auth
        by * none
さて。userPasswordとsambaNGPasswordは、
-self=自分自身は書き込み可能。
-Managerさんも書き込み可能
-レプリカに使用するユーザは読み込みが可能
-その他の人は認証

*個人アドレス帳も他ユーザは参照不可 [#f0c48ca7]
 access to dn.regex="ou=(.+),ou=Address,,dc=example,dc=com"
        by self write
        by dn="uid=$1,ou=People,dc=example,dc=com" write
        by dn="cn=Manager,dc=example,dc=com" write
        by dn="cn=syncuser,dc=example,dc=com" read
        by anonymous auth
        by * none
さてー、今度は記号が出てきましたね…正規表現です。(.+)は、任意の文字列にマッチする、を表現します。つまりうちのポリシーの場合は、ユーザごとにuidと一致したouのアドレス帳を持つ設定にしてますので、対応する文字列が出てきますね。

で、2行飛ばして、uid=$1ってあるのわかりますかね?これは、後方検索といって、先の正規表現にマッチした文字列が代入されます。つまり、``あるユーザのアドレス帳は、あるユーザだけ書き込み可能``を意味します。つまりあるユーザのアドレス帳は
-自分は書き込みOK
-あるユーザだけ書き込み可能
-Managerさんも書き込み可能
-レプリカユーザは読み込みだけ可能
-その他の人は認証

**-その他の情報は他ユーザも参照可能 [#yecb2bb9]
 access to *
        by self write
        by users read
        by anonymous auth
        by * none
他の情報全ては
-自分は書き込み可能
-ユーザは参照のみ可能
-その他の人は認証

*slapd.confに反映 [#l3e96a14]
以上の設定を/etc/openldap/slapd.confに反映します。
 access to attrs=userPassword,sambaNTPassword
        by self write
        by dn="cn=Manager,dc=example,dc=com" write
        by dn="cn=syncuser,dc=example,dc=com" read
        by anonymous auth
        by * none

 access to dn.regex="ou=(.+),ou=Address,,dc=example,dc=com"
        by self write
        by dn="uid=$1,ou=People,dc=example,dc=com" write
        by dn="cn=Manager,dc=example,dc=com" write
        by dn="cn=syncuser,dc=example,dc=com" read
        by anonymous auth
        by * none

 access to *
        by self write
        by users read
        by anonymous auth
        by * none
このアクセスリストは、上から順に評価されていきますので、順序は誤らないように注意してね。特に一番最後のaccess to *が頭にあると、全てが台無しでございます。気をつけてねー。


  Next »[4]