Mac OS X Leopardテクノロジーレポート集となる
【レポート】秘められた"真の革新"を暴く - the inner universe of Leopard
【レポート】the inner universe of Leopard - 「rcの引退とlaunchdの強化」
もあわせてお楽しみください。

Open Directory」はMac OS X独自のディレクトリサービスで、ユーザアカウントやグループ、ホストやサーバの設定といった管理情報へのアクセスや管理を行うAPIを提供している。ただ、Open Directoryそのものはデータの保存先を提供するわけではなく、プラグインを通して実際にデータを格納するデータストアへの通信を行っている。Mac OS X Server場合、OpenLDAPによるLDAPサーバとCyrusSASLによるパスワードサーバが用意されており、ユーザアカウントなどの実際の情報はLDAPデータベース上に、認証に必要な情報はパスワードサーバないしはKerberosに格納されている。

TigerまでのMac OS Xでは、このOpen DirectoryのバックストアとしてNetinfoが採用されていた。NetInfoは1980年代末、NeXT Softwareで開発されたディレクトリサービスであり、自由度の高い階層構造のディレクトリを持ち、ディレクトリサービスを提供するサーバ自体が階層構造を形成できた。上位のNetInfoサーバに設定されたアカウントは下位のNetInfoサーバやクライアントでも有効である。このため、正社員は最上位のNetInfoサーバに登録することで、どのNeXTワークステーションにもログイン可能にする一方、バイトや契約社員については所属する特定部署のNetInfoサーバにだけ登録することで、その部署のワークステーションしか使えないようにすることが可能、管理範囲の分割と委譲が可能な構成となっていた。

当時一般的だったNISは単一階層、もしくは2階層のみ(NISもしくは/etc/passwd)と固定されておりスケーラビリティーがなく、90年代初頭に登場したWindows NTの「ドメイン」は、信頼関係という直感的ではない仕組みを用いたためディレクトリサーバ間の関係がすぐにスパゲッティ状態になり、これまたスケーラビリティーを欠いた状態であった。Windows 2000 Serverで従来の「ドメイン」を上書きする形で登場したActive Directoryは、「フォレスト」という名称でNetInfoと同等のディレクトリサーバ間の階層構造を採用し、図らずもNetInfoの基本設計が正しいことを立証する形となった。

一方、NetInfoが実装された1980年代末はまだおおらかな時代であり、生のパスワードがネットワーク上を暗号化もせず流れることがごく当たり前に行われていた。NetInfoも、SunRPCを用いたクライアントとサーバ間の通信は、何の暗号化もされていなかった。

また、昨今はディレクトリサービス間の連携、とくにWindowsのActive Directoryとの連携が重要となってきており、いくらNetInfoが優れていても独自プロトコルでは誰もついてこれないのも明白である。

こうしたこともあって、Mac OS Xでは、Open Directoryにより統一されたAPIとプラグインアーキテクチャで複数のディレクトリサービスへの対応を実現し、ネットワークワイドのディレクトリサービスはSSLで暗号化されたLDAPを用いる形に変更された。NetInfoはローカルのアカウント管理などにのみ限定的に利用されるだけとなった。

その後も6年の長きにわたって、NetInfoは生き続けた。さまざま弱点はあれど、OSに深く根付いた安定したシステムをそう簡単には捨てることができなかったのだ。

しかし、Leopardの登場とともにNetInfoは過去の存在となった。そう、LeopardにはもはやNetInfoは存在しない。

その代わりに新たにローカルアカウントの管理に搭載されたのが、dsLocalである。

本稿はdsLocalを中心に、Open Directoryについてを解説する。