2009/10/24

OpenLDAP 2.4: 認証に使うIDの追加

UbuntuやCentOSにログインする時にLDAPを参照するようにしてみます。

通常はユーザーの情報の中に認証に使うエントリも追加するべきなのでしょうが、 実験用に別のコンテナを作成してIDを追加しました。

コンテナの追加

次のような内容の"add_account_group.ldif"を作成し、ldapaddで追加します。 $ ldapadd -x -W -D cn=Manager,dc=example,dc=org -f add_account_group.ldif

dn: ou=accounts,dc=example,dc=org
objectClass: organizationalUnit
ou: accounts

IDの追加

objectClassにはnis.schemaに定義されているposixAccountを使いました。 ここら辺の定義のベースになっているのは、rfc2307だと思います。

将来的にはautomountに関連した情報なども格納するような拡張が計画されているようで、rfc2307bisという文書もinternete-draftsの中から探す事ができます。 OpenLDAPに附属するschemaディレクトリには含まれていないようですが、389 DirectoryServer (a.k.a. Fedora Directory Server)には"10rfc2307bis.ldif"の名前で含まれています。

今回はログインするために必要な範囲の情報を入れていきます。 objectclassに指定している"inetOrgPerson"と"posixAccount"で必須とされているのは、それぞれ"cn sn"(PersonでMUST定義)と"cn uid uidNumber gidNumber homeDirectory"の6エントリです。

loginShellを追加して、次のような"add_user_e0001.ldif"を作成して、ou=accounts追加の時と同じように"-f"に指定します。 なおuserPasswordの文字列はslappasswdコマンドを使って生成しています。 $ slappasswd -h {SSHA} -s secretpassword

dn: cn=e0001,ou=accounts,dc=example,dc=org
objectclass: inetOrgPerson
objectclass: posixAccount
cn: e0001
sn: e0001 User
uid: e0001
uidNumber: 3001
gidNumber: 3001
homeDirectory: /Users/e0001
userPassword: {SSHA}gYeybCGMSjj+qIJd23CnNTYwBHK58gH6
loginShell: /bin/bash
mail: e0001@example.org

まとめ

とりあえずテスト用なので最小限のエントリを作成しましたが、実際にはポリシーを徹底させるためにshadowAccountオブジェクトクラスを使う必要もあるかもしれません。 それぐらいは固定的な値を設定すれば良いのかもしれませんが、パスワードを変更させるためにクライアントをマスターサーバーに直接接続させるのか、という考慮も必要に思えます。

複数マスター構成を取っても根本的な負荷分散は難しいので、マスターサーバーに対する更新処理はバッチ的に処理する仕組みが必要になるかもしれません。 ユーザーのエントリをログインID情報を保持する以外にもメールアドレスや、その他の情報を総合的に管理する時の台帳として使うのであれば、情報の更新などを複数のアプリから直接行なうと問題になりそうです。

また各クライアントからパスワードを変更させるために直接マスターサーバーにアクセスさせるのか、という根本的な構成について検討する必要もあるように思えます。

0 件のコメント: