No. 3 access toを理解する。
manを見ると以下のような定義になっている。
$ man slapd.conf
access to
slapd.accessを見ろと書いてあるので見る。
$ man slapd.access
以下、ざっくりとまとめ。
what
whatはtoに許可するエントリーを記述。なんとなく読むと、以下の指定方法がある。
値 | 説明 |
---|---|
dn | DNや正規表現を記述 |
filter | ldapのfilter |
atters | 属性 |
who
whoは割と簡単で、以下。
値 | 説明 |
---|---|
* | すべて |
anonymous | 匿名ユーザー |
users | 認証したユーザー |
self | 自身のdn |
access
accessはちょっと複雑。
定義としては、
[self]{<level>|<priv>}
selfだけが特別。
levelは、none、auth、compare、search、read、write。この辺は大丈夫。
privは、{=|+|-}{w|r|s|c|x|0}+だそうだ。
privは、=wrsとか、+wとかいう設定ができて、levelの項目の先頭1文字だそうで、細かい設定ができると。xはauthとなる。
control
設定可能な値は以下。
- stop
- continue
- break
ちょっと良くわからない。また違うエントリーで検証する。
以前の設定の解析
access to attrs=userPassword by anonymous auth by * none
userPasswordフィールドは、匿名ユーザーで、認証に使用できる。
その他のユーザー、用途にはアクセスできない。
access to * by self read
すべてのフィールドは、認証したユーザー自身のもののみ読み込める。
認証に使用した、dnのエントリーのみ読める。
ということになります。
上記の設定で、接続したユーザー以外は、パスワードフィールドを使用した認証ができ、認証したユーザーは認証に使用したdnのみ読み込めるという最低限のことができるようになる。
動作確認
selfの動作確認
selfの動作の確認。前回の設定のままで自身のdn以外にアクセスしようとしてみる。
# ldapsearch -x -LLL -D "uid=namakuwa,ou=user,dc=kuwalab,dc=net" -W -b " uid=kuwagata,ou=user,dc=kuwalab,dc=net" "(objectClass=*)" Enter LDAP Password: #
ちゃんと、他のエントリは読めない。
簡単には、ここまで。続きは、プログラムからアクセスするようにしてからにする。
次は、値の変更とか削除とか。