第2章 ディレクトリーデータベースの設定

ディレクトリーはデータベースに保存され、ディレクトリーツリーはデータベース全体に分散されます。本章では、接尾辞 の作成、ディレクトリーツリーの分岐点、および各接尾辞に関連付けられたデータベースの作成方法を説明します。本章では、リモートサーバーでデータベースを参照するデータベースリンクを作成する方法と、参照を使用してクライアントにディレクトリーデータの外部ソースを指定する方法も説明します。

2.1. 接尾辞の作成および維持

ディレクトリーツリーのさまざまな部分をさまざまなデータベースに保存でき、そのデータベースを複数のサーバーに分散できます。ディレクトリーツリーには、ノード と呼ばれる分岐点が含まれます。このノードはデータベースに関連付けられている可能性があります。接尾辞は、特定のデータベースに関連するディレクトリーツリーのノードです。以下は、簡単なディレクトリーツリーです。

図2.1 1 つのルート接尾辞があるディレクトリーツリー

1 つのルート接尾辞があるディレクトリーツリー
ou=people 接尾辞とその下のすべてのエントリーとノードが 1 つのデータベースに保存され、ou=groups 接尾辞が別のデータベースに保存され、ou=contractors 接尾辞がさらに別のデータベースに保存される場合があります。

2.1.1. 接尾辞の作成

ルートの接尾辞 は、従属接尾辞の親です。これは、Directory Server 用に設計された大規模なツリーの一部になります。下位スキーム は、ルート接尾辞の配下にあるブランチです。ディレクトリーツリーのコンテンツの編成には、ルート接尾辞と従属接尾辞の両方が使用されます。ルートおよびサブスキームのデータはデータベースに保存されます。

2.1.1.1. ルート接尾辞の作成

ディレクトリーには、複数のルート接尾辞を含めることができます。たとえば、example.com 用と redhat.com 用の複数の Web サイトをホスティングするインターネットサービスプロバイダーなどです。このシナリオでは、2 つのルート接尾辞が必要です。次の図に示すように、1 つは dc=example,dc=com 命名コンテキストに対応し、もう 1 つは dc=redhat,dc=com 命名コンテキストに対応します。

図2.2 2 つのルート接尾辞があるディレクトリー

2 つのルート接尾辞があるディレクトリー
また、検索操作からディレクトリーツリーの一部を除外するために、ルート接尾辞を作成することもできます。たとえば、Example Corporation が、一般的な Example Corporation ディレクトリーの検索から、ヨーロッパオフィスを除外する場合などです。これを実装するには、ディレクトリーに 2 つのルート接尾辞が必要です。1 つのルート接尾辞は一般的な Example Corporation ディレクトリーツリー dc=example,dc=com に対応し、もう 1 つのルート接尾辞はディレクトリーツリーのヨーロッパブランチ ou=europe,dc=example,dc=com に対応します。クライアントアプリケーションの観点では、ディレクトリーツリーは以下の図のように示されます。

図2.3 検索操作への制限がオフのルート接尾辞があるディレクトリー

検索操作への制限がオフのルート接尾辞があるディレクトリー
ディレクトリーの dc=example,dc=com ブランチでクライアントアプリケーションによって実行される検索では、ディレクトリーの ou=europe,dc=example,dc=com ブランチからのエントリーは返されません。これは、別のルート接尾辞であるためです。
2.1.1.1.1. コマンドラインでルート接尾辞の作成
dsconf backend create コマンドを使用して、新しいルート接尾辞を作成します。
  1. 必要に応じて、使用中の接尾辞およびバックエンドデータベースを指定します。
    # dsconf -D "cn=Directory Manager" ldap://server.example.com backend suffix list
    dc=example,dc=com (userroot)
    括弧内の名前は、対応する接尾辞のデータを保存するバックエンドデータベースです。次の手順でルートの接尾辞を作成する場合は、既存のデータベース名を使用することはできません。
  2. example バックエンドデータベースに dc=example,dc=net ルート接尾辞を作成します。
    # dsconf -D "cn=Directory Manager" ldap://server.example.com backend create \
         --suffix="dc=example,dc=net" --be-name="example"
2.1.1.1.2. Web コンソールを使用したルート接尾辞の作成
Web コンソールを使用して新しいルート接尾辞を作成するには、以下を行います。
  1. Web コンソールで Directory Server ユーザーインターフェイスを開きます。「Web コンソールを使用した Directory Server へのログイン」を参照してください。
  2. インスタンスを選択します。
  3. Database メニューを開きます。
  4. Create Suffix をクリックします。
  5. 接尾辞 DN およびバックエンド名を入力します。以下に例を示します。
  6. Create The Top Suffix Entry を選択します。
  7. Create Suffix をクリックします。

2.1.1.2. 従属接尾辞の作成

特定のシナリオでは、管理者はディレクトリーツリーのブランチを別のデータベースに保存するとします。たとえば、管理者が ou=europe,dc=example,dc=com エントリーをサブ接尾辞として作成すると、この接尾辞は別のデータベースに保存されます。同時に、dc=example,com ルート接尾辞とそのすべてのサブエントリー (ou=europe,dc=example,dc=com とサブエントリーを除く) も別のデータベースに保存されます。

図2.4 従属接尾辞が含まれるディレクトリーツリー

従属接尾辞が含まれるディレクトリーツリー
2.1.1.2.1. コマンドラインを使用した従属接尾辞の作成
dsconf backend create コマンドを使用して、新しいサブ接尾辞を作成します。たとえば、dc=example,dc=com ルート接尾辞の下にある people という名前の新しいデータベースに ou=People,dc=example,dc=com サブ接尾辞を作成するには、次のようにします。
  1. 必要に応じて、使用中の接尾辞およびバックエンドデータベースを指定します。
    # dsconf -D "cn=Directory Manager" ldap://server.example.com backend suffix list
    dc=example,dc=com (userroot)
    括弧内の名前は、対応する接尾辞のデータを保存するバックエンドデータベースです。次の手順で従属接尾辞を作成する場合は、既存のデータベース名を使用することはできません。
  2. 従属接尾辞を作成します。たとえば、example バックエンドデータベースとともに ou=People,dc=example,dc=com サブ接尾辞を作成するには、次のように入力します。
    # dsconf -D "cn=Directory Manager" ldap://server.example.com backend create \
         --suffix="ou=People,dc=example,dc=com" --be-name="example" \
         --parent-suffix="dc=example,dc=com"
2.1.1.2.2. Web コンソールを使用した副接尾辞の作成
Web コンソールを使用して新しい従属接尾辞を作成するには、以下を実行します。
  1. Web コンソールで Directory Server ユーザーインターフェイスを開きます。「Web コンソールを使用した Directory Server へのログイン」を参照してください。
  2. インスタンスを選択します。
  3. Database メニューを開きます。
  4. サブ接尾辞を作成する接尾辞を選択し、Suffix Tasks をクリックして、Create Sub-Suffix を選択します。
  5. 従属接尾辞 DN およびバックエンド名を入力します。以下に例を示します。
  6. Create The Top Sub-Suffix Entry を選択します。
  7. Create Sub-Suffix をクリックします。

2.1.2. 接尾辞の維持

2.1.2.1. デフォルトの命名コンテキストの表示

命名コンテキストは接尾辞に類似しており、命名ディレクトリーエントリーのルート構造です。ディレクトリーとデータ構造によっては、複数の命名コンテキストが存在する場合があります。たとえば、標準の Directory Server 設定には、dc=example,dc=com などのユーザー接尾辞や cn=config の設定接尾辞があります。
多くのディレクトリーツリーには複数の命名コンテキストがあり、異なるタイプのエントリーや論理データ分割で使用されます。Directory Server にアクセスするクライアントは、使用する必要がある命名コンテキストを認識しない場合があります。Directory Server には、デフォルトの命名コンテキストが他に認識されていない場合に、デフォルトの命名コンテキストがクライアントに通知するサーバー設定属性があります。
デフォルトの命名コンテキストは、cn=confignsslapd-defaultnamingcontext 属性に設定されます。この値はルート DSE (Directory Server Agent Service Entry) に伝播され、ルート DSE の defaultnamingcontext 属性を確認してクライアントが匿名でクエリーできます。
# ldapsearch -p 389 -h server.example.com -x -b "" -s base | egrep namingcontext
namingContexts: dc=example,dc=com
namingContexts: dc=example,dc=net
namingContexts: dc=redhat,dc=com
defaultnamingcontext: dc=example,dc=com
重要
設定の整合性を維持するには、nsslapd-allowed-to-delete-attrs 一覧から nsslapd-defaultnamingcontext 属性を削除しないでください。
デフォルトでは、nsslapd-defaultnamingcontext 属性は、nsslapd-allowed-to-delete-attrs 属性に削除 できる 属性の一覧に含まれます。これにより、現在のデフォルトの接尾辞を削除してから、適切にサーバー設定を更新できます。
何らかの理由で削除可能な設定属性の一覧から nsslapd-defaultnamingcontext 属性を削除すると、その属性への変更は保持されません。デフォルトの接尾辞を削除すると、その変更はサーバー設定に伝播できません。つまり、nsslapd-defaultnamingcontext 属性は、空白 (削除) ではなく古い情報を保持することを意味します。これは正しい現在の設定です。

2.1.2.2. 接尾辞の無効化

特定の状況では、ディレクトリーの接尾辞を無効にする必要があります。接尾辞が無効になっていると、その接尾辞に関連するデータベースのコンテンツは、クライアントがアクセスできなくなります。
2.1.2.2.1. コマンドラインでの接尾辞の無効化
コマンドラインで接尾辞を無効にするには、バックエンドデータベース名を dsconf backend suffix set --disable コマンドに渡します。たとえば、o=test 接尾辞を無効にするには、以下を実行します。
  1. 接尾辞とそれに対応するバックエンドを表示します。
    # dsconf -D "cn=Directory Manager" ldap://server.example.com backend suffix list
    dc=example,dc=com (userroot)
    o=test (test_database)
    このコマンドにより、各接尾辞の横にバックエンドデータベースが表示されます。次の手順で、接尾辞のデータベース名が必要です。
  2. 接尾辞を無効にします。
    # dsconf -D "cn=Directory Manager" ldap://server.example.com backend \
         suffix set --disable "test_database"

2.1.2.3. 接尾辞の削除

接尾辞が不要になった場合、管理者はその接尾辞をデータベースから削除できます。
警告
接尾辞を削除すると、その接尾辞に関連するデータベースエントリーおよびレプリケーション情報もすべて削除されます。
2.1.2.3.1. コマンドラインを使用した接尾辞の削除
コマンドラインで接尾辞を削除するには、dsconf backend delete コマンドを使用します。たとえば、o=test 接尾辞を削除するには、以下を実行します。
  1. 接尾辞とそれに対応するバックエンドを表示します。
    # dsconf -D "cn=Directory Manager" ldap://server.example.com backend suffix list
    dc=example,dc=com (userroot)
    o=test (test_database)
    このコマンドにより、各接尾辞の横にバックエンドデータベースが表示されます。次の手順で、接尾辞のデータベース名が必要です。
  2. バックエンドデータベースと対応する接尾辞を削除します。
    # dsconf -D "cn=Directory Manager" ldap://server.example.com backend delete test_database
    Deleting Backend cn=test_database,cn=ldbm database,cn=plugins,cn=config :
    Type 'Yes I am sure' to continue: Yes I am sure
    The database, and any sub-suffixes, were successfully deleted
2.1.2.3.2. Web コンソールを使用した接尾辞の削除
Web コンソールを使用して接尾辞を削除するには、以下を行います。
  1. Web コンソールで Directory Server ユーザーインターフェイスを開きます。「Web コンソールを使用した Directory Server へのログイン」を参照してください。
  2. インスタンスを選択します。
  3. Database メニューを開きます。
  4. 接尾辞を選択し、Suffix Tasks をクリックして Delete Suffix. を選択します。
  5. Yes をクリックして確定します。