1: 2011-01-10 (月) 22:23:09 maruo[5] [6] | |||
---|---|---|---|
Line 1: | Line 1: | ||
+ | *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 *が頭にあると、全てが台無しでございます。気をつけてねー。 |
(This host) = https://femt.ddo.jp