本連載では今までさまざまなソフトウェアとLDAPの連携を紹介してきたわけですが、今回は今までほとんど触れていなかったデータ管理についてお話ししたいと思います。
エントリの追加
リスト1のようなLDIFファイルが存在した場合を考えてみましょう。
このエントリをLDAPサーバに追加するためには、図1のようにldapaddコマンドを使用してきました。今さらですが、-xオプションはSASLなどを使用しないシンプル認証、-DではバインドDNの指定、-wではバインドパスワードの指定を行います。SSL/TLSを使用しない限り、シンプル認証では平文のパスワードがネットワーク上を流れるため、注意が必要です。
すでにご存じの方もいらっしゃるかもしれませんが、ldapaddコマンドの-fオプションでファイルを指定するのではなく、標準入力から設定を更新する方法もあります(図2)。
これをうまく使えば、図3のようにUTF-8形式に変換したファイルをldapaddコマンドに渡すことも可能です。(LDAPサーバに日本語データを登録するためには、値をUTF-8形式に変換しておく必要があります)
また、ldapaddコマンドのファイルの状態をよく見てみるとわかりますが、ldapaddコマンドは多くの場合ldapmodifyコマンドへのリンクとなっており、実行時のコマンド名によって挙動が変化するようになっています(gentoo Linuxやソースからmakeした環境ではシンボリックリンクでしたが、CentOSの場合はハードリンクになっているようです)。
ldapmodifyコマンドは文字通りエントリを編集するために使われますが、-aオプションを使用することで次のようにldapaddコマンド同様、エントリの追加を行うことも可能です。
エントリの編集
orig.ldif(リスト2)が登録されているLDAPサーバが存在するとして、この中の鈴木さんのメールアドレスをsuzu@example.comに変更したいとします。
もっとも基本的な方法はldapmodifyコマンドを使用することです。ldapaddコマンド同様、-fオプションによるファイル指定、または標準入力からの登録も可能となっています。
ldapmodifyコマンドを使用し、-fオプションでリスト2のファイルを指定します(図5)。
この方法では、mail属性のみを変更したいだけの場合にも、それ以外のobjectClassやcnなどの属性を定義しておく必要がありました。もう一歩進んだldapmodifyコマンドの使用方法として、リスト3のような書式もあります。
このように、changetypeという特別な行を使用することにより、以下の例のように必要最低限のデータ量でエントリを更新することができるようになります。
リスト4のLDIFを日本語で説明するとすれば、次のようになるでしょう。
- dn: cn=tanaka,ou=People,dc=example,dc=com をこれから編集
- 変更内容はmodify
- mail属性を追加
- mail属性の内容はnewaddress@example.com
同様に、次のような書式も可能です。
この場合、すべてのmail属性を新たな値に置き換えますので、今までのmail属性の内容はすべて失われ、新たな2つのmail属性が登録されます。
次はchangetypeにaddを指定した例です。実質ldapaddと同じ挙動となります。
次はエントリの一部を削除する場合です。これにより、dn: cn=tanaka,ou=People,dc=example,dc=comの中にあったmail属性のひとつが削除されます。
今までの操作を1つにまとめることも可能です。その場合は次のように、- (ハイフン)を使って設定を分けるようにします。
これらの用法に関してはldapmodifyコマンドのマニュアルにも記載されていますので、時間があるときにでも参照してみてください。
DNの編集:ldapmodrdn
エントリの中身だけではなく、DN自体を変更するためのコマンドも用意されています。たとえば、
dn: cn=tanaka,ou=People,dc=example,dc=com
というDNを
dn: cn=Taro Tanaka,ou=People,dc=example,dc=com
に変更するためには、図7のようにldapmodrdnコマンドを使用します。わざわざエントリを削除して追加する必要はないため、変更の必要が発生した場合には積極的に使用してみてください。
GUIツール
大量のデータ登録に際しては、LDIFファイルやスクリプトを用いた方が効率的な場合も多いのですが、ちょっとした編集に関しては、わざわざコマンドラインをたたくよりも、GUIツールを使用した方が良い場合もありますので、今回はいくつかのソフトウェアを紹介します。
それぞれ長所、短所などあるため、「これが一番!」と決めるのは難しいのですが、状況に応じて使いやすいツールを見つけてみてください。
GQ
http://gq-project.org/
比較的昔から存在するツールで、軽快に動作することがメリットです。GTK 2.xが必要となります。2006年以来、新しいバージョンがリリースされていないのが気になりますが、基本的な動作には問題ないように思います。
使用するためには、File → Preferencesより初期設定を行います。Serversタブをクリックしてサーバ情報を登録してください。日本語のデータは自動的にUTF-8形式で保存してくれますので、非常に手軽で便利です。
phpLDAPadmin
http://phpldapadmin.sourceforge.net/
こちらは文字通り、PHPで記述されたLDAP管理インターフェースです。使用するにあたり、LDAPをサポートしたPHPとともに、ApacheのようなWebサーバが必要になります。
そのため、通常のクライアント環境では少し導入が面倒だとも言えますが、レンタルサーバなどのように、設定手段が限られている場合に効力を発揮するツールです。ログイン前に、config.php中のサーバアドレスなどを適切に編集してください。
Luma
http://luma.sourceforge.net/
LumaはPythonスクリプトによるGUIツールです。Qtに依存しますので、Qtに対応したPython(PyQtなど)を導入しておかなければならないのが多少面倒なところです。スクリプトであることから、GQよりも少し動作が重い印象を持ちましたが、アドレス帳、ユーザ管理、スキーマブラウザ編集用の専用インターフェースを持つなど、GQに勝る部分も多いかと思います。
たとえばスキーマブラウザを使用すると、LDAPサーバ側のスキーマ定義を確認することができ、スキーマファイルをエディタで直接閲覧するよりもはるかにわかりやすいと思います。なお、このツールもUTF-8に対応しています。
JXplorer
http://www.jxplorer.org/
JXplorerはJavaで記述されたクライアントツールです。当然WindowsやMacでも動作するのがメリットです。動作についてもJREなどのランタイム環境が必要となります。こちらも日本語やスキーマブラウザに対応しています。
LDAP Explorer Tool
http://sourceforge.net/projects/ldaptool
こちらはGQ同様、GTK+を使用したソフトウェアです。Windows版のバイナリも用意されています。残念ながら日本語編集には対応していませんでした。インストール先を変更する場合は、GNUmakefile.configファイルのXRC_DIR、TOOL_DIRを適切に修正します
GUIツールのまとめ
これらのツールの簡単な機能比較表を作ってみました。ただし内容はあくまでも筆者の主観ですので、各自で評価してみてください。
名称 |
多機能 |
導入のしやすさ |
日本語対応 |
依存ソフトウェアなど |
GQ |
△ |
○ |
○ |
GTK+ |
phpLDAPadmin |
○ |
△ |
○ |
PHP, Apacheなど |
Luma |
◎ |
△ |
○ |
Python, PyQtなど |
JXplorer |
○ |
○ |
○ |
Java |
LDAP Explorer Tool |
△ |
○ |
× |
GTK+ |
最後に
今回はldapmodifyコマンドを筆頭に、エントリ編集のための方法をいくつか紹介してきました。これまで紹介してきた各種ソフトウェアとの連携も、これらのツールをうまく利用することにより運用の手間を軽減させることができるのではないでしょうか? 他にも便利なツールをご存じの方がおられましたら、ぜひ教えてください。