2.3. データベースリンクの作成および維持
チェーン とは、サーバーがクライアントアプリケーションの代わりに他のサーバーに接続し、組み合わせた結果を返すことを意味します。チェーンは データベースリンク を介して実装され、リモートで保存されたデータを参照します。クライアントアプリケーションがデータベースリンクからデータを要求すると、データベースリンクはリモートデータベースからデータを取得し、クライアントに返します。
チェーンに関する一般的な情報は、『Red 『Hat Directory Server デプロイメントガイド』の「ディレクトリートポロジーの設計」の章を参照してください』。「データベースリンクアクティビティーの監視」では、データベースリンクアクティビティーを監視する方法を説明します。
2.3.1. 新規データベースリンクの作成
基本的なデータベースリンクの設定には、以下の 4 つの情報が必要です。
- 接尾辞の情報。接尾辞は、通常のデータベースではなく、データベースリンクが管理するディレクトリーツリーに作成されます。この接尾辞は、データが含まれるリモートサーバーの接尾辞に対応します。
- バインド認証情報。データベースリンクがリモートサーバーにバインドされると、ユーザーのなりすましが行われ、リモートサーバーとバインドするために使用する各データベースリンクの DN および認証情報を指定します。
- LDAP URL。これは、データベースリンクが接続するリモートサーバーの LDAP URL を提供します。URL はプロトコル (ldap または ldaps)、サーバーのホスト名または IP アドレス (IPv4 または IPv6)、およびポートで構成されます。
- フェイルオーバーサーバーの一覧。これは、障害発生時にデータベースリンクが接続するための代替サーバーの一覧を提供します。この設定項目は任意です。
注記
シンプルなパスワード認証 (「セキュアなバインドの要求」) にセキュアなバインドが必要な場合は、セキュアな接続で行われる場合を除き、チェーン操作は失敗します。セキュアな接続(TLS および Start TLS 接続または SASL 認証)の使用が推奨されます。
2.3.1.1. コンソールを使用した新規データベースリンクの作成
- Directory Server コンソールで、Configuration タブを選択します。
- 「接尾辞の作成」の説明に従って、新しい接尾辞を作成します。Create associated database automatically のチェックボックスの選択を解除します。データベースとデータベースリンクにディレクトリーデータを配布するカスタムディストリビューション機能が必要になるため、データベースとデータベースリンクに、接尾辞にデータベースリンクを設定するのが簡単になります。
- 左側のペインで、新しい接尾辞を右クリックし、ポップアップメニューから New Database Link を選択します。
- データベースリンク名を入力します。名前は、英数字、ダッシュ(-)、およびアンダースコア(_)の組み合わせになります。スペースなどの他の文字は使用できません。
- 認証に適切な方法にラジオボタンを設定します。認証方法は 4 つあります。
- simple は、サーバーが、暗号化なしで標準ポートで接続することを意味します。必要な情報は、サーバーがリモートサーバーに接続するユーザーのバインド DN およびパスワードです。
- サーバーの TLS/SSL 証明書は、ローカルサーバーの TLS 証明書を使用して、リモートサーバーに対して認証します。証明書は、証明書ベースの認証用にローカルサーバーにインストールされ、リモートサーバーに証明書マッピングが設定され、ローカルサーバーの証明書のサブジェクト DN を対応するユーザーエントリーにマッピングできるように、証明書マッピングを設定する必要があります。TLS および証明書マッピングの設定については、「TLS の有効化」 を参照してください。注記データベースリンクとリモートサーバーが TLS を使用して通信するよう設定されている場合は、操作要求を行うクライアントアプリケーションも TLS を使用して通信する必要があるわけではありません。クライアントは、通常のポートを使用してバインドできます。
- SASL/DIGEST-MD5 では、認証を行うためにバインド DN およびパスワードのみが必要になります。
- SASL/GSSAPI では、ローカルサーバーに Kerberos キータブ( 「KDC サーバーおよびキータブの概要」にあるように)があり、リモートサーバーにローカルサーバーのプリンシパルを実際のユーザーエントリーにマッピングする SASL マッピングが必要です。「コンソールからの SASL アイデンティティーマッピングの設定」
- Remote Server Information セクションで、ローカルサーバーがリモートサーバーへの接続に使用する接続タイプを選択します。以下の 3 つのオプションがあります。
- LDAP を使用します。これにより、標準の暗号化されていない接続が設定されます。
- TLS/SSL を使用します。これは、636 などのサーバーのセキュアな LDAPS ポートを介したセキュアな接続を使用します。この設定は、TLS/TLS を使用するために必要です。TLS を使用する場合は、リモートサーバーのポート番号がセキュアなポートに設定されていることを確認します。
- Start TLS を使用します。Start TLS を使用して、サーバーの標準ポートでセキュアな接続を確立します。
注記シンプルなパスワード認証 (「セキュアなバインドの要求」) にセキュアなバインドが必要な場合は、セキュアな接続で行われる場合を除き、チェーン操作は失敗します。セキュアな接続(TLS および Start TLS 接続または SASL 認証)の使用が推奨されます。 - Remote Server Information セクションで、リモートサーバーの名前(ホスト名、IPv4 アドレス、または IPv6 アドレス)とポート番号を入力します。フェイルオーバーサーバーの場合は、ホスト名とポート番号を入力し、ボタンをクリックします。フェイルオーバーサーバーはバックアップサーバーであるため、プライマリーリモートサーバーが失敗すると、データベースリンクはフェイルオーバーサーバー一覧の最初のサーバーに接続し、サーバーがアクセスされるまでリストを循環します。
新しいデータベースリンクは、データベースの代わりに接尾辞の下に一覧表示されます。

注記
コンソールは、正常にバインドするためにデータベースリンクが リモートサーバー に存在する必要がある情報のチェックリストを提供します。このチェックリストを表示するには、新しいデータベースリンクをクリックし、Authentication タブをクリックし ます。このチェックボックスは、リモートサーバー のチェックボックスにチェックを記入 します。
2.3.1.2. コマンドラインからのデータベースリンクの作成
- ldapmodify コマンドラインユーティリティーを使用して、新しいデータベースリンクを作成します。新しいインスタンスは、cn=chaining database,cn=plugins,cn=config エントリーに配置する必要があり ます。
# ldapmodify
-a
-D "cn=Directory Manager" -W -p 389 -h server.example.com -x - データベースリンクの設定情報を指定します。
dn: cn=examplelink,cn=chaining database,cn=plugins,cn=config changetype: add objectclass: top objectclass: extensibleObject objectclass: nsBackendInstance nsslapd-suffix: ou=people,dc=example,dc=com suffix being chained nsfarmserverurl: ldap://people.example.com:389/ LDAP URL to remote server nsMultiplexorBindDN: cn=proxy admin,cn=config bind DN nsMultiplexorCredentials: secret bind password cn: examplelink
注記
シンプルなパスワード認証 (「セキュアなバインドの要求」) にセキュアなバインドが必要な場合は、セキュアな接続で行われる場合を除き、チェーン操作は失敗します。セキュアな接続(TLS および Start TLS 接続または SASL 認証)の使用が推奨されます。
デフォルト設定属性は cn=default instance config,cn=chaining database,cn=plugins,cn=config エントリーに含まれます。これらの設定属性は、作成時にすべてのデータベースリンクに適用されます。デフォルト設定の変更は、新しいデータベースリンクにのみ影響します。既存のデータベースリンクのデフォルト設定属性を変更することはできません。
各データベースリンクには、データベースリンクエントリー自体(cn= database_link , cn=chaining database,cn=plugins,cn= config )で保存される独自の設定情報が含まれます。設定属性の詳細は、『Red Hat Directory Server の設定、コマンド、およびファイルリファレンス を参照してください』。
2.3.1.2.1. 接尾辞情報の提供
nsslapd-suffix
属性を使用して、データベースリンクが管理する接尾辞を定義します。たとえば、データベースリンクが会社のリモートサイトの人情報を参照する場合は、以下の接尾辞情報を入力します。
nsslapd-suffix: l=Zanzibar,ou=people,dc=example,dc=com
接尾辞情報は、cn=database_link, cn =chaining database,cn=plugins,cn=config エントリーに保存されます。
注記
データベースリンクの作成後、
nsslapd-nsslapd-suffix
属性の変更は、データベースリンクを含むサーバーが再起動しないと適用されません。
2.3.1.2.2. バインド認証情報の提供
クライアントアプリケーションからの要求がリモートサーバーにチェーンされるようにするには、クライアントアプリケーションに特別なバインド認証情報を指定できます。これにより、リモートサーバーでチェーン操作に必要なプロキシー認証権限が付与されます。バインド認証情報がないと、データベースリンクは anonymous としてリモートサーバーにバインドされます。
バインド認証情報を指定するには、以下の手順が必要です。
- リモートサーバーで以下を行います。
- データベースリンクの管理ユーザーを作成します。エントリーの追加に関する詳細は、「3章ディレクトリーエントリーの管理」を参照してください。
- データベースリンクによってチェーンされたサブツリーの手順 1 で作成した管理ユーザーのプロキシーアクセス権限を指定します。ACI の設定に関する詳細は、「18章アクセス制御の管理」を参照してください。
- データベースリンクを含むサーバーで ldapmodify を使用して、cn= database_link , cn=chaining database,cn= plugins,cn=configエントリーの
nsMultiplexorBindDN
属性にデータベースリンクのユーザー DN を提供します。警告nsMultiplexorBindDN
は、Directory Manager に含めることはできません。ldapmodify を使用して、cn= database_link , cn=chaining database,cn= plugins,cn=configエントリーのnsMultiplexorCredentials
属性に、データベースリンクのユーザーパスワードを提供します。
たとえば、クライアントアプリケーションは要求をサーバー A に送信します。サーバー A には、サーバー B のデータベースに要求をチェーンするデータベースリンクが含まれています。

サーバー A のデータベースリンクは、
nsMultiplexorBindDN
属性で定義されている特別なユーザーと nsMultiplexorCredentials
属性で定義されているユーザーパスワードを使用してサーバー B にバインドされます。この例では、サーバー A は以下のバインド認証情報を使用します。
nsMultiplexorBindDN: cn=proxy admin,cn=config nsMultiplexorCredentials: secret

サーバー B には
nsMultiplexorBindDN
に対応するユーザーエントリーが含まれ、このユーザーのプロキシー認証権限を設定する必要があります。プロキシー承認を正しく設定するには、プロキシー ACI をその他の ACI として設定します。
警告
ディレクトリーの制限された領域へのアクセス権限を付与しないようにチェーンを有効にする場合は、アクセス制御を慎重に検討します。たとえば、ブランチにデフォルトのプロキシー ACI が作成されると、データベースリンクを使用して接続するユーザーは、そのブランチの下にあるすべてのエントリーを表示できるようになります。ユーザーがすべてのサブツリーを表示する必要がない場合もあります。セキュリティーホールを回避するには、追加の ACI を作成して、サブツリーへのアクセスを制限します。
ACI の詳細は、「18章アクセス制御の管理」を参照してください。
注記
エントリーの作成または変更にクライアントアプリケーションでデータベースリンクを使用する場合、
creatorsName
属性および modifiersName
属性にはエントリーの実際の作成者または修正者が反映されません。これらの属性には、リモートデータサーバーでプロキシー認証権限が付与されている管理ユーザーの名前が含まれています。
2.3.1.2.3. LDAP URL の提供
データベースリンクが含まれるサーバーで、データベースリンクが LDAP URL を使用して接続するリモートサーバーを特定します。標準の LDAP URL 形式とは異なり、リモートサーバーの URL は接尾辞を指定しません。ldap://server:port の形式を取ります。ここで、サーバーは ホスト名、IPv4 アドレス、または IPv6 アドレスになります。
nsFarmServerURL
属性を使用したリモートサーバーの URL は、設定ファイルの cn=database_link, cn=chaining database,cn=plugins,cn=config エントリーに設定されます。
nsFarmServerURL: ldap://example.com:389/
注記
URL の最後で末尾のスラッシュ(/)を使用することを忘れないでください。
データベースリンクが TLS 経由で LDAP を使用してリモートサーバーに接続する場合、リモートサーバーの LDAP URL は URL の LDAP ではなくプロトコル LDAP を使用し、サーバーのセキュアなポートを参照します。 以下に例を示します。
nsFarmServerURL: ldaps://africa.example.com:636/
注記
TLS を介してチェーンするには、ローカル Directory Server とリモート Directory Server でTLSを有効にする必要があります。TLS の有効化に関する詳細は、「TLS の有効化」を参照してください。
データベースリンクとリモートサーバーが TLS を使用して通信するよう設定されている場合は、操作要求を行うクライアントアプリケーションも TLS を使用して通信する必要があるわけではありません。クライアントは、通常のポートを使用してバインドできます。
2.3.1.2.4. フェイルオーバーサーバーの一覧の提供
障害発生時に使用するサーバーには、追加の LDAP URL が存在する可能性があります。
nsFarmServerURL
属性に代替サーバーを追加し、空白で区切って追加します。
nsFarmServerURL: ldap://example.com us.example.com:389 africa.example.com:1000/
このサンプル LDAP URL では、データベースリンクは最初に標準ポートで example.com サーバーに問い合わせ、操作を処理します。応答しない場合、データベースリンクはポート 389 でサーバー us.example.com に問い合わせます。このサーバーが失敗した場合は、ポート 1000 で africa.example.com にお問い合わせください。
2.3.1.2.5. 異なるバインドメカニズムの使用
ローカルサーバーは、複数の異なる接続タイプと認証メカニズムを使用してリモートサーバーに接続できます。
ローカルサーバーがリモートサーバーに接続する方法は 3 つあります。
- 標準の LDAP ポートを使用する場合
- 専用の LDAPS ポートを使用する場合
- Start TLS(標準ポートでのセキュアな接続)の使用
注記
シンプルなパスワード認証 (「セキュアなバインドの要求」) にセキュアなバインドが必要な場合は、セキュアな接続で行われる場合を除き、チェーン操作は失敗します。セキュアな接続(TLS および Start TLS 接続または SASL 認証)の使用が推奨されます。
最終的に 2 つの接続設定があります。TLS オプションでは、サーバーの両方が TLS 経由の接続を実行および許可するように設定されますが、TLS を強制する別の設定属性はありません。
接続タイプは
nsUseStartTLS
属性で識別されます。これを有効にすると、サーバーは標準ポート で Start TLS 接続を開始します。これが オフ の場合、サーバーは nsFarmServerURL
属性のリモートサーバーに設定されたものに応じて LDAP ポートまたは LDAPS ポートを使用します。
たとえば、Start TLS を使用するには、以下を実行します。
nsUseStartTLS: on
たとえば、標準接続または TLS 接続を使用するには、以下を実行します。
nsUseStartTLS: off
ローカルサーバーがファームサーバーへの認証に使用できる 4 つの方法があります。
- empty.バインドメカニズムが設定されていない場合、サーバーは簡易認証を実行し、バインド情報を付与する
nsMultiplexorBindDN
属性およびnsMultiplexorCredentials
属性を必要とします。 - EXTERNAL。これは TLS 証明書を使用して、ファームサーバーをリモートサーバーに認証します。ファームサーバーをセキュアな URL (ldaps) に設定するか、
nsUseStartTLS
属性を on に設定する必要があります。 - DIGEST-MD5。これは、DIGEST-MD5 暗号化での SASL 認証を使用します。単純な認証と同様に、バインド情報を付与するには
nsMultiplexorBindDN
属性およびnsMultiplexorCredentials
属性が必要です。 - GSSAPI.SASL 上で Kerberos ベースの認証を使用します。ファームサーバーは Kerberos キータブで設定する必要があるため、リモートサーバーには、そのファームサーバーのバインド ID に対して定義された SASL マッピングが必要です。Kerberos キータブおよび SASL マッピングの設定は、「SASL Identity マッピングの設定」に記載されています。
注記
SASL 接続は、標準の接続または TLS 接続で確立できます。
以下に例を示します。
nsBindMechanism: EXTERNAL
注記
SASL を使用する場合は、SASL およびパスワードポリシーコンポーネントをチェーンするようにローカルサーバーを設定する必要もあります。「シャーシポリシーの設定」で説明されているように、データベースリンク設定のコンポーネントを追加します。以下に例を示します。
ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x dn: cn=config,cn=chaining database,cn=plugins,cn=config changetype: modify add: nsActiveChainingComponents nsActiveChainingComponents: cn=password policy,cn=components,cn=config - add: nsActiveChainingComponents nsActiveChainingComponents: cn=sasl,cn=components,cn=config ^D
2.3.1.2.6. データベースリンクの設定属性の概要
以下の表は、データベースリンクの設定に使用できる属性を表しています。これらの属性の一部は、先のセクションで説明されました。すべてのインスタンス属性は、cn=database_link, cn =chaining database,cn=plugins,cn=config エントリーで定義されます。
特定のデータベースリンクに定義されている値は、グローバル属性値よりも優先されます。
属性 | 値 |
---|---|
nsTransmittedControls [†] | リモートデータサーバーへデータベースリンクによって転送される LDAP コントロールの OID を指定します。 |
nsslapd-suffix | データベースリンクで管理される接尾辞。エントリーの作成後にこの属性への変更は、データベースリンクを含むサーバーが再起動しないと反映されません。 |
nsslapd-timelimit | データベースリンクの検索時間制限のデフォルト(秒単位)。デフォルト値は 3600 秒です。 |
nsslapd-sizelimit | エントリーの数で指定するデータベースリンクのデフォルトサイズ制限。デフォルト値は 2000 エントリーです。 |
nsFarmServerURL | データが含まれるリモートサーバー(またはファームサーバー)の LDAP URL を指定します。この属性には、空白で区切られた、フェイルオーバーのオプションサーバーを含めることができます。カスケード連鎖を使用する場合、この URL は別のデータベースリンクを参照できます。 |
nsUseStartTLS | Start TLS を使用して標準ポートでセキュアな接続を確立するかどうかを設定します。デフォルトは off で、単純な(標準)接続と TLS 接続の両方に使用されます。 |
nsBindMechanism | リモートサーバーの認証(バインド)に使用する認証方法を設定します。空の値を設定する場合は、単純なバインド(LDAP_SASL_SIMPLE)が使用されます。 |
nsMultiplexorBindDN | リモートサーバーと通信するために使用される管理エントリーの DN。属性名の multiplexor という用語は、データベースリンクが含まれ、リモートサーバーと通信するサーバーを意味します。このバインド DN は Directory Manager にすることはできません。この属性が指定されていない場合、データベースリンクは anonymous としてバインドします。 |
nsMultiplexorCredentials | 管理ユーザーのパスワード(プレーンテキストで指定されます)。パスワードが提供されない場合、ユーザーは anonymous としてバインドできることを意味します。パスワードは設定ファイルで暗号化されます。 |
nsCheckLocalACI | 高度な使用のために予約されます。ACI がデータベースリンクとリモートデータサーバーで評価されるかどうかを制御します。on または off の値を取ります。この属性への変更は、サーバーの再起動後にのみ行われます。デフォルト値は off です。 |
nsProxiedAuthorization | 高度な使用のために予約されます。プロキシー化された承認を無効にします。off を指定すると、プロキシー認証が無効になります。デフォルト値は on です。 |
nsActiveChainingComponents[†] | は、チェーンを使用するコンポーネントを一覧表示します。コンポーネントとは、サーバー内の機能的な単位です。データベースリンクインスタンスのこの属性の値は、グローバル設定属性の値を上書きします。特定のデータベースインスタンスでチェーンを無効にするには、値 none を使用します。デフォルトのポリシーはチェーンを許可しません。詳細は、「コンポーネントの動作の連鎖」 を参照してください。 |
nsReferralOnScopedSearch | スコープ指定の検索によって参照を返すかどうかを制御します。この属性は、スコープ指定された検索に対して応答された参照を返す方がより効率的であるため、ディレクトリーを最適化します。on または off の値を取ります。デフォルト値は off です。 |
nsHopLimit | あるデータベースリンクから別のデータベースリンクに要求を転送できる最大回数。デフォルト値は 10 です。 |
[†]
グローバル属性およびインスタンス属性の両方を指定できます。このグローバル設定属性は、cn =config,cn=chaining database,cn=plugins,cn=config エントリーにあります。グローバル属性は動的であるため、その属性への変更はディレクトリー内のデータベースリンクのすべてのインスタンスに対して自動的に有効になります。
|
2.3.1.2.7. データベースリンクの設定例
us.example.com ドメイン内のサーバーに、データベースのサブツリー l=Walla Walla,ou=people,dc=example,dc=com が含まれており、l=Zanzibar,ou=people,dc=example,dc=com サブツリーの操作要求を、africa.example.com ドメインの別のサーバーにチェーンする必要があります。

- ldapmodify を実行して、サーバー A にデータベースリンクを追加します。
# ldapmodify
-a
-D "cn=Directory Manager" -W -p 389 -h server.example.com -x - データベースリンクの設定情報を指定します。
dn: cn=DBLink1,cn=chaining database,cn=plugins,cn=config changetype: add objectclass: top objectclass: extensibleObject objectclass: nsBackendInstance nsslapd-suffix: c=africa,ou=people,dc=example,dc=com nsfarmserverurl: ldap://africa.example.com:389/ nsMultiplexorBindDN: cn=proxy admin,cn=config nsMultiplexorCredentials: secret cn: DBLink1 dn: cn="c=africa,ou=people,dc=example,dc=com",cn=mapping tree,cn=config objectclass: top objectclass: extensibleObject objectclass: nsMappingTree nsslapd-state: backend nsslapd-backend: DBLink1 nsslapd-parent-suffix: ou=people,dc=example,dc=com cn: c=africa,ou=people,dc=example,dc=com
最初のエントリーでは、nsslapd-suffix
属性には、サーバー A からチェーンするサーバー B の接尾辞が含まれます。nsFarmServerURL
属性には、サーバー B の LDAP URL が含まれます。2 番目のエントリーは新しい接尾辞を作成し、サーバーが新しいデータベースリンクに行われた要求をルーティングできるようにします。cn
属性には、データベースリンクのnsslapd-suffix
属性に指定された同じ接尾辞が含まれます。nsslapd-backend
属性には、データベースリンクの名前が含まれます。nsslapd-parent-suffix
属性は、この新しい接尾辞 ou=people,dc=example,dc=com の親を指定します。 - 以下のように、サーバー B で管理ユーザーを作成します。
dn: cn=proxy admin,cn=config objectclass: person objectclass: organizationalPerson objectclass: inetOrgPerson cn: proxy admin sn: proxy admin userPassword: secret description: Entry for use by database links
警告Directory Manager ユーザーは、リモートサーバーのプロキシー管理ユーザーとして使用しないでください。これにより、セキュリティーホール が作成されます。 - サーバー B の l=Zanzibar,ou=people,dc=example,dc=com エントリーに、以下のプロキシー承認 ACI を追加します。
aci: (targetattr = "*")(version 3.0; acl "Proxied authorization for database links"; allow (proxy) userdn = "ldap:///cn=proxy admin,cn=config";)
この ACI は、l=Zanzibar,ou=people,dc=example,dc=com サブツリー内に含まれるリモートサーバーに含まれるデータに、プロキシー admin ユーザーの読み取り専用アクセスのみを提供します。注記ユーザーがデータベースリンクにバインドすると、ユーザーのアイデンティティーがリモートサーバーに送信されます。アクセス制御は、常にリモートサーバーで評価されます。ユーザーがリモートサーバーにデータを変更または書き込みできるようにするには、リモートサーバーに正しいアクセス制御を設定します。チェーン操作のコンテキストでアクセス制御がどのように評価されるかについての詳細は、「データベースリンクおよびアクセス制御評価」を参照してください。