ページへ戻る

− Links

 印刷 

Gentoo Linuxな生活​/LDAPのセキュリティ設定 :: Nest Of Hawk

xpwiki:Gentoo Linuxな生活/LDAPのセキュリティ設定

ページ内コンテンツ
  • LDAPデータのユーザ間セキュリティを考慮する
  • LDAPサーバのアクセスリスト
    • パスワードは自分自身は読み書き可能。他ユーザは参照も不可
  • 個人アドレス帳も他ユーザは参照不可
    • その他の情報は他ユーザも参照可能
  • slapd.confに反映

LDAPデータのユーザ間セキュリティを考慮する anchor.png[1]

LDAPのデータはいろいろ重要データが入っています。中には人に見られたくないデータもある。なもので、ユーザ間で見られても良いデータ、見られると嫌なデータを分けておこうと思います。

私のポリシーは以下で。

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

LDAPサーバのアクセスリスト anchor.png[2]

OpenLDAPにはアクセスリストという便利な機能があります。これを用いることで、各ユーザのアクセス制御が可能です。 SLAPD.ACCESSのManページ[3]とか見ると良いですかね。構文は

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

詳しくは、SLAPD.ACCESSのManページ[3]を見てやってください。

さて、アクセスリストのポリシー実現方法を具体的に。

Page Top

パスワードは自分自身は読み書き可能。他ユーザは参照も不可 anchor.png[4]

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とsambaNTPasswordは、

  • self=自分自身は書き込み可能。
  • Managerさんも書き込み可能
  • レプリカに使用するユーザは読み込みが可能
  • その他の人は認証
Page Top

個人アドレス帳も他ユーザは参照不可 anchor.png[5]

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さんも書き込み可能
  • レプリカユーザは読み込みだけ可能
  • その他の人は認証
Page Top

その他の情報は他ユーザも参照可能 anchor.png[6]

access to *
       by self write
       by users read
       by anonymous auth
       by * none

他の情報全ては

  • 自分は書き込み可能
  • ユーザは参照のみ可能
  • その他の人は認証
Page Top

slapd.confに反映 anchor.png[7]

以上の設定を/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 *が頭にあると、全てが台無しでございます。気をつけてねー。


Last-modified: 2011-01-10 (月) 22:27:05 (JST) (4827d) by maruo