コンピューティングにおいて、ディレクトリサービスまたはネームサービスは、ネットワークリソースの名前をそれぞれのネットワークアドレスにマッピングします。これは、ボリューム、フォルダ、ファイル、プリンタ、ユーザー、グループ、デバイス、電話番号、その他のオブジェクトなど、日常的なアイテムやネットワークリソースを検索、管理、運営、整理するための共有情報インフラストラクチャです。ディレクトリサービスは、ネットワークオペレーティングシステムの重要なコンポーネントです。ディレクトリサーバーまたはネームサーバーは、このようなサービスを提供するサーバーです。ネットワーク上の各リソースは、ディレクトリサーバーによってオブジェクトと見なされます。特定のリソースに関する情報は、そのリソースまたはオブジェクトに関連付けられた 属性の集合として保存されます
ディレクトリサービスは、ネットワークの名前空間を定義します。名前空間は、各オブジェクトに名前(一意の識別子)を割り当てるために使用されます。ディレクトリには通常、ネットワークリソースの命名と識別方法を決定する一連の規則があり、識別子は一意かつ明確である必要があります。ディレクトリサービスを使用する場合、ユーザーはネットワークリソースの物理アドレスを覚えておく必要はありません。名前を指定するだけでリソースが特定されます。一部のディレクトリサービスにはアクセス制御機能が含まれており、ディレクトリ情報へのアクセスを承認されたユーザーのみに制限します。
ディレクトリサービスとリレーショナルデータベースにはいくつかの違いがあります。パフォーマンス向上につながる場合、データは冗長化されます(例えば、キーを介して別のテーブルの内容と関連付けるのではなく、テーブル内の行に値を繰り返すことで冗長化されます。この手法は非正規化と呼ばれます。また、実際のスループットを向上させるためにレプリカを利用する手法もあります)。[ 1 ]
ディレクトリ スキーマは、オブジェクト クラス、属性、名前のバインド、および知識 (名前空間) であり、オブジェクト クラスには次のものが含まれます。
属性は複数の値を持つ場合があり、1つのレベルで複数の命名属性(例えば、マシンタイプとシリアル番号の連結、あるいは「勤務先電話番号」に複数の電話番号)を指定できます。属性とオブジェクトクラスは通常、業界全体で標準化されています。例えば、X.500属性とクラスは、多くの場合、オブジェクトIDがIANAに正式に登録されています。そのため、ディレクトリアプリケーションは、既存のディレクトリサーバーソフトウェアの利点を最大限に活用するために、標準のクラスと属性を再利用しようとします。
オブジェクトインスタンスは名前空間に配置されます。各オブジェクトクラスは親オブジェクトクラス(最終的には階層のルート)から継承され、必須/必須リストに属性が追加されます。ディレクトリサービスは、 ITシステムのセキュリティ設計において中心的な役割を果たすことが多く、それに応じてアクセス制御の粒度も細かく設定できます。
ディレクトリサービスの設計と管理において、レプリケーションとディストリビューションは異なる意味を持ちます。レプリケーションは、冗長性とスループット上の理由から、同じディレクトリ名前空間(同じオブジェクト)が別のディレクトリサーバーにコピーされることを示します。複製された名前空間は同じ権限によって管理されます。ディストリビューションは、異なる名前空間にある複数のディレクトリサーバーが相互接続されて分散ディレクトリサービスを形成することを示します。各名前空間は異なる権限によって管理できます
ディレクトリサービスは、共通ネットワーク標準と複数ベンダーの相互運用性のための開放型システム間相互接続(OSI)イニシアチブの一部でした。1980年代、 ITUとISOは、当初はキャリア間電子メッセージングとネットワーク名検索の要件をサポートするために、ディレクトリサービスのX.500標準セットを作成しました。軽量ディレクトリアクセスプロトコル(LDAP)は、X.500ディレクトリ情報サービスに基づいており、TCP/IPスタックとインターネット上のX.500ディレクトリアクセスプロトコル(DAP)文字列エンコード方式を使用しています
X.500 より前に開発されたシステムには次のものがあります。
LDAP/X.500ベースの実装には以下が含まれます。
ディレクトリサービスを作成するためのオープンソースツールには、OpenLDAP、Kerberosプロトコル、そしてKerberosとLDAPをバックエンドとしてWindowsドメインコントローラとして機能できるSambaソフトウェアなどがあります。管理はGOsaまたはSamba SWATによって行われます。
Unixシステム上のネームサービスは通常、 nsswitch.confを通じて設定されます。ネームサービスからの情報はgetentで 取得できます