この章では、構成要素の構成を始める前に、ディレクトリサービス全般について決めておかなければならないことを説明します。
考慮すべき項目には、次のものがあります。
格納する情報の種類。たとえば、メールユーザーを記述するエントリ、NAS を経由して接続されるリモートユーザー、NIS テーブル、ネットワークに接続されている機器などです。
全体的な情報量と情報を名前付きコンテキストに分割する方法
必要なサーバー数
各サーバーで提供する情報とサービス
サーバー間での情報の重複
複製情報のマスターコピーを持つサーバー
複製方式
ディレクトリに格納する情報の種類を定義する必要があります。スキーマには、この情報を格納するのに必要なオブジェクトクラスと属性が含まれていなければなりません。デフォルトのスキーマでは十分でない場合は、「スキーマの変更」に、必要なオブジェクトクラスと属性を作成する方法が説明されています。
デフォルトのスキーマには、次のようなリソースの情報を格納できます。
ユーザー
リモート RADIUS ユーザー
デバイス (ホスト、プリンタ、ネットワークアクセスサーバー)
NIS ネーミングサービス
Java オブジェクト
参照ドキュメント
デフォルトのスキーマでディレクトリに作成できるすべてのオブジェクトのリストについては、「オブジェクトクラスのリファレンス」を参照してください。
ディレクトリエントリに記述するリソースの特性に合ったオブジェクトクラスを探す場合には、次の点に注意してください。
そのオブジェクトクラスは、そのリソースを記述するために必要なすべての属性を保持または継承しているか
そのオブジェクトクラスが保持または継承するすべての必須属性に値を割り当てられるか
たとえば、XYZ Corporation 独自のオンラインディレクトリに、次の情報が社員ごとに入っているとします。
氏名 (名前、姓)
電子メールアドレス
電話番号
役職
デフォルトスキーマの場合、社員ごとにこれらすべての属性を格納できるオブジェクトクラスは inetOrgPerson です。このオブジェクトクラスには、電子メールアドレスを格納するための任意のメール属性があります。このオブジェクトクラスは、organizationalPerson と Person オブジェクトクラスから属性を継承します。これらのオブジェクトクラスには、社員の氏名、電話番号、役職を格納するために必要な属性が備わっています。
ディレクトリに格納する情報の種類を定義したら、情報をどのような名前付きコンテキストに分割するかを決める必要があります。分割する基準としては、次のものが考えられます。
地域。たとえば、会社の地域ごとに作成する。
会社の組織
DNS メールドメイン
ユーザーの種類
サービスの種類 (NIS、RADIUS など)
上記の組み合わせ。たとえば、NIS サービスを使用すると、デフォルトでは、人に対して 1 つの名前付きコンテキストが作成され、サービスに対して別の名前付きコンテキストが作成されます。RADIUS サービスを使用する場合は、リモートユーザーに対して 1 つ、ネットワークアクセスサーバーに対し 1 つの名前付きコンテキストを持つことをお勧めします。さらに、会社の所在地ごとに 1 つの名前付きコンテキストを作成できます。
情報を名前付きコンテキストに分割する基準は、情報の場所とは無関係に定義できます。名前付きコンテキストのどの部分でもネットワークの任意のサーバーに複製できるからです。
ただし、リソースのマスターエントリはディレクトリに 1 つだけでなければなりません。複数あると、1 つの情報リポジトリを持つという大きな利点が失われます。
XYZ Corporation は、米国のボストンに本社がある国際的な薬品会社です。ボストンとロンドンに 1 箇所ずつ製造拠点があります。また、ニューヨークとパリに研究グループがあり、それぞれにはマーケティングと営業部門も置かれています。香港にも営業オフィスがあります。米国関係はボストン、ヨーロッパとその他の地域はロンドンでそれぞれ人事部門を管理しています。
図 3-1 は、XYZ Corporation の機能的な構造を示しています。
図 3-2 は、XYZ Corporation の地理的な構造を示しています。
XYZ Corporation の主要な機能がいろいろな場所にあるため、組織的なディレクトリ情報ツリー構造も機能的な ディレクトリ情報ツリー構造もこの会社のディレクトリ構造の要件を完全には満たしません。さらに、XYZ Corporation は、NIS ネーミングサービスを使って、メールユーザーとネットワークリソースに関する情報を集中的に管理しています。この情報は会社の運営にとって不可欠であるため、ネットワーク管理チームは、組織や地理的な区分とは無関係にこの情報を集中的に管理したいと思っています。しかし、重要性が比較的低く、頻繁に更新される可能性のある情報については、場所ごとに保守を行なってもよいと思っています。たとえば、ネットワークアクセスサーバーを経由してネットワークにリモートアクセスすることを許可されたユーザーの情報がこれにあたります。
その結果、ディレクトリ情報ツリー構造は図 3-3 のようになります。
この ディレクトリ情報ツリー構造では、会社は、10 の名前付きコンテキストに対応する 6 つの組織単位 (ou) と 4 つの場所 (l) に分割されています。表 3-1 に、各名前付きコンテキストの相対識別名と識別名を格納するサーバーを示します。表 3-2 には、他のサーバーに複製される名前付きコンテキストのマスターサーバーを示します。
作成する名前付きコンテキストをネットワークのどのサーバーに格納するかを決める必要があります。考慮すべき制約には次のものがあります。
サーバーの数
サーバーの場所
ユーザーの要件。通信費用を減らすために、最も頻繁に必要になる情報が最も近くのサーバーになければなりません。
ディレクトリデータベースのサイズ。各データ格納の最大のエントリ数は 100 万です (ただし、サーバーは複数のデータ格納を持つことができます)。
ネットワークによる制約やユーザーのニーズを考慮して、情報をどこに格納するかを決めます。この際、情報がサーバー間で重複してもかまいません。この重複は、複製方針を設定する際に解決されます。
たとえば、XYZ Corporation には、香港を除き、それぞれの場所にディレクトリサーバーがあるものとします。表 3-1 は、各サーバーの名前付きコンテキストを示しています。
表 3-1 XYZ Corporation における名前付きコンテキストの場所
サーバー |
名前付きコンテキスト |
|
---|---|---|
boston |
ou=XYZ, c=US ou=People, ou=XYZ, c=US ou=Services, ou=XYZ, c=US ou=HR, ou=XYZ, c=US |
|
newyork |
l=New-York, ou=XYZ, c=US ou=US-RD, ou=XYZ, c=US ou=Eur-RD, ou=XYZ, c=US ou=Sales-Mktg, ou=XYZ, c=US |
|
london |
l=London, ou=XYZ, c=US ou=People, ou=XYZ, c=US ou=Services, ou=XYZ, c=US ou=HR, ou=XYZ, c=US |
|
paris |
l=Paris, ou=XYZ, c=US ou=Eur-RD, ou=XYZ, c=US ou=US-RD, ou=XYZ, c=US ou=Sales-Mktg, ou=XYZ, c=US |
複製方針を設定する際には、同じ情報を置く場所の数を明らかにし、マスターコピーを持つ場所を決め、最も効率的なサーバー間の複製プロセスを定義します。
同じ情報を持つ場所が 2 つある場合は、1 つのマスターと 1 つのスレーブからなる単純複製です。同じ情報を持つ場所が 3 つ以上ある場合は、1 つのマスターと複数のスレーブからなる単純複製か、階層式複製を使用できます。
階層式複製では、情報の複製がいくつかのレベルで起こります。つまり、スレーブサーバーの複製コピーがさらに別のスレーブに複製されます。多くの場所で情報を複製する場合には、階層式複製を使うと、複製の負荷が最初のレベルのスレーブサーバーに分散されるため、マスターサーバーから出されるネットワークトラフィックが少なくなるという利点があります。
Sun Directory Services の複製は、LDAP プロトコルに基づいて行われます。ただし、Sun Directory Services のサーバーで NIS サービスが使用できるようになっていると、このサーバーと従来の NIS サーバーの間で NIS 複製を行うことができます。
Sun Directory Services の NIS 複製機能を使うと、従来の NIS ネーミングサービスから、統合されたネーミングおよびディレクトリサービスに容易に移行できます。
LDAP 複製には、NIS 複製に比べ次の利点があります。
部分的な複製が可能である。ディレクトリ情報ツリーの一部を選んで複製したり、変更したエントリの変更した属性だけを複製したりできます。
スケーラビリティが高い。複製するエントリの数が 50,000 を超えると、NIS 複製は対応できなくなる可能性があります。
したがって、NIS サーバーとして使用しているいくつかのサーバーに Sun Directory Services 製品をインストールする場合は、NIS 複製の代わりに LDAP 複製を使用してください。詳細は、「NIS サービスの構成」を参照してください。
マスターサーバーとスレーブサーバーの間で変更を伝播するための複製モードには、次の 2 つがあります。
マスターベースの複製。マスターサーバーが同期スケジュールを持ち、変更をスレーブに配信します。
クライアントベースの複製。スレーブサーバーが同期スケジュールを持ち、変更をマスターサーバーから受信します。
同じ環境に LDAP v2 サーバーと LDAP v3 サーバーがある場合には、LDAP v3 サーバーから LDAP v2 サーバーに複製を行なったときに、LDAP v3 固有の情報が失われることがあります。たとえば、複製する情報が属性内の言語タグを使用する場合には、すべての複製ターゲットで LDAP v3 がサポートされていなければなりません。Sun Directory Services 1.0 から Sun Directory Services 3.1 への移行の詳細は、『Sun Directory Services 3.1 ご使用にあたって』を参照してください。
表 3-1 では、XYZ Corporation の一部の名前付きコンテキストがいくつかのサーバーに置かれていることがわかります。これは、情報を地域に限定することでアクセスを速くし、接続コストを減らすためです。
1 つのサーバーにマスターコピーを持ち、その他のサーバーには複製を持ちます。
表 3-2 は、XYZ Corporation ディレクトリサービスの各名前付きコンテキストがどのように複製されるかを示しています。
表 3-2 XYZ Corporation の複製方針
名前付きコンテキスト |
マスターサーバー |
スレーブサーバー |
---|---|---|
ou=People, ou=XYZ, c=US |
boston |
london |
ou=Services, ou=XYZ, c=US |
boston |
london |
ou=HR, ou=XYZ, c=US |
boston |
london |
l=Boston, ou=XYZ, c=US |
boston |
|
l=New-York, ou=XYZ, c=US |
newyork |
|
ou=US-RD, ou=XYZ, c=US |
newyork |
paris |
ou=Sales-Mktg, ou=XYZ, c=US |
newyork |
paris |
l=London, ou=XYZ, c=US |
london |
|
l=Paris, ou=XYZ, c=US |
paris |
|
ou=Eur-RD, ou=XYZ, c=US |
paris |
newyork |
マスターサーバーとスレーブサーバーの間で変更を複製するための複製方式は LDAP です。
照会システムでは、エントリがそのサーバーにないと、ディレクトリサーバーは、照会をクライアントに戻し、別のディレクトリサーバーに照会するよう要求します。ほとんどの LDAP クライアントライブラリは、照会に従ってユーザーの元の要求を自動的に出し直します。
Sun Directory Services に照会を定義する方法には次の 2 つがあります。
ディレクトリサーバーのデフォルト照会
照会エントリ
デフォルト照会はディレクトリサーバーごとに構成時に設定するパラメータで、別の「ディレクトリサーバー」へのポインタです。通常、照会先のサーバーは、検索の範囲を広げるために、現在のサーバーよりも高いディレクトリ情報ツリーのノードを持ちます。
照会エントリは、ディレクトリ情報ツリーのどのレベルにでも作成できます。このエントリでは、別の「データ格納」にあるディレクトリ情報ツリーのサブツリーを指します。照会エントリの値は URL です。
LDAP v3 サーバーから LDAP v2 サーバーへの照会は作成しないでください。最初の要求が LDAP v3 サーバーに出された場合、ほとんどのライブラリは、LDAP v2 サーバーへの照会に対応できません。
データ格納には最高 100 万エントリまで格納できますが、この制約を解決する方法として照会エントリが使用できます。その場合、ルートエントリのすぐ下に照会エントリを持つデータ格納を作成できます。これらのエントリは、同じサーバーまたは異なるサーバーの別のデータ格納に格納されている広域ディレクトリ情報ツリーのサブツリーを指します。
この仕組みを図 3-4 に示します。
newyork、london、paris の各サーバーは、boston サーバーにあるデータ格納 o=XYZ, c=US へのデフォルト照会を持っています。boston サーバーには、次の 3 つの照会エントリがあります。
l=New-York, ou=XYZ, c=US
l=London, ou=XYZ, c=US
l=Paris, ou=XYZ, c=US
照会エントリには、次の属性を指定します。
objectClass = referral
ref = "ldap://hostname[:port]/DN"
参照先のデータ格納のネーミング属性。これは、ref 属性をネーミング属性として使用しないためですが、この照会エントリ名としても使用します。
たとえば、l=New-York, ou=XYZ, c=US という照会エントリには、次のように指定します。
DN: l=New-York, ou=xyz,c=US objectClass: referral ref: ldap://newyork/ou=New-York,ou=XYZ,c=US l: New-York
l=New-York, ou=XYZ, c=US ツリーの検索が失敗した場合、LDAP プロトコルはデフォルト照会に従って ou=XYZ, c=US ツリーを検索します。ou=XYZ, c=US ツリーの検索が始まると、LDAP プロトコルは、照会エントリに指定された URL に従って参照先のすべてのデータ格納を検索します。