![]() | |
Sun Java™ System Directory Server 5 2004Q2 管理ガイド |
第 3 章
ディレクトリツリーの作成ディレクトリツリーはサーバー内のすべてのエントリから構成され、エントリはそれぞれ DN (識別名) によって示されます。DN は階層構造を持つため、ツリー内のデータ構成を決定する分岐のエントリおよび最下位のエントリが作成されます。管理上、ディレクトリツリーは、サフィックス、サブサフィックス、および連鎖サフィックスによって定義されます。Directory Server コンソールでは、これらのすべての要素を作成および管理できます。また、コマンド行ツールを使用して管理することもできます。
ディレクトリデータ構造と一般的なサフィックスの概念については、『Directory Server 配備計画ガイド』の第 4 章にある「ディレクトリ情報ツリー」を参照してください。
この章は、次の節で構成されます。
サフィックスの作成Directory Server コンソールやコマンド行を使用すると、ルートサフィックスとサブサフィックスのどちらも作成できます。
コンソールを使用した新しいルートサフィックスの作成
- Directory Server コンソールの最上位レベルにある「設定」タブで、「データ」ノードをマウスの右ボタンでクリックし、ポップアップメニューから「新規サフィックス」を選びます。
または、「データ」ノードを選択し、「オブジェクト」メニューから「新規サフィックス」を選択します。
「新規サフィックス」ダイアログボックスが表示されます。
- 「サフィックス DN」フィールドに、一意のサフィックス名を入力します。名前は、識別名の形式を使用し、コンマで区切られた属性と値の 1 つ以上のペアで構成されている必要があります。
規則に従い、ルートサフィックスにはドメインコンポーネント (dc) のネーミング属性を使用します。たとえば、dc=example,dc=org という新しいサフィックス DN を入力します。
- デフォルトでは、このサフィックスに対するデータベースファイルの位置は、サーバーによって自動的に選択されます。また、サフィックスはデフォルトではシステムインデックスだけを保持し、どの属性も暗号化されず、レプリケーションは設定されません。
デフォルト値を変更するには、「オプション」ボタンをクリックして、新しいサフィックスのオプションを表示します。
- データベース名は、データベースファイルを含むディレクトリ名と一致します。デフォルトのデータベース名は、サフィックス DN 内の最初のネーミング属性値で、一意となるように数字が追加されていることがあります。別の名前を使用するには、「カスタムを使用」ラジオボタンを選択し、新しい一意のデータベース名を入力します。
データベース名には、ASCII (7 ビット) 英数文字、ハイフン (-)、およびアンダスコア (_) だけを使用できます。たとえば、新しいデータベースに example_2 という名前を付けることができます。
- データベースファイルを格納するディレクトリの位置を選択することもできます。デフォルトでは、次のパスを持つサブディレクトリです。
ServerRoot/slapd-serverID/db
新しいパスを入力します。または、「参照」をクリックして、データベースディレクトリの新しい位置を選択します。新しいパスには、ディレクトリサーバーホスト上でアクセスできる必要があります。
- 新しいサフィックスを素速く設定するために、既存のサフィックスのクローンを作成することもできます。「サフィックス設定をクローン」を選択し、ドロップダウンメニューからクローンを作成するサフィックスを選択します。クローンの作成について、次の設定のどれかを選択します。
- 新しいサフィックスのオプションをすべて設定したら、「了解」をクリックします。新しいサフィックスのダイアログに、選択したオプションがすべて表示されます。
- 新しいサフィックスのダイアログで「了解」をクリックして、新しいルートサフィックスを作成します。
ルートサフィックスが「データ」の分岐の下に自動的に表示されます。新しいサフィックスをさらに詳しく設定するには、「サフィックスの管理」を参照してください。
新しいルートサフィックスには、サフィックス DN に関するエントリも、どのエントリも含まれません。そのため、ディレクトリ内ではアクセスできません。また、初期化されて、適切なアクセス権を与えられるまでは、コンソールの「ディレクトリ」タブに表示されません。
このサフィックスを LDIF ファイルから初期化する場合は、以下の手順を省略できます。ただし、LDIF ファイル内のルートエントリに、導入に必要な ACI (アクセス制御命令) が含まれていることを確認してください。
- コンソールで、最上位の「ディレクトリ」タブを選択します。新しいサフィックスは、まだディレクトリツリーに表示されていません。
- サフィックスの最上位エントリを作成する権限があるのは Directory Manager だけです。Directory Manager としてログインしていない場合は、「コンソール」>「新規ユーザーとしてログイン」の順に選択して、Directory Manager としてログインします。Directory Manager の DN とパスワードを入力して、ログインします。デフォルトでは、Directory Manager の DN は cn=Directory Manager です。
- ディレクトリツリーのルートノードを右クリックします。ルートノードには、サーバーのホスト名とポートが含まれます。ポップアップメニューから「新規ルートオブジェクト」を選択し、新しいルートサフィックスの DN を選択します。
または、ディレクトリツリーのルートノードを選択し、「オブジェクト」メニューから「新規ルートオブジェクト」を選択します。
- 表示された「新規オブジェクト」ダイアログボックスで、ルートオブジェクトにするオブジェクトクラスを 1 つ選択します。このオブジェクトクラスによって、ルートエントリに追加されるその他の属性が決まります。
規則では、dc のネーミング属性を含むサフィックス DN のルートオブジェクトは、domain オブジェクトクラスに属します。通常、ルートオブジェクトは単純なオブジェクトで、データはほとんど含まれません。
- オブジェクトクラスを選択したら、「新規オブジェクト」ダイアログボックスで「了解」をクリックします。
コンソールには、新しいルートオブジェクトに対して汎用エディタが表示されます。デフォルトの ACI セットが、新しいオブジェクトに自動的に追加されます。詳細は、「デフォルト ACI」を参照してください。ACI セットの変更も含めて、トポロジに必要な属性値を追加および編集します。
- エントリを編集したら、汎用エディタで「了解」をクリックして、新しいサフィックスのルートオブジェクトを作成します。
新しいサフィックスがディレクトリツリーに表示され、ACI によって与えられた権限に従って、コンソールで管理できるようになります。
コンソールを使用した新しいサブサフィックスの作成
既存のルートサフィックスまたはサブサフィックスの下に新しいサブサフィックスを作成する方法は次のとおりです。
- Directory Server コンソールの最上位レベルにある「設定」タブで、「データ」ノードと任意のサフィックスノードを展開して、親サフィックスを表示します。
- 親サフィックスのノードを右クリックし、ポップアップメニューから「新規サブサフィックス」を選択します。
または、親サフィックスのノードを選択し、「オブジェクト」メニューから「新規サブサフィックス」を選択します。
「新規サブサフィックス」ダイアログボックスが表示されます。
- 「サブサフィックス RDN」フィールドに、一意の名前を入力します。名前は、相対識別名 (RDN) の形式で、コンマで区切られた属性と値の 1 つ以上のペアで構成されている必要があります。たとえば、ou=Contractors のようにします。
テキストボックスの下の行に、このサブサフィックスの完全な DN が表示されます。これは、RDN に追加された親サフィックス DN で構成されています。
- デフォルトでは、このサフィックスに対するデータベースファイルの位置は、サーバーによって自動的に選択されます。また、サフィックスはデフォルトではシステムインデックスだけを保持し、どの属性も暗号化されず、レプリケーションは設定されません。
デフォルト値を変更するには、「オプション」ボタンをクリックして、新しいサフィックスのオプションを表示します。
- データベース名は、データベースファイルを含むディレクトリ名と一致します。デフォルトのデータベース名は、RDN 内の最初のネーミング属性値で、一意となるように数字が追加されていることがあります。別の名前を使用するには、「カスタムを使用」ラジオボタンを選択し、新しい一意のデータベース名を入力します。
データベース名には、ASCII (7 ビット) 英数文字、ハイフン (-)、およびアンダスコア (_) だけを使用できます。たとえば、新しいデータベースに temps-US という名前を付けることができます。
- データベースファイルを格納するディレクトリの位置を選択することもできます。デフォルトでは、次のパスを持つサブディレクトリです。
ServerRoot/slapd-serverID/db
新しいパスを入力します。または、「参照」をクリックして、データベースディレクトリの新しい位置を選択します。新しいパスには、ディレクトリサーバーアプリケーションによってアクセスできる必要があります。
- 新しいサブサフィックスを素速く設定するために、既存のサフィックスのクローンを作成することもできます。既存のサフィックスは、親サフィックスでも別のサフィックスでも構いません。「サフィックス設定をクローン」を選択し、ドロップダウンメニューからクローンを作成するサフィックスを選択します。クローンの作成について、次の設定のどれかを選択します。
- 新しいサフィックスのオプションをすべて設定したら、「了解」をクリックします。新しいサブサフィックスのダイアログに、選択したオプションがすべて表示されます。
- 新しいサブサフィックスのダイアログで「了解」をクリックして、サブサフィックスを作成します。
作成したサブサフィックスは、「設定」タブで親サフィックスの下に自動的に表示されます。新しいサフィックスをさらに詳しく設定するには、「サフィックスの管理」を参照してください。
新しいサブサフィックスには、RDN に対するエントリも、どのエントリも含まれません。そのため、ディレクトリ内ではアクセスできません。また、初期化されて、適切なアクセス権を与えられるまでは、コンソールの「ディレクトリ」タブに表示されません。
このサフィックスを LDIF ファイルから初期化する場合は、以下の手順を省略できます。ただし、LDIF ファイル内の親サフィックスと新しいエントリに、導入に必要な ACI (アクセス制御命令) が含まれていることを確認してください。
- コンソールで、最上位の「ディレクトリ」タブでディレクトリツリーを展開し、サブサフィックスの親を表示します。新しいサブサフィックスは、まだ表示されていません。
- サフィックスとサブサフィックス (ACI) の最上位エントリを作成する権限があるのは Directory Manager だけです。Directory Manager としてログインしていない場合は、「コンソール」>「新規ユーザーとしてログイン」の順に選択して、Directory Manager としてログインします。Directory Manager の DN とパスワードを入力して、ログインします。デフォルトでは、Directory Manager の DN は cn=Directory Manager です。
- サブサフィックスの親を右クリックし、ポップアップメニューから「新規」を選択します。新しいオブジェクトのリストで、サブサフィックスの RDN に対応するオブジェクトのタイプを選択します。たとえば、ou=Contractors サブサフィックスを作成した場合は、「OrganizationalUnit」を選択します。サブサフィックスのオブジェクトクラスがリストにない場合は、「その他」を選択し、表示される「新規オブジェクト」ダイアログボックスでリストからオブジェクトクラスを選択します。または、サブサフィックスの親を選択し、「オブジェクト」メニューから「新規」を選択します。
- コンソールには、新しいオブジェクトに対してカスタムエディタまたは汎用エディタが表示されます。ACI セットの変更も含めて、トポロジに必要な属性値を追加および編集します。
- エントリを編集したら、エディタで「了解」をクリックして、新しいサブサフィックスのエントリを作成します。
新しいサブサフィックスがディレクトリツリーに表示され、ACI によって与えられた権限に従って、コンソールで管理できるようになります。
コマンド行からのサフィックスの作成
ldapmodify コマンド行ユーティリティを使用しても、ディレクトリ内にサフィックスを作成できます。ルートサフィックスとサブサフィックスは、サーバーによって内部的に同じ方法で管理されるため、それらをコマンド行から作成する手順はほとんど同じです。
次の例では「cn=Directory Manager」が使用されていますが、管理ユーザーが設定エントリを作成することができます。ただし、サフィックスの最上位エントリは、Directory Manager が作成する必要があります。
- 次のコマンドを使用して、ルートサフィックスのサフィックス設定エントリを cn=mapping tree,cn=config の下に作成します。
ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
dn: cn="suffixDN",cn=mapping tree,cn=config
objectclass:top
objectclass:extensibleObject
objectclass:nsMappingTree
cn:suffixDN
nsslapd-state:backend
nsslapd-backend: databaseName
^Dサブサフィックスについては、上記のコマンドに次の属性を追加します。
nsslapd-parent-suffix: "parentSuffixDN"suffixDN は、新しいサフィックスの完全 DN です。ルートサフィックスでは、ドメインコンポーネント (dc) のネーミング属性が使用されます。たとえば、dc=example,dc=org などです。サブサフィックスでは、suffixDN にサブサフィックスの RDN と親サフィックスの DN が含まれます。たとえば、ou=Contractors,dc=example,dc=com のようになります。
databaseName は、このサフィックスに関連付けられ、内部的に管理されるデータベースの名前です。この名前は、すべてのサフィックスの databaseNames で一意となる必要があります。規則では、suffixDN の 1 番目のネーミングコンポーネントの値となります。databaseName は、サフィックスに対するデータベースファイルを格納するディレクトリの名前でもあるため、使用できる文字は、ASCII (7 ビット) 英数字、ハイフン (-)、およびアンダースコア (_) だけです。
サブサフィックスでは、parentSuffixDN は親サフィックスの正確な DN です。
- 次のコマンドを使用して、データベース設定エントリを作成します。
ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
dn: cn=databaseName,cn=ldbm database,cn=plugins,cn=config
objectclass:top
objectclass:extensibleObject
objectclass:nsBackendInstance
cn:databaseName
nsslapd-suffix:suffixDN
^DdatabaseName と suffixDN は、前の手順の値と同じにする必要があります。
このエントリがディレクトリに追加されると、サーバーのデータベースモジュールは、次のディレクトリにデータベースファイルを自動的に作成します。
ServerRoot/slapd-serverID/db/databaseName
サーバーがデータベースファイルを別の位置に作成するようにするには、次の属性を使用してデータベース設定エントリを作成します。
nsslapd-directory: path/databaseName
サーバーはデータベースファイルを保存するために、指定の場所に databaseName という名前のディレクトリを自動的に作成します。
- ルートサフィックスまたはサブサフィックスのベースエントリを作成します。
たとえば、次のコマンドを使用すると、dc=example,dc=org ルートサフィックスのベースエントリを作成できます。
ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
dn:dc=example,dc=org
objectclass:top
objectclass:domain
dc:例
^DDN の 1 番目のネーミング属性とその値を指定する必要があります。さらに、ベースエントリのオブジェクトクラスのスキーマで必要とされる属性もすべて指定します。規則では、ドメインコンポーネント (dc) を使用するルートサフィックス DN には、domain オブジェクトクラスが含まれます。これは、その他の属性には必要ありません。
また、ルートサフィックスには ACI (アクセス制御命令) 属性を追加して、アクセスポリシーを適用する必要があります。次の aci 属性の値を追加すると、匿名の読み取り、本人によるセキュリティが保護された状態での変更、および完全な管理者アクセスを許可できます。
aci:(targetattr != "userPassword") (version 3.0; acl
"Anonymous access";
allow (read, search, compare)userdn = "ldap:///anyone";)
aci:(targetattr != "nsroledn || aci || nsLookThroughLimit ||
nsSizeLimit || nsTimeLimit || nsIdleTimeout ||
passwordPolicySubentry || passwordExpirationTime ||
passwordExpWarned || passwordRetryCount || retryCountResetTime
|| accountUnlockTime || passwordHistory ||
passwordAllowChangeTime")(version 3.0; acl "Allow self entry
modification except for nsroledn, aci, resource limit
attributes, passwordPolicySubentry and password policy state
attributes"; allow (write)userdn ="ldap:///self";)
aci:(targetattr = "*")(version 3.0; acl
"Configuration Administrator";
allow (all) userdn = "ldap:///uid=admin,ou=Administrators,
ou=TopologyManagement, o=NetscapeRoot";)
aci:(targetattr = "*")(version 3.0; acl
"Configuration Administrators Group";
allow (all) (groupdn =
"ldap:///cn=Configuration Administrators, ou=Groups,
ou=TopologyManagement, o=NetscapeRoot");)サブサフィックスの例としては、次のコマンドを使用すると、ou=Contractors,dc=example,dc=com のベースエントリを作成できます。
ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
dn:ou=Contractors,dc=example,dc=com
objectclass:top
objectclass:organizationalUnit
description:base of separate subsuffix for contractor identities
^DDN のネーミング属性と値を指定する必要があります。さらに、ベースエントリのオブジェクトクラスのスキーマで必要とされる属性もすべて指定します。その他、許可されている属性も追加できます。親の ACI の適用範囲に新しいサブサフィックスが含まれている場合、サブサフィックスには親の ACI で定義されたアクセス制御が適用されます。サブサフィックスに異なるアクセスポリシーを定義するには、ベースエントリの作成時に aci 属性を指定します。
サフィックスの管理サフィックスを作成すると、内容をすべて一括で管理できます。ここでは、サフィックスへのアクセスを管理する方法について説明します。すべての操作を無効にする方法、サフィックスを読み取り専用にする方法、サフィックスレベルのリフェラルを作成する方法などが含まれます。
その他多くのディレクトリ管理業務はサフィックスレベルで設定されますが、このマニュアルでは次に示す個別の章で説明しています。
サフィックスの無効化と有効化
保守のためにサフィックスを使用できないようにすることや、セキュリティ上の理由からサフィックスの内容を使用できないようにすることが必要な場合があります。サフィックスを無効にすると、サーバーは、サフィックスへのアクセスを試みたクライアント操作への応答時に、サフィックスの内容を読み書きできなくなります。デフォルトのリフェラルを定義している場合は、無効になっているサフィックスにクライアントがアクセスしようとすると、デフォルトのリフェラルが返されます。
コンソールからのサフィックスの無効化と有効化
- Directory Server コンソールの最上位の「設定」タブで「データ」ノードを展開し、無効にするサフィックスを選択します。
- 右側のパネルで、「設定」タブを選択します。デフォルトでは、すべてのサフィックスは、作成した時点で有効になります。
対象のサフィックスに対してレプリケーションを有効にしている場合は、このタブの内容が自動的に更新される旨のメッセージが表示されます。レプリケートされているサフィックスを無効にすると、そのサフィックスへのレプリケーションもできなくなります。レプリケーションの中断が回復設定より短い限り、サフィックスが有効な状態に戻ったときに、レプリケーションメカニズムによってこのレプリカの更新が再開されます。レプリケーション回復設定には、コンシューマレプリカのパージ遅延、およびこのサプライヤの更新履歴ログの最大サイズと有効期限があります (「コンシューマの詳細設定」を参照)。
- 「このサフィックスへのアクセスを有効に」チェックボックスの選択を解除して、サフィックスを無効にします。または、このチェックボックスを選択して、サフィックスを有効にします。
- 「保存」をクリックして、変更内容を適用します。サフィックスは、ただちに無効または有効になります。
- 必要に応じて、サフィックスが無効である間にサフィックスへのすべての操作に対して返されるグローバルのデフォルトリフェラルを設定できます。これは、最上位の「設定」タブのルートノードの「ネットワーク」タブで設定します。詳細は、「コンソールからのデフォルトリフェラルの設定」を参照してください。
コマンド行からのサフィックスの無効化と有効化
- 次のコマンドを使用して、サフィックスの設定エントリ内の nsslapd-state 属性を編集します。
ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn: cn="suffixDN",cn=mapping tree,cn=config
changetype:modify
replace:nsslapd-state
nsslapd-state: disabled or backend
^DsuffixDN は、定義済みのサフィックス DN の完全な文字列です。空白もすべて含まれます。nsslapd-state 属性の値を disabled に設定するとサフィックスは無効になり、backend に設定するとすべてのアクセス権が許可されます。
コマンドの実行が成功すると、サフィックスはただちに無効になります。
- 必要に応じて、サフィックスが無効である間にサフィックスへのすべての操作に対して返されるグローバルのデフォルトリフェラルを設定できます。詳細は、「コマンド行からのデフォルトリフェラルの設定」を参照してください。
アクセス権とリフェラルの設定
サフィックスを完全に無効にすることなくサフィックスへのアクセスを制限するには、アクセス権を変更して、読み取り専用アクセスを許可することもできます。この場合、書き込み操作に対しては、別のサーバーへのリフェラルを定義する必要があります。また、読み取りアクセスと書き込みアクセスの両方を拒否し、サフィックスへのすべての操作に対するリフェラルを定義することもできます。
さらに、リフェラルを使用して、クライアントアプリケーションが一時的に別のサーバーを使用するように設定することもできます。たとえば、サフィックスにリフェラルを追加しておくことにより、サフィックスの内容のバックアップ中に、クライアントが別のサーバーを使用するように設定できます。
レプリケーションメカニズムは、サフィックスをレプリケーションの対象として設定するために、書き込み権限とリフェラルが必要です。レプリケーションの有効化、レプリカの昇格、またはレプリカの降格によって、リフェラルの設定は変更されます。
コマンド行からのアクセス権とリフェラルの設定
- Directory Server コンソールの最上位の「設定」タブで「データ」ノードを展開し、リフェラルを設定するサフィックスを選択します。
- 右側のパネルで、「設定」タブを選択します。連鎖サフィックスが有効である場合は、アクセス権とリフェラルだけを設定できます。対象のサフィックスに対してレプリケーションを有効にしている場合は、このタブの内容が自動的に更新される旨のメッセージが表示されます。
- 次のラジオボタンのどれかを選択して、該当のサフィックスのエントリに対する書き込み操作への応答を設定します。
- 書き込みおよび読み取り要求を処理 : このラジオボタンは、デフォルトで選択されています。サフィックスの通常の動作を示します。リフェラルが定義されていることもありますが、リフェラルは返されません。
- 読み取り要求を処理し、書き込み要求にはリフェラルを返す : サフィックスを読み取り専用にする場合は、このラジオボタンを選択し、書き込み要求に対してリフェラルとして返す 1 つ以上の LDAP URL をリストに入力します。
- 読み取りおよび書き込み要求の両方にリフェラルを返す : 読み取りアクセスと書き込みアクセスの両方を拒否する場合は、このラジオボタンを選択します。この場合の動作は、サフィックスへのアクセスを無効にした場合と同様ですが、グローバルのデフォルトリフェラルを使用するのではなく、該当のサフィックス専用にリフェラルを定義してもよい点が異なります。
- 「追加」ボタンまたは「削除」ボタンを使用して、リフェラルのリストを編集します。「追加」ボタンをクリックすると、新しいリフェラルの LDAP URL を作成するためのダイアログが表示されます。リモートサーバー内の任意の分岐 DN にリフェラルを作成できます。LDAP URL の構造については、『Directory Server Administration Reference』の第 6 章にある「LDAP URL Reference」を参照してください。
複数のリフェラルを入力できます。ディレクトリは、クライアントアプリケーションからの要求に対応して、このリスト内のすべてのリフェラルを返します。
- 「保存」をクリックして、変更内容を適用します。新しいアクセス権とリフェラルの設定が、ただちに有効になります。
コマンド行からの権限とリフェラルの設定
リフェラルはラベル化された URL なので、LDAP URL には空白文字とラベルが続きます。空白文字は有意なので、リフェラルの URL 部分にある空白文字は、%20 を使用してエスケープする必要があります。
次のコマンドで、suffixDN は、定義済みのサフィックス DN の完全な文字列です。空白もすべて含まれます。LDAPURL は、ターゲットのホスト名、ポート番号、および DN を含む有効な URL です。たとえば、次のように指定します。
ldap://phonebook.example.com:389/ou=All%20People,dc=example,dc=com
- 次のコマンドを使用して、サフィックスの設定エントリを編集します。
ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn: cn="suffixDN",cn=mapping tree,cn=config
changetype:modify
replace:nsslapd-state
nsslapd-state: referral on update or referral
-
add:nsslapd-referral
nsslapd-referral:LDAPURL
^D最後の変更文を繰り返すことにより、任意の数の LDAP URL を nsslapd-referral 属性に追加できます。
nsslapd-state の値が referral on update のときには、サフィックスは読み取り専用になり、書き込み操作に対してはすべての LDAP URL がリフェラルとして返されます。この値が referral のときには、読み取り操作と書き込み操作の両方が拒否され、すべての要求に対してリフェラルが返されます。
- コマンドの実行が成功すると、サフィックスはただちに読み取り専用になるか、アクセスできなくなり、リフェラルを返すことができるようになります。
サフィックスの削除
サフィックスを削除すると、そのサフィックスの分岐全体がディレクトリから削除されます。親サフィックスを削除し、そのサブサフィックスを、ディレクトリで新しいルートサフィックスとして保持することもできます。
コンソールからのサフィックスの削除
- Directory Server コンソールの「設定」タブで、「データ」ノードを展開します。
- 削除するサフィックスを右クリックし、ポップアップメニューから「削除」を選択します。
または、サフィックスのノードを選択し、「オブジェクト」メニューから「削除」を選択します。
- すべてのサフィックスエントリがディレクトリから削除されることを示す確認のダイアログが表示されます。
親サフィックスに加えて、すべてのサブサフィックスを再帰的に削除することもできます。分岐全体を削除する場合は、「このサフィックスとそのサブサフィックスすべてを削除」を選択します。また、特定のサフィックスだけを削除し、そのサブサフィックスをディレクトリに残しておく場合は、「このサフィックスだけを削除する」を選択します。
- 「了解」をクリックして、サフィックスを削除します。
コンソールによって処理されている内容を示すダイアログボックスが表示されます。
コマンド行からのサフィックスの削除
コマンド行からサフィックスを削除するには、ldapdelete コマンドを使用して、ディレクトリからサフィックスの設定エントリを削除します。
サブサフィックスも含めて分岐全体を削除する場合は、削除する親サフィックスのサブサフィックスを見つけ出し、サブサフィックスとさらにそれらのサブサフィックスのすべてについて手順を繰り返す必要があります。
- 次のコマンドを使用して、サフィックスの設定エントリを削除します。
ldapdelete -h host -p port -D "cn=Directory Manager" -w password ¥
-v 'cn="suffixDN",cn=mapping tree,cn=config'このコマンドによって、suffixDN のベースエントリで始まるサフィックスがサーバーから削除されます。これで、サフィックスはディレクトリに表示されなくなり、アクセスできなくなります。-v オプションでは冗長出力モードを指定します。削除操作に関する追加情報が表示されます。
- cn=databaseName,cn=ldbm database,cn=plugins,cn=config にある対応するデータベース設定エントリと、その下位にあるすべてのエントリを削除します。次のコマンドでは、ilash コマンドを使用してこの再帰的な削除を実行します。
% ilash -call "http://host:port/" -user "cn=Directory Manager"
[...]
Enter password for "cn=Directory Manager":password
[...]
[example,com]% dcd cn=config
[config]% ddelete -subtree ¥
"cn=databaseName,cn=ldbm database,cn=plugins,cn=config"Removed cn=aci, cn=index, cn=databaseName, cn=ldbm database,
cn=plugins, cn=configRemoved cn=entrydn, cn=index, cn=databaseName, cn=ldbm database,
cn=plugins, cn=config[...]
Removed cn=encrypted attributes, cn=databaseName, cn=ldbm database,
cn=plugins, cn=configRemoved cn=index, cn=databaseName, cn=ldbm database, cn=plugins,
cn=configRemoved cn=monitor, cn=databaseName, cn=ldbm database, cn=plugins,
cn=configRemoved cn=databaseName,cn=ldbm database,cn=plugins,cn=config
この出力には、データベースに関連付けられていて削除する必要のあるすべてのインデックス設定エントリが示されています。データベース設定がすべて削除されると、サーバーは、このサフィックスに関連付けられているすべてのデータベースファイルとディレクトリを削除します。
連鎖サフィックスの作成ルートサフィックスとサブサフィックスはどちらも、別のサーバーに連鎖することができます。どの手順も、コンソールを使用しても、コマンド行からでも実行できます。
ただし、連鎖サフィックスを作成する前に、リモートサーバーのプロキシ ID を作成する必要があります。ローカルサーバーは、連鎖サフィックスを通じて操作を転送するときに、プロキシ ID を使用してリモートサーバーをバインドします。
識別パラメータを使用して多くの連鎖サフィックスを設定する場合は、新しい連鎖サフィックスの連鎖パラメータに対するデフォルト値も設定する必要があります。連鎖サフィックス作成前後の任意の時点で、LDAP 制御とサーバーコンポーネントに関する連鎖ポリシーを設定することもできます。「連鎖ポリシーの設定」を参照してください。
プロキシ ID の作成
プロキシ ID は、ローカルサーバーが連鎖操作をバインドおよび転送するために使用するリモートサーバー上のユーザーです。セキュリティ上の理由から、プロキシには Directory Manager または管理ユーザー (admin) を使用しないでください。
その代わりに、指定されたサーバーからだけの連鎖操作に使用する新しい ID を作成します。連鎖されるすべてのサーバーと、「コンソールからの連鎖サフィックスの作成」または「コンソールからの連鎖ポリシーの変更」で定義されるすべてのフェイルオーバーサーバーで、この ID を作成します。このプロキシ ID には連鎖サフィックスへのすべてのアクセス権が必要です。
コンソールからのプロキシ ID の作成
この手順は、連鎖サフィックスのターゲットであるリモートサーバーに接続された Directory Server コンソールに適用されます。
コマンド行からのプロキシ ID の作成
この手順では、連鎖サフィックスを格納するローカルサーバーに host1 を使用し、連鎖サフィックスのターゲットであるリモートサーバーに host2 を使用します。
- 次のコマンドを使用して、host2 にプロキシ ID を作成します。
ldapmodify -a -h host2 -p port2 -D "cn=Directory Manager" -w password2
dn: uid=host1_proxy,cn=config
objectclass:top
objectclass:person
objectclass:organizationalPerson
objectclass:inetorgperson
uid: host1_proxy
cn: host1 chaining proxy
sn: host1
userpassword:password
description: proxy entry to be used for chaining from host1
^Dデフォルト連鎖パラメータの設定
連鎖パラメータによって、連鎖サーバーへのサーバーの接続方法と連鎖サフィックスに対する操作の処理方法が決まります。これらのパラメータは連鎖サフィックスごとに設定されます。Directory Serverは、連鎖サフィックスの作成時に使用されるデフォルト値を提供します。これらのデフォルト値を編集して、すべての新しい連鎖サフィックスに関する連鎖パラメータを変更することもできます。
デフォルトパラメータの変更後に新しく作成されるすべての連鎖サフィックスに、指定した値が設定されます。ただし、作成済みのサフィックスのパラメータは、「連鎖サフィックスの管理」で説明されている方法でしか変更できません。
連鎖パラメータの属性値とデフォルト値について、次に説明します。有効な値については、『Directory Server Administration Reference』の第 2 章にある「Chained Suffix Plug-in Attributes」を参照してください。
クライアント戻りパラメータ
- nsReferralOnScopedSearch : 有効 (デフォルト) の場合、連鎖サフィックス全体を適用範囲としたクライアントの検索には、リモートサーバーへのリフェラルが返されます。これにより、検索結果の二重送信が回避されます。無効に設定した場合は、サイズと時間の制限パラメータを設定して、連鎖サフィックスに対して長時間の検索が行われることを回避する必要があります。
- nsslapd-sizelimit : このパラメータは、連鎖された検索操作への応答として返されるエントリ数を決定します。デフォルトは 2,000 エントリです。連鎖サフィックスを含む広範囲の検索を制限する場合は、このパラメータの値を小さくします。どのような場合でも、操作はリモートサーバー上のサイズ設定によって制限を受けます。
- nsslapd-timelimit : このパラメータは、連鎖操作の時間の長さを制御します。デフォルトの制限時間は 3,600 秒 (1 時間) です。連鎖サフィックスに対する操作に有効な時間を制限する場合は、このパラメータの値を小さくします。どのような場合でも、操作はリモートサーバー上の時間設定によって制限を受けます。
カスケード型連鎖パラメータ
- nsCheckLocalACI : 単一レベルの連鎖では、ローカルサーバーは、連鎖サフィックス上でバインドされたユーザーのアクセス権をチェックしません。これは、リモートサーバーが行うためです。このため、デフォルト値は off です。ただし、カスケード型連鎖の中間サーバーでは、このパラメータを on に設定して、連鎖操作を転送するサーバーが使用するプロキシ DN のアクセス権をチェックおよび制限する必要があります。
- nsHopLimit : ループ検出は、このパラメータを使用して、有効な最大ホップ数を定義します。このホップ数に達した連鎖操作は転送されず、カスケードトポロジに異常なループがあると見なして中断されます。
接続管理パラメータ
- nsOperationConnectionsLimit : 連鎖サフィックスがリモートサーバーとの間で同時に確立できる LDAP 操作接続の最大数を指定します。デフォルトは 10 です。
- nsBindConnectionsLimit : 連鎖サフィックスがリモートサーバーとの間で同時に確立できるバインド接続の最大数を指定します。デフォルトは 3 です。
- nsConcurrentBindLimit : LDAP 接続ごとに同時に行うことができるバインド操作の最大数を指定します。デフォルト値は、接続ごとに 10 です。
- nsBindRetryLimit : エラー発生時に連鎖サフィックスがリモートサーバーとの再バインドを試行する回数を指定します。「0」を指定すると、連鎖サフィックスは 1 回だけバインドを試みます。デフォルトは 3 です。
- nsConcurrentOperationsLimit : LDAP 接続ごとに同時に行うことができる操作の最大数を指定します。デフォルト値は 1 接続あたり 10 です。
- nsBindTimeout : 連鎖サフィックスへのバインド操作の試行がタイムアウトになるまでの時間 (秒) を指定します。デフォルトは 15 秒です。
- nsAbandonedSearchCheckInterval : 操作が中断されているかどうかをサーバーがチェックするまでの秒数を指定します。デフォルトは 2 秒です。
- nsConnectionLife : 連鎖サフィックスとリモートサーバー間で確立された接続を再利用可能な接続時間を指定します。接続したままにすると、処理は速くなりますが、リソースが多く使用されます。たとえば、ダイヤルアップ接続を使用している場合は、接続時間を制限する必要があります。デフォルトは 0 で、接続時間に制限はありません。
エラー検出パラメータ
- nsmaxresponsedelay : 連鎖操作に対する LDAP 要求の開始にリモートサーバーが応答するまでにかかる最大時間を指定します。この時間は秒単位で指定します。ローカルサーバーは、この遅延時間が経過したあとに接続をテストします。デフォルトの遅延時間は 60 秒です。
- nsmaxtestresponsedelay : リモートサーバーが応答しているかどうかをチェックするテストの持続時間を指定します。テストは、存在しないエントリに対する簡単な検索要求です。この時間は秒単位で指定します。テストの遅延時間内に応答が受信されない場合、連鎖サフィックスはリモートサーバーが停止していると見なします。デフォルトのテスト応答遅延時間は 15 秒です。
コンソールからのデフォルト連鎖パラメータの設定
コマンド行からのデフォルト連鎖パラメータの設定
- ldapmodify コマンドを使用して、エントリ cn=default instance config,cn=chaining database,cn=plugins,cn=config を編集します。このエントリのすべての属性が、新しい連鎖サフィックスのパラメータのデフォルト値になります。
たとえば、次のコマンドでは、新しい連鎖サフィックスのデフォルトのサイズ制限が 5,000 エントリに増加し、デフォルトの時間制限が 10 分に減少します。
ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn:cn=default instance config,cn=chaining database,
cn=plugins,cn=config
changetype:modify
replace:nsslapd-sizelimit
nsslapd-sizelimit: 5000
-
replace:nsslapd-timelimit
nsslapd-timelimit: 600
^Dこのエントリへの変更は、ただちに有効になります。
コンソールからの連鎖サフィックスの作成
次の手順は、連鎖ルートサフィックスと連鎖サブサフィックスを作成する場合とほぼ同じです。
- Directory Server コンソールの「設定」タブを選択します。
- 連鎖ルートサフィックスについては、「データ」ノードを右クリックし、ポップアップメニューから「新規連鎖サフィックス」を選択します。または、「データ」ノードを選択し、「オブジェクト」メニューから「新規連鎖サフィックス」を選択します。
- 連鎖サブサフィックスについては、「データ」ノードと任意のサフィックスノードを展開して、親サフィックスを表示します。親サフィックスのノードを右クリックし、ポップアップメニューから「新規連鎖サブサフィックス」を選択します。または、親サフィックスのノードを選択し、「オブジェクト」メニューから「新規連鎖サブサフィックス」を選択します。
「新規連鎖 (サブ) サフィックス」ダイアログボックスが表示されます。
- 連鎖するリモートサーバー上のエントリの DN を入力します。リモートエントリは、リモートサフィックスのベースエントリである必要はありません。
- サフィックスデータを格納するリモートサーバーのホスト名を入力します。必要に応じてドメインも指定します。
- リモートサーバーにアクセスするためのポート番号を入力し、セキュリティ保護されたポートである場合はチェックボックスを選択します。セキュリティ保護されたポートを使用する場合、連鎖操作は SSL により暗号化されます。詳細については、「SSL を使用した連鎖」を参照してください。
ダイアログの最下部には、リモートサーバーの完全 URL が表示されます。
- リモートサーバーのプロキシ ID のバインド DN とパスワードを入力します。ローカルサーバーは、リモートサーバー上のサフィックスの内容にアクセスするときに、この DN をプロキシとして使用します。たとえば、「プロキシ ID の作成」で定義されている uid=host1_proxy,cn=config DN を使用します。
リモートサーバー上の Directory Manager の DN を使用することはできません。連鎖サフィックスを通じて実行される操作は、creatorsName 属性と modifiersName 属性で、このプロキシ ID を使用します。プロキシ DN を省略することもできますが、その場合、ローカルサーバーはリモートサーバーへのアクセス時に匿名でバインドします。
- 「了解」をクリックして、連鎖サフィックスを作成します。新しいサフィックスが、設定ツリーに連鎖を示すアイコンとともに表示されます。
- 新しい連鎖サフィックスをクリックして選択し、右側のパネルで「リモートサーバー」タブを選択します。
- 必要に応じて、この連鎖サフィックスに対する 1 つ以上のフェイルオーバーサーバーを定義することもできます。サーバーは、リモートサーバーに接続できない場合、応答が得られるまで、定義された順に各フェイルオーバーサーバーへの接続を試行します。フェイルオーバーサーバーには、連鎖サフィックスと同じサフィックスが格納されていて、プロキシに対して同じバインド DN が許可されている必要があります。
複数のフェイルオーバーサーバーを定義するには、「リモートサーバー URL」フィールドに、ホスト名とポート番号のペアを空白で区切って入力します。このフィールドの書式は次のとおりです。
ldap[s]://hostname[:port][ hostname[:port]].../
- 「リモートサーバー」タブの最下部のテキストボックスには、プロキシで許可された連鎖操作を行うために必要な ACI が表示されます。この ACI を、リモートサーバーの suffixDN とともにエントリに追加する必要があります。フェイルオーバーサーバーを定義している場合は、ACI をすべてのフェイルオーバーサーバーに追加する必要があります。「ACI をコピー」ボタンを使用して、ACI のテキストをペーストできるように、システムのクリップボードにコピーします。
この ACI がリモートサーバーのベースエントリに追加されると、連鎖サフィックスがローカルサーバーのディレクトリツリーに表示されます。
警告
連鎖によって公開されているリモートサーバーへのアクセスを制限するには、同じエントリで別の ACI を定義することが必要な場合もあります。詳細は、「連鎖サフィックスのアクセス制御」を参照してください。
- サーバーコンポーネントに対して連鎖ポリシーを設定済みである場合は、これらのコンポーネントのリモートサーバーへのアクセスを許可する ACI を追加することも必要です。たとえば、参照整合性検査プラグインの連鎖を許可する場合、手順 2 で指定した DN を持つベースエントリに、次の ACI を追加する必要があります。
aci:(targetattr "*")
(target="ldap:///suffixDN")
(version 3.0; acl "RefInt Access for chaining"; allow
(read,write,search,compare) userdn = "ldap:///cn=referential
integrity postoperation,cn=plugins,cn=config";)コマンド行からの連鎖サフィックスの作成
ldapmodify コマンド行ユーティリティを使用しても、ディレクトリ内に連鎖サフィックスを作成できます。連鎖ルートサフィックスと連鎖サブサフィックスは、サーバーによって内部的に同じ方法で管理されるため、それらをコマンド行から作成する手順はほとんど同じです。
- 次のコマンドを使用して、連鎖ルートサフィックスの連鎖サフィックスエントリを cn=mapping tree,cn=config の下に作成します。
ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
dn: cn=suffixDN,cn=mapping tree,cn=config
objectclass:top
objectclass:extensibleObject
objectclass:nsMappingTree
cn: suffixDN
nsslapd-state:backend
nsslapd-backend: databaseName
^D連鎖サブサフィックスについては、上記のコマンドに次の属性を追加します。
nsslapd-parent-suffix:parentSuffixDN連鎖サブサフィックスでは、suffixDN は、サブサフィックスの RDN と親サフィックスの DN となります。たとえば、l=Europe,dc=example,dc=com のようになります。suffixDN には、リモートサーバーから使用可能なエントリの DN を指定する必要がありますが、リモートサフィックスのベースエントリである必要はありません。
サフィックス名は DN 形式となりますが、単一の文字列として扱われます。そのため、空白はすべて意味を持ち、サフィックス名の一部となります。サーバーがリモートエントリにアクセスするためには、suffixDN の文字列にはリモートサフィックスと同じ空白を使用する必要があります。
databaseName は、連鎖プラグインコンポーネントが連鎖サフィックスを識別するために使用します。この名前は、すべてのサフィックスの databaseNames で一意となる必要があります。規則では、suffixDN の 1 番目のネーミングコンポーネントの値となります。ローカルサフィックスとは異なり、連鎖サフィックスはローカルサーバー上にデータベースファイルを保持しません。
サブサフィックスでは、parentSuffixDN は親サフィックスの正確な DN です。親は、ローカルサフィックスまたは連鎖サフィックスのどちらかです。
- 次のコマンドを使用して、連鎖設定エントリを作成します。
ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
dn: cn=databaseName,cn=chaining database,cn=plugins,cn=config
objectclass:top
objectclass:extensibleObject
objectclass:nsBackendInstance
cn: databaseName
nsslapd-suffix: suffixDN
nsfarmserverurl: LDAPURL
nsmultiplexorbinddn: proxyDN
nsmultiplexorcredentials: ProxyPassword
^DdatabaseName と suffixDN は、前の手順の値と同じにする必要があります。LDAPURL リモートサーバーの URL ですが、サフィックスに関する情報は含まれません。URL には、次の書式で複数のフェイルオーバーサーバーを指定できます。
ldap[s]://hostname[:port][ hostname[:port]].../
LDAP URL 内のすべてのリモートサーバーには、suffixDN を指定する必要があります。セキュリティ保護されたポートの指定方法については、「SSL を使用した連鎖」を参照してください。
proxyDN には、リモートサーバー上のプロキシ ID の DN を指定します。ローカルサーバーは、リモートサーバー上のサフィックスの内容にアクセスするときに、この DN をプロキシとして使用します。連鎖サフィックスを通じて実行される操作は、creatorsName 属性と modifiersName 属性で、このプロキシ ID を使用します。プロキシ DN を指定しない場合、ローカルサーバーはリモートサーバーへのアクセス時に匿名でバインドします。
ProxyPassword はプロキシ DN のパスワードで、この値は暗号化されません。パスワードは、設定ファイルに格納されるときに暗号化されます。たとえば、次のようにします。
nsmultiplexorbinddn: uid=host1_proxy,cn=config
nsmultiplexorcredentials:secret
新しいエントリは、すべての連鎖パラメータに自動的に追加されます。その際、cn=default instance config,cn=chaining database,cn=plugins,cn=config で定義されたデフォルト値が使用されます。連鎖設定エントリの作成時、属性値に別の値を設定すると、デフォルト値を上書きできます。値を定義できる属性のリストは、「デフォルト連鎖パラメータの設定」を参照してください。
- 次のコマンドを使用して、リモートエントリに ACI を作成します。この ACI は、プロキシで許可された連鎖操作を行うために必要です。ACI については、第 6 章「アクセス制御の管理」を参照してください。
ldapmodify -h host2 -p port2 -D "cn=Directory Manager" -w password2
dn: suffixDN
changetype:modify
add:aci
aci: (targetattr=*)(target = "ldap:///suffixDN")(version 3.0;acl
"Allows use of admin for chaining"; allow (proxy)
(userdn="ldap:///proxyDN");)
^D
警告
このサーバーから公開されているリモートサーバーへのアクセスを制限するには、同じエントリで別の ACI を定義することが必要な場合もあります。詳細は、「連鎖サフィックスのアクセス制御」を参照してください。
- サーバーコンポーネントに対して連鎖ポリシーを設定済みである場合は、これらのコンポーネントのリモートサーバーへのアクセスを許可する ACI を追加することも必要です。たとえば、参照整合性検査プラグインの連鎖を許可する場合、suffixDN が指定されているベースエントリに、次の ACI を追加する必要があります。
aci:(targetattr "*")
(target="ldap:///suffixDN")
(version 3.0; acl "RefInt Access for chaining"; allow
(read,write,search,compare) userdn = "ldap:///cn=referential
integrity postoperation,cn=plugins,cn=config";)次のコマンドは、連鎖サブサフィックスの作成例です。DN 内のネーミング属性に指定する場合、suffixDN 内のコンマの前にエスケープ文字の円記号 (¥) を付ける必要があります。
ldapmodify -a -h host1 -p port1 -D "cn=Directory Manager" -w password1
dn:cn=l=Europe¥,dc=example¥,dc=com,cn=mapping tree,cn=config
objectclass:top
objectclass:extensibleObject
objectclass:nsMappingTree
cn:l=Europe,dc=example,dc=com
nsslapd-state:backend
nsslapd-backend:Europe
nsslapd-parent-suffix:dc=example,dc=com
dn:cn=Europe,cn=chaining database,cn=plugins,cn=config
objectclass:top
objectclass:extensibleObject
objectclass:nsBackendInstance
cn:Europe
nsslapd-suffix:l=Europe,dc=example,dc=com
nsfarmserverurl: ldap://host2:port2/
nsmultiplexorbinddn: uid=host1_proxy,cn=config
nsmultiplexorcredentials: proxyPassword
^D
ldapmodify -h host2 -p port2 -D "cn=Directory Manager" -w password2
dn:l=Europe,dc=example,dc=com
changetype:modify
changetype:modify
aci:(targetattr=*)(target =
"ldap:///l=Europe,dc=example,dc=com")(version 3.0;acl
"Allows use of admin for chaining"; allow (proxy)
(userdn="ldap:///uid=host1_proxy,cn=config");)
^D連鎖サフィックスのアクセス制御
認証ユーザーが連鎖サフィックスにアクセスすると、サーバーはユーザーの ID をリモートサーバーに送信します。ここでのアクセス制御は、常にリモートサーバーで評価されます。リモートサーバーで評価される LDAP 操作では、プロキシ承認制御により渡されたクライアントアプリケーションのオリジナル ID が使用されます。ユーザーが、リモートサーバーに含まれるサブツリーに対して正しいアクセス制御を持っている場合にだけ、リモートサーバーで操作が成功します。つまり、リモートサーバーには、通常のアクセス制御を追加しておく必要があります。これには次のような制約があります。
連鎖サフィックスとともに使用するために作成する ACI には、次の制約があります。
アクセス制御は常にリモートサーバーで評価されますが、連鎖サフィックスを含むサーバーとリモートサーバーの両方でアクセス制御が評価されるように選択することもできます。これにはいくつかの制約があります。
- アクセス制御の評価中に、ユーザーエントリの内容が使用できるとは限らない (たとえば、連鎖サフィックスが含まれるサーバーでアクセス制御が評価され、エントリがリモートサーバーにある場合)
パフォーマンス上の理由から、クライアントがリモートの問い合わせやアクセス制御の評価を行うことはできません。
- 連鎖サフィックスに、クライアントアプリケーションによって変更されているエントリへのアクセス権があるとは限らない
変更操作を実行するときに、リモートサーバーに格納されているすべてのエントリへのアクセス権が、連鎖サフィックスにあるとは限りません。削除操作を実行する場合、連鎖サフィックスはエントリの DN だけを認識します。アクセス制御で特定の属性が指定されている場合は、連鎖サフィックスを通じて削除操作を実行すると失敗します。
デフォルトでは、連鎖サフィックスを含むサーバーで設定されたアクセス制御は評価されません。このデフォルト値を上書きするには、cn=databaseName,cn=chaining database,cn=plugins,cn=config エントリの nsCheckLocalACI 属性を使用します。ただし、連鎖サフィックスを含むサーバーでアクセス制御を評価することは、カスケード型連鎖を使用している場合を除き、お勧めできません。詳細は、「カスケード型連鎖の設定」を参照してください。
SSL を使用した連鎖
連鎖サフィックス上の操作を実行するときに、SSL を使用してリモートサーバーと通信するように、サーバーを設定できます。連鎖で SSL を使用するには、次の手順を実行します。
- リモートサーバーで、SSL を有効にします。
- 連鎖サフィックスが含まれるサーバーで SSL を有効にします。
SSL の有効化については、第 11 章「認証と暗号化の管理」を参照してください。
- 連鎖サフィックスの作成または変更の手順で、リモートサーバーの SSL とセキュリティ保護されたポートを指定します。
コンソールを使用する場合は、連鎖サフィックスの作成または設定の手順で、セキュリティ保護されたポートのチェックボックスを選択します。詳細は、「コンソールからの連鎖サフィックスの作成」または「コンソールからの連鎖ポリシーの変更」を参照してください。
コマンド行を使用して実行する場合は、リモートサーバーの LDAPS URL とセキュリティ保護されたポートを ldaps://example.com:636/ のように指定します。詳細は、「コマンド行からの連鎖サフィックスの作成」または「コマンド行からの連鎖ポリシーの変更」を参照してください。
SSL を使用して通信するように連鎖サフィックスとリモートサーバーを設定すると、操作を要求するクライアントアプリケーションが SSL を使用して通信する必要はありません。クライアントは、LDAP プロトコルまたは DSML プロトコルのポートを使用できます。
連鎖サフィックスの管理ここでは、既存の連鎖サフィックスの更新方法と削除方法について説明します。また、連鎖メカニズムの制御方法についても説明します。
連鎖ポリシーの設定
サーバーの連鎖ポリシーによって、連鎖されたサーバーに伝達する LDAP 制御と、連鎖サフィックスへのアクセスを許可するサーバーコンポーネントを決定します。連鎖ポリシーの設定と、連鎖サフィックスに関わる操作への影響については、認識しておく必要があります。連鎖ポリシーは、サーバー上のすべての連鎖サフィックスに適用されます。
デフォルトの設定は、通常の操作を透過的に実行できることを目的としています。ただし、操作に LDAP 制御が含まれる場合、あるいは参照整合性検査プラグインなどのサーバーコンポーネントを使用している場合は、要件を満たす連鎖ポリシーを設定する必要があります。
連鎖サフィックスを作成する前に連鎖ポリシーを設定しておくことが最適です。そのようにすると、連鎖サフィックスを有効にした時点でただちにポリシーが適用されます。ただし、その後いつでもポリシーを変更できます。
LDAP 制御の連鎖ポリシー
LDAP 制御は要求の一部としてクライアントから送信され、操作またはその結果が何らかの方法によって変更されます。サーバーの連鎖ポリシーによって、サーバーが操作とともにどの制御を連鎖サフィックスへ転送するかが決まります。デフォルトでは、次の制御が連鎖サフィックスのリモートサーバーに転送されます。
表 3-1 デフォルトで連鎖に許可される LDAP 制御
制御の OID
制御の名前と説明
1.2.840.113556.1.4.473
サーバー側ソート : 検索と関連付けられて、属性値に従って結果のエントリをソートする1
1.3.6.1.4.1.1466.29539.12
連鎖ループの検出 : サーバーが別のサーバーと連鎖する回数を記録する。この回数が設定した値に達すると、操作は中断され、クライアントアプリケーションに通知される。詳細は、「カスケード型連鎖の LDAP 制御の送信」を参照
2.16.840.1.113730.3.4.2
スマートリフェラルの管理 DSA : リフェラルに従わずに、スマートリフェラルをエントリとして返す。スマートリフェラル自体を変更または削除できる
2.16.840.1.113730.3.4.9
仮想リスト表示 (VLV): 検索に対してすべての結果エントリを一度に返すのではなく、部分的に結果を表示する 1
1サーバー側ソート制御と VLV 制御は、検索範囲が 1 つのサフィックスである場合にだけ、連鎖を通じてサポートされます。クライアントアプリケーションからの要求が複数のサフィックスに対して行われた場合は、連鎖サフィックスでは、VLV 制御はサポートされません。
次の表に、連鎖ポリシーを設定して連鎖を許可できる、その他の LDAP 制御を示します。
表 3-2 連鎖できる LDAP 制御
制御の OID
制御の名前と説明
1.3.6.1.4.1.42.2.27.9.5.2
有効な権限の要求 : 結果のエントリと属性に関連するアクセス権と ACI に関する情報を返すようサーバーに要求する
2.16.840.1.113730.3.4.12
プロキシ承認 (旧仕様): 要求中に別の識別情報を使用することを、クライアントに許可する 1
2.16.840.1.113730.3.4.14
特定データベース検索 : 検索操作で使用され、制御で指定されているデータベース上で検索が実行されるように指定する
2.16.840.1.113730.3.4.16
認証要求 : バインド要求とともに通知され、バインド応答で証明書を返すようにサーバーに要求する
2.16.840.1.113730.3.4.17
実際の属性だけの要求 : サーバーはエントリ内に実際に含まれる属性だけを返し、仮想属性を解決する必要がないことを示す
2.16.840.1.113730.3.4.18
プロキシ承認 (新仕様): 要求中に別の識別情報を使用することを、クライアントに許可する 1
2.16.840.1.113730.3.4.19
仮想属性だけの要求 : サーバーはサービス機能のロールとクラスによって生成された属性だけを返すことを示す
1アプリケーションは、プロキシ承認にどちらの制御も使用できます。これらの OID には同じ連鎖ポリシーを設定する必要があります。詳細は、「カスケード型連鎖の LDAP 制御の送信」を参照してください。
サーバーコンポーネントの連鎖ポリシー
コンポーネントとは、内部操作を使用するサーバーの機能単位です。たとえば、プラグインはコンポーネントです。ほとんどのコンポーネントのタスクを実行するには、コンポーネントはディレクトリの内容にアクセスする必要があります。ディレクトリの内容とは、ディレクトリ内に格納されている設定データまたはユーザーデータです。
デフォルトでは、サーバーコンポーネントの連鎖は禁止されています。コンポーネントから連鎖サフィックスにアクセスする場合は、連鎖を明示的に許可する必要があります。連鎖されたデータにアクセスできるコンポーネントの DN を次に示します。
「コンソールからの連鎖サフィックスの作成」で説明されるように、連鎖できるようにするには、リモートサーバー上の ACI で適切な権限を許可する必要があります。サーバーコンポーネントを連鎖するときには、この ACI で検索、読み取り、および比較を許可して、サーバーコンポーネントがこれらの操作を実行できるようにする必要があります。さらに、コンポーネントによっては、次に説明するようにリモートサーバー上での書き込み権限が必要となる場合もあります。
- cn=ACL Plugin,cn=plugins,cn=config : この ACL プラグインは、アクセス制御機能を実装する。ローカルとリモートの ACI 属性を混在させると危険なので、ACI 属性を検出および更新するための処理は連鎖されない。ただし、ユーザーエントリへのアクセスに使用する要求は連鎖できる。ACI および連鎖の制限については、「ACI の制限事項」を参照
- cn=old plugin,cn=plugins,cn=config : このプラグインは、すべての Directory Server 4.x プラグインと、それらに連鎖が許可されているかどうかを表す。4.x プラグインの連鎖ポリシーはすべて同じ。4.x プラグインによって実行される操作によっては、リモートサーバー上に ACI を設定することが必要な場合がある
- cn=resource limits,cn=components,cn=config : このコンポーネントは、ユーザーバインド DN に基づいてリソースの使用制限を設定する。このコンポーネントが連鎖を許可された場合、連鎖サフィックスに ID が格納されているユーザーに対してリソースの使用を制限できる
- cn=certificate-based authentication,cn=components,cn=config : このコンポーネントは、SASL 外部バインド方法とともに使用される。リモートサーバーからユーザー証明書を取得する
警告
連鎖サフィックスから証明書に基づく認証を許可すると、セキュリティホールが作成される場合があります。信頼されないリモートサーバーに別のサフィックスが連鎖されている場合、信頼されないサーバー上の証明書が認証に使われる可能性があります。
- cn=referential integrity postoperation,cn=plugins,cn=config : このプラグインは、エントリが削除されたときに、グループメンバーのリストなど、その DN を参照していた別のエントリに伝達する。連鎖でこのプラグインを使用すると、グループのメンバーが連鎖サフィックスに格納されているときに、スタティックグループの管理が簡単になる。このプラグインが連鎖サフィックスにアクセスするには、リモートサーバー上で書き込み権限が必要となる
- cn=uid uniqueness,cn=plugins,cn=config : UID 一意性検査プラグインは、新しく指定された属性のすべての値がサーバー上で一意であることを確認する。このプラグインの連鎖を許可すると、ディレクトリツリー全体での一意性が保持される
コンソールからの連鎖ポリシーの変更
- Directory Server コンソールの「設定」タブで、「データ」ノードを選択し、右側のパネルで「連鎖」タブを選択します。
- 右側のリストから 1 つ以上の LDAP 制御を選択し、「追加」をクリックして、それらの連鎖を許可します。「追加」ボタンと「削除」ボタンを使用して、連鎖を許可する制御のリストを作成します。
LDAP 制御は OID で示されます。各制御の名前と説明については、「LDAP 制御の連鎖ポリシー」を参照してください。
- 連鎖を許可されたサーバーコンポーネントが、同じタブの下部に一覧表示されます。右側のリストから 1 つ以上のコンポーネント名を選択し、「追加」をクリックして、それらの連鎖を許可します。「追加」ボタンと「削除」ボタンを使用して、連鎖を許可するコンポーネントのリストを作成します。
各コンポーネントの説明については、「サーバーコンポーネントの連鎖ポリシー」を参照してください。
- 「保存」をクリックして、連鎖ポリシーを保存します。
- 変更内容を有効にするために、サーバーを再起動します。
コマンド行からの連鎖ポリシーの変更
cn=config,cn=chaining database,cn=plugins,cn=config エントリには、連鎖ポリシー設定のための属性が含まれます。ldapmodify コマンドを使用して、このエントリを編集します。
- 複数値属性の nsTransmittedControls を変更して、連鎖を許可するすべての LDAP 制御の OID を指定します。連鎖できる制御の OID については、「LDAP 制御の連鎖ポリシー」を参照してください。
たとえば、次のコマンドによって、有効な権限の制御が、連鎖される制御のリストに追加されます。
ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn:cn=config,cn=chaining database,cn=plugins,cn=config
changetype:modify
add:nsTransmittedControls
nsTransmittedControls: 1.3.6.1.4.1.42.2.27.9.5.2
^Dクライアントアプリケーションがカスタム制御を使用していて、それらの連鎖を許可する場合には、それらのカスタム制御の OID を nsTransmittedControls 属性に追加することもできます。
- 複数値属性の nsActiveChainingComponents を変更して、連鎖を許可するすべてのサーバーコンポーネントの DN を指定します。各コンポーネントの説明については、「サーバーコンポーネントの連鎖ポリシー」を参照してください。
たとえば、次のコマンドによって、参照整合性コンポーネントが、連鎖されるコンポーネントのリストに追加されます。
ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn:cn=config,cn=chaining database,cn=plugins,cn=config
changetype:modify
add:nsActiveChainingComponents
nsActiveChainingComponents:cn=referential integrity
postoperation,cn=components,cn=config
^D- 連鎖ポリシーの設定エントリを変更したら、変更内容を有効にするにはサーバーを再起動する必要があります。
連鎖サフィックスの無効化と有効化
保守やセキュリティ上の理由から、連鎖サフィックスを使用できないようにすることが必要な場合があります。サフィックスを無効にすると、サーバーは、サフィックスへのアクセスを試みたクライアント操作への応答時に、リモートサーバーに接続できなくなります。デフォルトのリフェラルを定義している場合は、無効になっているサフィックスにクライアントがアクセスしようとすると、デフォルトのリフェラルが返されます。
コンソールからの連鎖サフィックスの無効化と有効化
- Directory Server コンソールの最上位の「設定」タブで「データ」ノードを展開し、無効にする連鎖サフィックスを選択します。
- 右側のパネルで、「設定」タブを選択します。デフォルトでは、すべての連鎖サフィックスは作成した時点で有効になります。
- 「このサフィックスへのアクセスを有効に」チェックボックスの選択を解除して、サフィックスを無効にします。または、このチェックボックスを選択して、サフィックスを有効にします。
- 「保存」をクリックして、変更内容を適用します。サフィックスは、ただちに無効または有効になります。
- 必要に応じて、サフィックスが無効である間にサフィックスへのすべての操作に対して返されるグローバルのデフォルトリフェラルを設定できます。これは、最上位の「設定」タブのルートノードの「ネットワーク」タブで設定します。詳細は、「コンソールからのデフォルトリフェラルの設定」を参照してください。
コマンド行からのサフィックスの無効化と有効化
- 次のコマンドを使用して、連鎖サフィックスエントリ内の nsslapd-state 属性を編集します。
ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn: cn=suffixDN,cn=mapping tree,cn=config
changetype:modify
replace:nsslapd-state
nsslapd-state: disabled or backend
^DsuffixDN は、定義済みのサフィックス DN の完全な文字列です。値には空白やコンマのエスケープ文字である円記号 (¥) も含まれます。nsslapd-state 属性の値を disabled に設定するとサフィックスは無効になり、backend に設定するとすべてのアクセス権が許可されます。
コマンドの実行が成功すると、サフィックスはただちに無効になります。
- 必要に応じて、サフィックスが無効である間にサフィックスへのすべての操作に対して返されるグローバルのデフォルトリフェラルを設定できます。詳細は、「コマンド行からのデフォルトリフェラルの設定」を参照してください。
アクセス権とリフェラルの設定
連鎖サフィックスを完全に無効にすることなくサフィックスへのアクセスを制限するには、アクセス権を変更して読み取り専用アクセスを許可できます。この場合、書き込み操作に対しては、別のサーバーへのリフェラルを定義する必要があります。また、読み取りアクセスと書き込みアクセスの両方を拒否し、サフィックスへのすべての操作に対するリフェラルを定義できます。
リフェラルの概要については、『Directory Server 配備計画ガイド』の第 5 章にある「分散、連鎖、およびリフェラル」を参照してください。
コマンド行からのアクセス権とリフェラルの設定
- Directory Server コンソールの最上位の「設定」タブで「データ」ノードを展開し、リフェラルを設定する連鎖サフィックスを選択します。
- 右側のパネルで、「設定」タブを選択します。連鎖サフィックスが有効である場合は、アクセス権とリフェラルだけを設定できます。
- 次のラジオボタンのどれかを選択して、該当のサフィックスのエントリに対する書き込み操作への応答を設定します。
- 書き込みおよび読み取り要求を処理 : このラジオボタンは、デフォルトで選択され、通常の動作を示します。読み取り操作と書き込み操作の両方がリモートサーバーに転送され、結果がクライアントに返されます。リフェラルが定義されていることもありますが、クライアントには返されません。
- 読み取り要求を処理し、書き込み要求にはリフェラルを返す : サーバーは読み取り要求だけを転送し、その結果をクライアントに返します。書き込み要求に対するリフェラルとして返す 1 つ以上の LDAP URL をリストに入力します。
- 読み取りおよび書き込み要求の両方にリフェラルを返す : すべての操作に対するリフェラルとして返す 1 つ以上の LDAP URL をリストに入力します。この場合の動作は、サフィックスへのアクセスを無効にした場合と同様ですが、グローバルのデフォルトリフェラルを使用するのではなく、該当のサフィックス専用にリフェラルを定義してもよい点が異なります。
- 「追加」ボタンまたは「削除」ボタンを使用して、リフェラルのリストを編集します。「追加」ボタンをクリックすると、新しいリフェラルの LDAP URL を作成するためのダイアログが表示されます。リモートサーバー内の任意の分岐 DN にリフェラルを作成できます。LDAP URL の構造については、『Directory Server Administration Reference』の第 6 章にある「LDAP URL Reference」を参照してください。
複数のリフェラルを入力できます。ディレクトリは、クライアントアプリケーションからの要求に対応して、このリスト内のすべてのリフェラルを返します。
- 「保存」をクリックして、変更内容を適用します。新しいアクセス権とリフェラルの設定が、ただちに有効になります。
コマンド行からのアクセス権とリフェラルの設定
次のコマンドで、suffixDN は、定義済みの連鎖サフィックスの完全な文字列です。空白も含まれます。LDAPURL は、ターゲットのホスト名、ポート番号、および DN を含む有効な URL です。たとえば、次のように指定します。
ldap://alternate.example.com:389/ou=People,dc=example,dc=com
- 次のコマンドを使用して、連鎖サフィックスエントリを編集します。
ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn: cn=suffixDN,cn=mapping tree,cn=config
changetype:modify
replace:nsslapd-state
nsslapd-state: referral on update or referral
-
add:nsslapd-referral
nsslapd-referral:LDAPURL
^D最後の変更文を繰り返すことにより、任意の数の LDAP URL を nsslapd-referral 属性に追加できます。
nsslapd-state の値が referral on update のときには、サフィックスは読み取り専用になり、書き込み操作に対してはすべての LDAP URL がリフェラルとして返されます。この値が referral のときには、読み取り操作と書き込み操作の両方が拒否され、すべての要求に対してリフェラルが返されます。
- コマンドの実行が成功すると、サフィックスはただちに読み取り専用になるか、アクセスできなくなり、リフェラルを返すことができるようになります。
連鎖パラメータの変更
連鎖サフィックスを定義したあとには、連鎖を制御するパラメータを変更できます。リモートサーバーへのアクセス方法、プロキシに使用する DN の変更方法、あるいはリモートサーバーの変更方法も指定できます。また、サーバーが連鎖サーバーとの接続を確立する方法や維持する方法を制御するパフォーマンスパラメータも変更できます。
コンソールからの連鎖パラメータの変更
- Directory Server コンソールの最上位の「設定」タブで「データ」ノードを展開し、変更する連鎖サフィックスを選択します。
- 右側のパネルで、「リモートサーバー」タブを選択します。
- リモートサーバーの名前とポートを変更するには、「リモートサーバー URL」フィールドを変更します。URL には、次の書式で、1 つ以上のリモートサーバーのホスト名と省略可能なポート番号が指定されています。
ldap[s]://hostname[:port][ hostname[:port]].../
URL にサフィックス情報は含まれません。セキュリティ保護されたポートの指定方法については、「SSL を使用した連鎖」を参照してください。URL で 1 番目に指定されたサーバーが、連鎖された要求への応答に失敗すると、各サーバーには指定された順序で接続されます。LDAP URL 内のすべてのリモートサーバーには、連鎖サフィックスのベースエントリである suffixDN を指定する必要があります。
- プロキシユーザーの DN を変更するために、「バインド DN」フィールドに新しい値を入力します。「パスワード」フィールドに、この DN のパスワードを入力し、確認します。
proxyDN には、リモートサーバー上のユーザーの DN を指定します。ローカルサーバーは、リモートサーバー上のサフィックスの内容にアクセスするときに、この DN をプロキシとして使用します。連鎖サフィックスを通じて実行される操作は、creatorsName 属性と modifiersName 属性で、このプロキシ ID を使用します。プロキシ DN を指定しない場合、ローカルサーバーはリモートサーバーへのアクセス時に匿名でバインドします。
- タブの最下部にあるテキストボックスには、このサフィックスの連鎖を許可するために必要な ACI が表示されます。リモートサーバー URL を変更した場合は、新しいリモートサーバーまたは新しいサーバーの suffixDN とともに ACI をエントリに追加する必要があります。プロキシ DN を変更した場合は、すべての連鎖サーバー上の ACI を更新する必要があります。「ACI をコピー」ボタンを使用して、ACI のテキストをペーストできるように、システムのクリップボードにコピーします。
- 「制限と制御」タブを選択して、連鎖される要求に関するパラメータを設定します。カスケード型連鎖パラメータについては、「カスケード型連鎖の設定」を参照してください。
- 「クライアント応答の制御」パラメータを設定して、連鎖される操作のサイズと時間を制限します。
- 「範囲検索でリフェラルを返す」 : 連鎖サフィックス内全体を適用範囲とする検索は、結果が 2 回送信されるため役に立ちません。デフォルトでは、その代わりに、サーバーは連鎖サーバーにリフェラルを返すため、クライアントは連鎖サーバー上で直接検索を実行します。このオプションの選択を解除する場合は、次のパラメータを設定して、連鎖される結果のサイズを制限する必要があります。
- 「サイズ制限」または「制限サイズなし」 : このパラメータは、連鎖された検索操作への応答として返されるエントリ数を決定します。デフォルトは 2,000 エントリです。連鎖サフィックスを含む広範囲の検索を制限する場合は、このパラメータの値を小さくします。どのような場合でも、操作はリモートサーバー上のサイズ設定によって制限を受けます。
- 「時間制限」または「制限時間なし」 : このパラメータは、連鎖操作可能な時間の長さを制御します。デフォルトの制限時間は 3,600 秒 (1 時間) です。連鎖サフィックスに対する操作に有効な時間を制限する場合は、このパラメータの値を小さくします。どのような場合でも、操作はリモートサーバー上の時間設定によって制限を受けます。
- 「接続管理」パラメータを設定して、サーバーがリモートサーバーとのネットワーク接続とバインドを管理する方法を調整します。
- 「最大 LDAP 接続数」 : 連鎖サフィックスがリモートサーバーとの間で同時に確立できる LDAP 操作接続の最大数を指定します。デフォルトは 10 です。
- 「最大バインド接続数」 : 連鎖サフィックスがリモートサーバーとの間で同時に確立できるバインド接続の最大数を指定します。デフォルトは 3 です。
- 「接続ごとの最大バインド数」 : LDAP 接続ごとに同時に行うことができるバインド操作の最大数を指定します。デフォルト値は、接続ごとに 10 です。
- 「最大バインド再試行数」 : エラー時に連鎖サフィックスがリモートサーバーとの再バインドを試行する回数を指定します。「0」を指定すると、連鎖サフィックスは 1 回だけバインドを試みます。デフォルトは 3 です。
- 「接続ごとの最大操作数」 : LDAP 接続ごとに同時に行うことができる操作の最大数を指定します。デフォルト値は 1 接続あたり 10 です。
- 「バインドタイムアウト」または「バインドタイムアウトなし」 : 連鎖サフィックスへのバインド操作の試行がタイムアウトになるまでの時間 (秒) を指定します。デフォルトは 15 秒です。
- 「中断までのタイムアウト時間」または「中断前タイムアウトなし」 : 操作が中断されているかどうかをサーバーがチェックするまでの秒数を指定します。デフォルトは 2 秒です。
- 「接続継続時間」または「存続時間無制限」 : 連鎖サフィックスとリモートサーバー間で確立された接続を再利用するための接続の持続時間を指定します。接続したままにすると、処理は速くなりますが、リソースが多く使用されます。たとえば、ダイヤルアップ接続を使用している場合は、接続時間を制限する必要があります。デフォルトでは、接続時間は無制限です。
コンソールでは、エラー検出パラメータを使用できません。詳細は、「コマンド行からの連鎖パラメータの変更」を参照してください。
- 連鎖パラメータの設定が終了したら、「保存」をクリックします。
コマンド行からの連鎖パラメータの変更
コマンド行からは、コンソールを使用した場合と同じパラメータをすべて設定できます。また、「エラー検出パラメータ」で説明される追加のパラメータも設定できます。
- 次のコマンドを使用して、変更するサフィックスに対応する連鎖設定エントリを編集します。
ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn: cn=databaseName,cn=chaining database,cn=plugins,cn=config
changetype:modify
replace:attributeName
attributeName: attributeValue
-
replace: attributeName2
attributeName2: attributeValue2
...
^D設定できる属性の名前と値は、次の手順で説明します。コマンドの中に複数の変更文を含めることによって、一度に複数のパラメータを変更できます。
- nsfarmserverURL 属性を変更して、リモートサーバーの名前またはポートを変更します。値は URL で、次の書式で、1 つ以上のリモートサーバーのホスト名と省略可能なポート番号が含まれています。
ldap[s]://hostname[:port][ hostname[:port]].../
URL にサフィックス情報は含まれません。セキュリティ保護されたポートの指定方法については、「SSL を使用した連鎖」を参照してください。URL で 1 番目に指定されたサーバーが、連鎖された要求への応答に失敗すると、各サーバーには指定された順序で接続されます。LDAP URL 内のすべてのリモートサーバーには、連鎖サフィックスのベースエントリである suffixDN を指定する必要があります。
- nsmultiplexorBindDN 属性と nsmultiplexorCredentials 属性を変更して、リモートサーバーへのプロキシアクセスに使用する DN を変更します。
ローカルサーバーは、リモートサーバー上のサフィックスの内容にアクセスするときに、この DN をプロキシとして使用します。連鎖サフィックスを通じて実行される操作は、creatorsName 属性と modifiersName 属性で、このプロキシ ID を使用します。プロキシ DN を指定しない場合、ローカルサーバーはリモートサーバーへのアクセス時に匿名でバインドします。
- プロキシ DN またはその資格を変更する場合は、リモートサーバー上に対応する ACI を作成する必要があります。この ACI は、プロキシで許可された連鎖操作を行うために必要です。
ldapmodify -h host2 -p port2 -D "cn=Directory Manager" -w password2
dn: suffixDN
changetype:modify
add:aci
aci: (targetattr=*)(target = "ldap:///suffixDN")(version 3.0;acl
"Allows use of admin for chaining"; allow (proxy)
(userdn="ldap:///proxyDN");)
^D- 「デフォルト連鎖パラメータの設定」で説明される属性を設定して、リモートサーバーへの接続とリモートサーバー上の操作を制御します。カスケード型パラメータについては、「カスケード型連鎖の設定」を参照してください。
スレッド使用の最適化
サーバーがグローバルに使用するスレッド数を設定して、連鎖に使用されるスレッドリソースを考慮することもできます。連鎖操作は、リモートサーバーへ転送される必要があるため、かなり長く時間がかかることがあります。ただし、リモートサーバーが操作を処理している間は、スレッドはアイドル状態になります。連鎖されたサーバーを使用することで長時間の遅延が発生する場合は、スレッド数を増加させて、その間より多くのスレッドがローカルの操作を処理できるようにする必要があります。
デフォルトでは、サーバーが使用できるスレッド数は 30 です。ただし、連鎖サフィックスを使用する場合は、操作の処理で使用可能なスレッドの数を増やすことによって、パフォーマンスを向上させることができます。必要なスレッド数は、連鎖サフィックスの数、連鎖サフィックス上の操作の数とタイプ、およびリモートサーバー上で操作を処理するために必要な平均時間によって変わります。
通常、連鎖サフィックスごとに 5 から 10 のスレッド数を増加させる必要があります。これは、連鎖サフィックスで、ローカルサフィックスと同じ数の操作があることを仮定しています。
コンソールからのスレッドリソースの設定
コマンド行からのスレッドリソースの設定
連鎖サフィックスの削除
連鎖サフィックスを削除すると、ローカルのディレクトリツリーからアクセスできなくなりますが、連鎖サーバー上のエントリやサフィックスは削除されません。親サフィックスを削除し、そのサブサフィックスを、ディレクトリで新しいルートサフィックスとして保持することもできます。
コンソールからの連鎖サフィックスの削除
- Directory Server コンソールの「設定」タブで、「データ」ノードを展開します。
- 削除するサフィックスを右クリックし、ポップアップメニューから「削除」を選択します。
または、サフィックスのノードを選択し、「オブジェクト」メニューから「削除」を選択します。
- 該当の連鎖サフィックスを通じてアクセスできるエントリは、リモートディレクトリから削除されないことを示す確認のダイアログが表示されます。
親サフィックスに加えて、すべてのサブサフィックスを再帰的に削除することもできます。分岐全体を削除する場合は、「このサフィックスとそのサブサフィックスすべてを削除」を選択します。また、特定のサフィックスだけを削除し、そのサブサフィックスをディレクトリに残しておく場合は、「このサフィックスだけを削除する」を選択します。
- 「了解」をクリックして、サフィックスを削除します。
コンソールによって処理されている内容を示すダイアログボックスが表示されます。
コマンド行からのサフィックスの削除
コマンド行からサフィックスを削除するには、ldapdelete コマンドを使用して、ディレクトリからサフィックスの設定エントリを削除します。
サブサフィックスも含めて分岐全体を削除する場合は、削除する親サフィックスのサブサフィックスを見つけ出し、サブサフィックスとさらにそれらのサブサフィックスのすべてについて手順を繰り返す必要があります。
- 次のコマンドを使用して、サフィックスの設定エントリを削除します。
ldapdelete -h host -p port -D "cn=Directory Manager" -w password
cn=suffixDN,cn=mapping tree,cn=configこのコマンドによって、連鎖サフィックスとそのリモートエントリがディレクトリに表示されなくなります。
- cn=databaseName,cn=chaining database,cn=plugins,cn=config にある対応するデータベース設定エントリと、その下位にある監視エントリを削除します。
ldapdelete -h host -p port -D "cn=Directory Manager" -w password
cn=monitor,cn=dbName,cn=chaining database,cn=plugins,cn=config
cn=dbName,cn=chaining database,cn=plugins,cn=config
カスケード型連鎖の設定カスケード型連鎖では、あるサーバーから連鎖されているサブツリーは、それ自身が連鎖サフィックスであることも、連鎖サブサフィックスを含むこともできます。サーバーの連鎖サフィックスが含まれる操作は、第 3 のサーバーなどに接続する中間サーバーに転送されます。ディレクトリツリーの全データにアクセスするために、サーバー間の複数のホップが必要な場合、カスケード型連鎖が発生します。
たとえば、エントリ ou=People,l=Europe,dc=example,dc=com へのアクセスがサーバー A からサーバー B に、そして最終的にサーバー C に連鎖される様子を、次の図に示します。サーバー A には、ルートサフィックス dc=example,dc=com と分岐 l=Europe,dc=example,dc=com に対するサーバー B への連鎖サブサフィックスがあります。サーバー B には、エントリ l=Europe,dc=example,dc=com がありますが、分岐 ou=People,l=Europe,dc=example,dc=com はサーバー C への連鎖サブサフィックスです。サーバー C には、実際にエントリ ou=People,l=Europe,dc=example,dc=com があります。
図 3-1 3 台のサーバーのカスケード型連鎖
カスケード型パラメータの設定
カスケード型の設定には、次の 2 つの連鎖パラメータがあります。
コンソールからのカスケード型パラメータの設定
- Directory Server コンソールの最上位の「設定」タブで「データ」ノードを展開し、変更する連鎖サフィックスを選択します。
- 右側のパネルで、カスケード型連鎖パラメータを変更できる「制限と制御」タブを選択します。
- カスケード型連鎖内のすべての中間サーバーについて、ローカル ACI のチェックを行うために、チェックボックスを選択します。
ユーザーのアクセス権は最初のサーバーでは評価されず、プロキシを通じた 2 番目のサーバーで評価されるため、単一レベルの連鎖では、このチェックボックスは選択されていません。ただし、カスケード型連鎖の中間サーバーでは、ACI のチェックを有効にして、操作が再度転送される前にアクセス制御の実行を許可する必要があります。
- カスケード型連鎖内のすべてのサーバーについて、トポロジ内のすべての連鎖操作を許可する最大ホップ数を設定します。操作が別の連鎖サフィックスに転送されるたびにホップとしてカウントされ、この制限に到達していれば、連鎖サフィックスは操作をそれ以上転送しません。
この数値には、最長のカスケード型連鎖内のホップ数よりも大きい値を設定する必要があります。制限に達した場合は、サーバーがトポロジ内で異常なループがあると判断するため、操作は中断されます。
また、ループ検出制御を許可するように連鎖を設定する必要があります。「カスケード型連鎖の LDAP 制御の送信」を参照してください。
- カスケード型パラメータの設定が終了したら、「保存」をクリックします。
コマンド行からのカスケード型パラメータの設定
- 次のコマンドを使用して、すべての中間サーバーで、カスケード型サフィックスに関する連鎖設定エントリを編集します。
ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn: cn=databaseName,cn=chaining database,cn=plugins,cn=config
changetype:modify
replace:nsCheckLocalACI
nsCheckLocalACI:on
-
changetype:modify
replace:nsHopLimit
nsHopLimit: maximumHops
^DmaximumHops には、最長のカスケード型連鎖内のホップ数よりも大きい値を設定する必要があります。制限に達した場合は、サーバーがトポロジ内で異常なループがあると判断するため、操作は中断されます。また、ループ検出制御を許可するように連鎖を設定する必要があります。「カスケード型連鎖の LDAP 制御の送信」を参照してください。
- カスケード型連鎖内のその他すべてのサーバーについて、次のコマンドを使用して、カスケード型サフィックスに関する連鎖設定エントリを編集します。
ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn: cn=databaseName,cn=chaining database,cn=plugins,cn=config
replace:nsHopLimit
nsHopLimit: maximumHops
^DmaximumHops の定義は、前の手順と同じです。
カスケード型連鎖の LDAP 制御の送信
デフォルトでは、連鎖サフィックスはプロキシ承認制御を送信しません。ただし、連鎖サフィックスが別の連鎖サフィックスに接続するときには、リモートサーバー上でのアクセス制御に必要なユーザー識別情報を送信するために、プロキシ承認制御が必要となります。中間連鎖サフィックスは、連鎖のためにこの制御を許可する必要があります。
最近、プロキシ承認制御に関して、2 番目のプロトコルが定義されました。さまざまなサーバーのバージョンでは、制御のどれかが使用される可能性があるため、すべてのカスケード型サーバーでは、連鎖に新旧両方のプロキシ承認制御を許可するように設定する必要があります。
また、カスケード型連鎖中のループを防ぐために、ループ検出制御が必要となります。デフォルトでは、連鎖操作とともに転送されるよう許可されますが、この設定を検証する必要があります。サーバーでループ検出制御の連鎖が許可されていない場合、そのサーバーを含むループはすべて検出されません。
「連鎖ポリシーの設定」の手順に従って、次の 3 つの制御の連鎖を許可します。