![]() |
Sun ONE Directory Server 管理ガイド |
この章では、Directory Server コンソールと ldapmodify および ldapdelete コマンド行ユーティリティを使用して、構造化エントリ、ユーザーエントリ、リフェラルの基本タイプなど、ディレクトリの内容を変更する方法について説明し ます。また、Directory Server 5.2 の新機能である、オプションの属性暗号化機能を使って属性を保存する方法についても説明します。
ディレクトリの導入を計画する段階で、ディレクトリに格納するデータ形式の特徴を把握しておく必要があります。エントリを作成したり、デフォルトのスキーマを変更する前に、『Sun ONE Directory Server Deployment Guide』の第 2 章「Designing and Accessing Directory Data」を参照してください。
この章は、LDAP スキーマ、オブジェクトクラス、およびオブジェクトクラスに定義される属性について、ある程度の基本知識が読者にあることを前提としています。 Directory Server のスキーマと、すべてのオブジェクトクラスと属性の定義に関する基本情報については、『Sun ONE Directory Server Reference Manual』の第 4 部「Directory Server Schema」を参照してください。
注 適切な ACI (アクセス制御命令) が定義されていない場合、ディレクトリは変更できません。詳細については、第 6 章「アクセス制御の管理」を参照してください。
この章は、次の節で構成されています。
設定エントリ
ディレクトリサーバーは、すべての設定情報を次のファイルに保存します。
ServerRoot/slapd-serverID/config/dse.ldif
このファイルの形式は LDIF (LDAP Data Interchange Format) で、LDAP エントリ、属性、およびその値がテキストとして表記されます。このファイルには、ディレクトリサーバーの次の設定が含まれます。
- cn=config エントリの属性と値
- cn=config の下のサブツリーに含まれるすべてのエントリと、その属性および属性値。多くの場合、エントリまたは属性の存在は重要です。
- ルートエントリ ("") と cn=monitor エントリのオブジェクトクラス、および ACI (アクセス制御命令)。これらのエントリのその他の属性は、サーバーによって生成されます。
Directory Server では、LDAP を通じてすべての設定を読み取り、書き込むことができます。デフォルトでは、ディレクトリの cn=config ブランチには、管理サーバーに定義されているディレクトリ管理者と、Directory Manager だけがアクセスできます。これらの管理ユーザーは、他のディレクトリエントリと同様に、設定エントリを表示、変更できます。
cn=config エントリの下のエントリは、通常のエントリのようなスケーラブルなデータベースとは異なる dse.ldif ファイルに格納されるため、cn=config の下にはエントリを作成しないでください。多くのエントリ、特に頻繁に更新されるエントリが cn=config の下に格納されている場合は、パフォーマンスが低下します。ただし、レプリケーションマネージャ (サプライヤバインド DN) などの特別なユーザーエントリを cn=config の下に格納しておくと、設定情報を集中管理できて便利です。
コンソールからの設定の変更
設定を変更するときは、Directory Server コンソールの最上位にある「設定」タブを使用することをお勧めします。このタブのパネルとダイアログには、タスクベースの制御が用意されており、迅速かつ 効率的な設定に役立ちます。また、コンソールのインタフェースは、設定の複雑さや相互依存の解決に役立ちます。
このマニュアルで、コンソールのインタフェースを使った設定手順を説明するときは、「コンソールからの〜」という見出しで示されます。これらの手順は、 「設定」タブのパネルとダイアログを使って特定の管理タスクを実行する方法を説明します。変更を適用するためにサーバーの再起動が必要な場合は、設定の保 存方法がインタフェース自体にも明示されます。
コマンド行からの設定の変更
cn=config サブツリーには LDAP を通じてアクセスできるので、ldapsearch、ldapmodify、ldapdelete コマンドを使用して、サーバーの設定を表示、変更することができます。cn=config エントリとその下のすべてのエントリは、「コマンド行からのエントリの管理」で説明する手順と LDIF 形式を使って変更できます。
ただし、これらのエントリの意味、および許容される属性と値の目的を理解しておくことは重要です。このマニュアルでは、「コマンド行からの〜」という見出 しがつけられた手順で、重要な注意点を説明します。これらの手順には、設定エントリの例や、設定できる属性が示されます。すべての設定エントリとその属 性、および属性に設定できる値の範囲について詳細は、『Sun ONE Directory Server Reference Manual』を参照してください。
コマンド行からの設定の変更は、コンソールを利用した変更ほど単純ではありません。しかし、一部の設定は、コンソールから変更することができず、コマンド 行からの操作だけを受け付けます。また、コマンド行からの手順を利用する場合は、コマンド行ツールを使ったスクリプトを記述することで、設定タスクを自動 化することができます。
dse.ldif ファイルの変更
dse.ldif ファイルには、サーバーの起動時または再起動時に読み取られ、適用される設定が含まれます。このファイルの LDIF コンテンツは、cn=config エントリとそのサブツリーです。ファイルの読み取りと書き込みが許可されているのは、インストール時に定義されたシステムユーザーだけです。
このファイルの内容を直接編集して設定を変更することは、エラーが生じる可能性が高くなるため、お勧めできません。次の点に注意が必要です。
- dse.ldif ファイルは起動時に一度だけ読み取られる読み取り専用ファイルです。このため、サーバー設定は、設定エントリのメモリ内の LDAP イメージに基づきます。したがって、起動後にファイルの内容を変更しても、次回の再起動時まで反映されません。
- コンソールまたはコマンド行から設定を変更すると、設定の LDAP イメージが変更されます。一部のディレクトリ機能は、呼び出されたときに現在の設定を読み取り、サーバーの再起動を必要としません。
- サーバーは、設定の LDAP イメージが変更されるたびに dse.ldif ファイルに書き込みを行います。一部のディレクトリ機能は、サーバーの起動時にその機能の設定だけを読み取り、変更が適用されるようにファイルに書き込みを行います。
既存の dse.ldif ファイルは dse.ldif.bak にコピーされ、既存の dse.ldif.bak ファイルは上書きされます。このため、dse.ldif ファイルに手動で変更を加えても、サーバーが再起動される前に LDAP によって設定が変更された場合は、手動による変更は失われます。
- ディレクトリの起動が成功すると、dse.ldif ファイルは毎回同じ場所の dse.ldif.startOK にコピーされます。誤った設定変更によってサーバーが起動できない場合は、このファイルから dse.ldif ファイルを復元する必要があります。
コンソールからのエントリの管理
Directory Server コンソールの「ディレクトリ」タブとエントリエディタダイアログを使用して、エントリの追加、変更、または削除を個別に行うことができます。複数のエントリに対して同時に処理を行う方法については、「コンソールからの一括処理」を参照してください。
Directory Server コンソールの起動およびユーザーインタフェースの使用方法については、「Directory Server コンソールの使用」を参照してください。
ディレクトリエントリの作成
Directory Server コンソールには、ディレクトリエントリの作成に使用できる、カスタムテンプレートがいくつか用意されています。それぞれのテンプレートは、オブジェクトクラスの種類に固有のカスタムエディタです。表 2-1 は、各カスタムエディタで使用されるオブジェクトクラスを示しています。
表 2-1 エントリテンプレートと対応するオブジェクトクラス
これらのカスタムエディタには、対応するオブジェクトクラスのすべての必須属性と、共通して使用される一部のオプション属性を表すフィールドが含まれています。いずれかのテンプレートを使用してエントリを作成する方法については、「カスタムエディタを使用したエントリの作成」を参照してください。その他のタイプのエントリを作成する方法については、「その他のタイプのエントリの作成」を参照してください。
カスタムエディタを使用したエントリの作成
- Directory Server コンソールの最上位にある「ディレクトリ」タブで、ディレクトリツリーを展開して、新しいエントリの親となるエントリを表示します。
- 親エントリをマウスの右ボタンでクリックし、「新規」メニューを選び、サブメニューの「ユーザー」、「グループ」、 「組織単位」、「ロール」、「サービスクラス」、「パスワードポリシー」、「リフェラル」の中からエントリのタイプを選択します。あるいは、親エントリを マウスの左ボタンでクリックして選択し、「オブジェクト」メニューから「新規」を選びます。選択したエントリタイプのカスタムエディタダイアログが表示さ れます。
カスタムエディタの左側の列には複数のタブがあり、各タブのフィールドが右側に表示されます。デフォルトでは、すべてのカスタムエディタは、「ユーザー」 タブまたは「一般」タブが選択された状態で表示されます。これらのタブには、新しいエントリの名前と説明を入力するためのフィールドが含まれています。
次の図はユーザーエントリのカスタムエディタを示しています。
図 2-1 Directory Server コンソール : ユーザーエントリのカスタムエディタ
![]()
- カスタムエディタで、設定する属性のフィールドに値を入力します。フィールド名の隣にアスタリスク (*) が表示されたすべての必須属性には値を入力する必要があります。その他のフィールドには何も入力しなくても問題ありません。複数の値を入力できるフィールドでは、Return で値を区切ります。
指定したエントリタイプのカスタムエディタの各フィールドについて、説明を表示するときは「ヘルプ」ボタンをクリックします。「ユーザー」エディタと「組織単位」エディタの「言語」タブの説明については、「言語サポートの属性の設定」を参照してください。
サービスエントリのグループ、ロール、クラスを作成する方法については、第 5 章「高度なエントリの管理」を参照してください。パスワードポリシーの作成については、第 7 章「ユーザーアカウントの管理」を参照してください。リフェラルの作成については、「リフェラルの設定」を参照してください。
- 「了解」をクリックして新しいエントリを作成し、カスタムエディタダイアログを閉じます。新しいエントリがディレクトリツリーに表示されます。
- カスタムエディタダイアログには、対応するオブジェクトクラスのすべてのオプション属性のフィールドが表示されるわけではありません。カスタムエディタに表示されないオプション属性を追加する方法については、「汎用エディタによるエントリの変更」を参照してください。
その他のタイプのエントリの作成
表 2-1 に示されるオブジェクトクラス以外のオブジェクトクラスのエントリを作成するには、次の手順を実行します。この手順を実行して、ディレクトリスキーマに定義したカスタムオブジェクトクラスのエントリを作成することもできます。
- Directory Server コンソールの最上位にある「ディレクトリ」タブで、ディレクトリツリーを展開して、新しいエントリの親となるエントリを表示します。
- 親エントリをマウスの右ボタンでクリックして「新規」を選び、サブメニューから「その他」を選択します。あるいは、親エントリをマウスの左ボタンでクリックして選択し、「オブジェクト」メニューから「新規」、「その他」を順に選択することもできます。
「新規オブジェクト」ダイアログが表示されます。
- 「新規オブジェクト」ダイアログに表示されるオブジェクトクラスのリストから、新しいエントリを定義するオブジェクトクラスを選び、「了解」をクリックします。
表 2-1 に示されるオブジェクトクラスを選択した場合は、対応するカスタムエディタが表示されます (「カスタムエディタを使用したエントリの作成」を参照)。それ以外の場合は、汎用エディタが表示されます。
- 新規エントリを作成するときは、汎用エディタには選択しているオブジェクトクラスの必須属性に対応するフィールドが 表示されます。すべての必須属性に値を設定する必要があります。一部のフィールドには、「新規」などの汎用のプレースホルダが表示されます。これは、作成 するエントリに適した値で置き換える必要があります。
- 選択しているオブジェクトクラスで利用できるその他の属性を定義するには、それを明示的に追加する必要があります。オプション属性の値を設定するには、次の手順を実行します。
- 「属性の追加」ボタンをクリックして、利用できる属性のリストを表示します。
- 「属性の追加」ダイアログで 1 つまたは複数の属性を選択し、「了解」をクリックします。
- 汎用エディタで、新しい属性の名前の隣に値を入力します。
このダイアログのその他のコントロールについて詳細は、「汎用エディタによるエントリの変更」を参照してください。
- デフォルトでは、必須属性の 1 つがネーミング属性として選択され、汎用エディタにエントリの DN として表示されます。ネーミング属性を変更するには、次の手順を実行します。
- 「変更」ボタンをクリックして、「ネーミング属性の変更」ダイアログを表示します。
- 属性のテーブルで、新しいエントリの DN として使用する 1 つまたは複数の属性の隣にあるチェックボックスを選択します。
- 「了解」をクリックして「ネーミング属性の変更」ダイアログを閉じます。汎用エディタの DN には、選択したネーミング属性による新しい DN が表示されます。
- 汎用エディタの「了解」をクリックして新しいエントリを保存します。
新しいエントリは、ディレクトリツリー内の親エントリの子として表示されます。
カスタムエディタによるエントリの変更
表 2-1 に示されるオブジェクトクラスでは、対応するカスタムエディタまたは汎用エディタを使ってエントリを編集できます。カスタムエディタを使う場合は、最も一 般的なフィールドに簡単にアクセスできます。また、このインタフェースを使えば、ロールやサービスクラスの定義などに関連する複雑な属性も簡単に設定でき ます。
汎用エディタでは、オブジェクトクラスの追加、許可されている属性の追加、複数値属性の処理など、エントリに対してより高度な設定を行えます。汎用エディタを使ってエントリを編集する方法については、「汎用エディタによるエントリの変更」を参照してください。
注 カスタムエディタは、表 2-1 に示されるオブジェクトクラスだけの編集に使用できます。たとえば、inetorgperson から継承するカスタムクラスなど、その他の構造化オブジェクトクラスを含むエントリの編集には、汎用エディタを使う必要があります。
リストに含まれるオブジェクトクラスのほかに auxiliary オブジェクトクラスを含むエントリは、カスタムエディタを使って管理できます。ただし、auxiliary クラスによって定義される属性はカスタムエディタには表示されません。auxiliary オブジェクトクラスの定義については、『Sun ONE Directory Server Reference Manual』の第 9 章にある「Object Classes」を参照してください。
カスタムエディタの起動
オブジェクトクラスが 表 2-1 に示されるエントリを編集するには、次の手順を実行します。
- Directory Server コンソールの最上位にある「ディレクトリ」タブでディレクトリツリーを展開し、編集するエントリを表示します。
- エントリをダブルクリックします。これ以外の方法でエントリのカスタムエディタを呼び出すこともできます。
- エントリをマウスの右ボタンでクリックし、「カスタムエディタで編集」を選択する
- エントリをマウスの左ボタンでクリックして選択し、「オブジェクト」メニューから「カスタムエディタで編集」を選択する
- エントリをマウスの左ボタンでクリックして選択し、キーボードショートカットの Control-P を使用する
エントリのオブジェクトクラスに対応するカスタムエディタが表示されます。たとえば、図 2-1 はユーザーエントリのカスタムエディタを示しています。
- デフォルトでは、すべてのカスタムエディタは、「ユーザー」タブまたは「一般」タブが選択された状態で表示されま す。これらのタブには、新しいエントリの名前と説明を入力するためのフィールドが含まれます。カスタムエディタで、変更する属性のフィールドに値を入力す るか、値を削除します。フィールド名の隣にアスタリスク (*) が表示された必須属性の値は、変更することはできますが、削除することはできません。その他のフィールドは何も入力しなくても問題ありません。複数の値を入力できるフィールドでは、Return で値を区切ります。
左側の列のその他のタブを選択し、対応するパネルで値を変更します。指定したエントリタイプのカスタムエディタの各フィールドについて、説明を表示するときは「ヘルプ」ボタンをクリックします。
「ユーザー」エディタと「組織単位」エディタの「言語」タブの説明については、「言語サポートの属性の設定」を参照してください。ユーザーエントリまたはグループエントリの「アカウント」タブのフィールドについては、第 7 章「ユーザーアカウントの管理」を参照してください。「NT ユーザー」タブと「Posix ユーザー」タブが、Directory Server Synchronization Service 用に用意されています。詳細については、Sun の担当者までお問い合わせください。
サービスエントリのグループ、ロール、クラスを変更する方法については、第 5 章「高度なエントリの管理」を参照してください。パスワードポリシーの変更については、第 7 章「ユーザーアカウントの管理」を参照してください。リフェラルの変更については、「リフェラルの設定」を参照してください。
- 「了解」をクリックしてエントリに加えた変更を保存し、カスタムエディタダイアログを閉じます。ユーザーエントリの共通名など、ネーミング属性を変更した場合は、ディレクトリツリーに変更が反映されます。
言語サポートの属性の設定
ユーザーエントリと組織単位エントリのカスタムエディタには、国際化ディレクトリ用に言語サポートが用意されています。
- 「カスタムエディタの起動」で説明している方法で、エントリのカスタムエディタを開きます。
- 左側の列で「言語」タブをクリックします。
- ユーザーエントリでは、ドロップダウンリストから適切な言語を選択できます。
- ユーザーエントリと組織単位エントリのどちらでも、指定のフィールドに、リストに示される任意の言語を使ってローカ ライズされた値を入力できます。「利用可能な言語」リストから言語を選択し、1 つまたは複数の値をその言語で入力します。ローカライズされた値を定義すると、その言語がリストに太字で表示されます。
一部の言語では、ローカライズされた値の発音表記のために、発音 (ふりがな) を入力するフィールドが表示されます。
- 「了解」をクリックしてエントリに加えた変更を保存し、カスタムエディタダイアログを閉じます。
汎用エディタによるエントリの変更
汎用エディタでは、コンソールへのログインに使用したバインド DN に応じて、エントリの読み取り可能なすべての属性を表示し、書き込み可能なすべての属性を編集できます。また、属性の追加と削除、複数値属性の設定、エン トリのオブジェクトクラスの管理も行えます。属性を追加するときは、バイナリ属性のサブタイプと言語サポートを定義できます。
汎用エディタの起動
ディレクトリ内の任意のエントリの汎用エディタを呼び出すには、次の手順を実行します。
- Directory Server コンソールの最上位にある「ディレクトリ」タブでディレクトリツリーを展開し、編集するエントリを表示します。
- エントリをマウスの右ボタンでクリックし、「汎用エディタで編集」を選択します。これ以外の方法でも汎用エディタを呼び出すことができます。
- エントリをマウスの左ボタンでクリックして選択し、「オブジェクト」メニューから「汎用エディタで編集」を選択します。
- オブジェクトクラスが 表 2-1 に示されていない場合は、エントリをダブルクリックします。カスタムエディタを持たないオブジェクトクラスの編集には、デフォルトで汎用エディタが使用されます。
次の図に示すように、汎用エディタが表示されます。
図 2-2 Directory Server コンソール : 汎用エディタ
![]()
汎用エディタでは、エントリの属性はアルファベット順に表示され、それぞれの値がテキストボックスに表示されます。読み取り専用属性やオペレーショナル属 性などのすべての属性が表示されます。右側のコントロールを使うことで、エディタの表示を変更したり、属性のリストを編集することができます。
- 必要に応じて、「表示」ボックスのコントロールを使って汎用エディタの表示を変更できます。
- 属性の名前をスキーマに最初に定義したとおりに表示するときは、「属性の名前を表示」オプションを選択します。属性リストの表示が更新され、属性が名前のアルファベット順に表示されます。
- スキーマに属性の別名が定義されている場合に、属性を別名順にリスト表示するときは、「属性の説明を表示」オプションを選択します。通常、別名は属性を明示的に説明します。属性リストの表示が更新され、属性が別名 (説明) のアルファベット順に表示されます。
- エントリのオブジェクトクラスのスキーマで明示的に許可されているすべての属性を表示するときは、「値が設定された属性のみを表示」チェックボックスの選択を解除します。エントリに extensibleObject オブジェクトクラスが含まれる場合、暗黙的にすべての属性が許可されますが、それは表示されません。デフォルトでは、値が定義されている属性だけが表示されます。
- 属性の下のエントリの識別名の表示と非表示を切り替えるときは、「DN を表示」チェックボックスを選択または選択解除します。
- 「再表示」ボタンをクリックすると、そのエントリの現在の内容に基づいて、すべての属性の値が更新されます。
警告
「再表示」ボタンをクリックすると、保存する前に汎用エディタで行なっていたすべての変更が直ちに削除されます。
属性値の設定、オブジェクトクラスの管理、エントリのネーミング属性の変更に関連するコントロールについては後述します。
属性値の変更
- 「汎用エディタの起動」で説明する方法で、汎用エディタを開きます。
- 属性のリストをスクロールし、変更する値をクリックします。
選択した属性が強調表示され、選択した値を含むテキストフィールドに編集カーソルが表示されます。
- マウスとキーボードを使ってテキストを編集し、適切な値を入力します。システムのクリップボードを使って、このフィールドのテキストのコピー、カット、ペーストを行うことができます。
テキストフィールドの内容を編集できないときは、その属性が読み取り専用であるか、値の変更に必要な書き込み権限がありません。
- このエントリのその他の値を編集するか、その他の変更を加え、「了解」をクリックして変更を保存し、汎用エディタを閉じます。
複数値属性の編集
ディレクトリスキーマで複数値として定義されている属性は、汎用エディタの 1 つのフィールドに複数の値を設定できます。詳細は、第 9 章「ディレクトリスキーマの拡張」を参照してください。
複数値属性に新しい値を追加するには、次の手順を実行します。
- 「汎用エディタの起動」で説明する方法で、汎用エディタを開きます。
- 属性のリストをスクロールし、属性またはその値をクリックします。選択した属性が強調表示され、「値の追加」ボタン が有効になります。このボタンが有効にならないときは、選択している属性が複数値として定義されていないか、読み取り専用である、または値の変更に必要な 書き込み権限がありません。
- 「値の追加」ボタンをクリックします。リスト内の属性名の隣に、新しい空白のテキストフィールドが表示されます。
- 新しいテキストフィールドに、この属性の新しい値を入力します。システムのクリップボードを使って、このフィールドのテキストのコピー、カット、ペーストを行うことができます。
- このエントリのその他の値を編集するか、その他の変更を加え、「了解」をクリックして変更を保存し、汎用エディタを閉じます。
複数値属性の値を削除するには、次の手順を実行します。
- 「汎用エディタの起動」で説明する方法で、汎用エディタを開きます。
- 属性のリストをスクロールし、削除する値をクリックします。選択した属性が強調表示され、「値の削除」ボタンが有効になります。このボタンが有効にならないときは、選択している属性が読み取り専用であるか、または値の変更に必要な書き込み権限がありません。
- 「値の削除」ボタンをクリックします。選択している値を含むテキストフィールドが削除されます。
- このエントリのその他の値を編集するか、その他の変更を加え、「了解」をクリックして変更を保存し、汎用エディタを閉じます。
属性の追加
エントリに属性を追加するには、その属性を必須属性または許可された属性として持つオブジェクトクラスが、対象のエントリに含まれていることが必要です。詳細は、「オブジェクトクラスの管理」および 第 9 章「ディレクトリスキーマの拡張」を参照してください。
エントリに属性を追加するには、次の手順を実行します。
- 「汎用エディタの起動」で説明する方法で、汎用エディタを開きます。
- 「値が設定された属性のみを表示」オプションが選択されていることを確認します。
- 「属性の追加」ボタンをクリックして、属性のリストを示すダイアログを表示します。このリストには、そのエントリに定義されているオブジェクトクラスで使用できる属性だけが表示されます。
- 「属性の追加」ダイアログで、追加する 1 つまたは複数の属性を選択します。
- 必要に応じて、ダイアログ上部のドロップダウンリストから次のいずれか、または両方のサブタイプを選択できます。
- 言語サブタイプ : 属性の値に適用される言語を指定するときは、このサブタイプを選択します。異なる言語で 1 つの属性を複数回追加し、ディレクトリにローカライゼーション情報を保存できます。
オプションとして、言語のほかに「ふりがな」サブタイプを選択し、この属性の値に指定の言語の値に対応する発音表記が含まれていることを示すことができます。
- バイナリサブタイプ : 属性にバイナリサブタイプを割り当てることによって、その属性値がバイナリデータであることを示します。バイナリサブタイプを選択しなくても属性にバイナ リデータを格納することができますが、これを選択することで、クライアントに複数の属性タイプが存在する可能性を示すことができます。
- 属性とオプションサブタイプの選択が完了したら、「了解」をクリックします。汎用エディタの属性のリストに、属性がアルファベット順に追加されます。
- 新しい属性の名前の隣にある空白のテキストフィールドに、この属性の新しい値を入力します。システムのクリップボードを使って、このフィールドのテキストのコピー、カット、ペーストを行うことができます。
- このエントリのその他の値を編集するか、その他の変更を加え、「了解」をクリックして変更を保存し、汎用エディタを閉じます。
属性の削除
属性とすべての値をエントリから削除するには、次の手順を実行します。
- 「汎用エディタの起動」で説明する方法で、汎用エディタを開きます。
- 属性のリストをスクロールし、削除する属性の名前をクリックします。選択した属性が強調表示され、「属性の削除」ボタンが有効になります。このボタンが有効にならないときは、選択している属性が読み取り専用であるか、値の変更に必要な書き込み権限がありません。
注 汎用エディタでは、この属性に定義されているオブジェクトクラスが必要とする属性も削除できます。必須オブジェクトクラスを含まないエントリを保存しよう とすると、サーバーはオブジェクトクラス違反を返します。すべてのオブジェクトクラスの必須属性がエントリに含まれることを確認してください。
- 「属性の削除」ボタンをクリックします。属性と、その属性のすべてのテキストフィールドが削除されます。
- このエントリのその他の値を編集するか、その他の変更を加え、「了解」をクリックして変更を保存し、汎用エディタを閉じます。
オブジェクトクラスの管理
エントリのオブジェクトクラスは、複数値の objectclass 属性によって定義されます。この属性を変更する場合に、定義されているオブジェクトクラスを管理できるように、汎用エディタには特別なダイアログがあります。
オブジェクトクラスをエントリに追加するには、次の手順を実行します。
- 「汎用エディタの起動」で説明する方法で、汎用エディタを開きます。
- 属性のリストをスクロールし、オブジェクトクラスまたは objectclass 属性を選択します。「値の追加」ボタンが有効になります。このボタンが有効にならないときは、このエントリのオブジェクトクラスの変更に必要な権限がありません。
- 「値の追加」ボタンをクリックします。
「オブジェクトクラスの追加」ダイアログが表示されます。このウィンドウには、エントリに追加できるオブジェクトクラスのリストが表示されます。
- このエントリに追加するオブジェクトクラスを 1 つまたは複数選択し、「了解」をクリックします。選択したオブジェクトクラスが、objectclass 属性の値のリストに表示されます。
- 新しいオブジェクトクラスが、エントリに含まれない属性を必要とする場合は、汎用エディタはそれを自動的に追加します。すべての必須属性に値を設定する必要があります。
- このエントリのその他の値を編集するか、その他の変更を加え、「了解」をクリックして変更を保存し、汎用エディタを閉じます。
エントリからオブジェクトクラスを削除するには、次の手順を実行します。
- 「汎用エディタの起動」で説明する方法で、汎用エディタを開きます。
- 属性のリストをスクロールし、削除する objectclass 属性の値をクリックします。選択しているオブジェクトクラスの削除がスキーマで許可され、このエントリのオブジェクトクラスを変更する権限がある場合は、「値の削除」ボタンが有効になります。
- 「値の削除」ボタンをクリックします。指定したオブジェクトクラスが削除されます。
オブジェクトクラスを削除すると、汎用エディタは残りのオブジェクトクラスが許可しないか、必要としないすべての属性を自動的に削除します。いずれかの ネーミング属性が削除されると、別のネーミング属性が自動的に選択されます。コンソールは、この変更を示すメッセージを表示します。
- このエントリのその他の値を編集するか、その他の変更を加え、「了解」をクリックして変更を保存し、汎用エディタを閉じます。
エントリ名の変更
ネーミング属性は、識別名 (DN) に表示されるエントリの属性値のペアです。ネーミング属性は、エントリの既存の属性から選択されます。ネーミング属性を変更してエントリの名前を変更するには、次の手順を実行します。
- 「汎用エディタの起動」で説明する方法で、汎用エディタを開きます。
「変更」ボタンの隣のテキストは、このエントリの現在のネーミング属性を示します。「DN を表示」チェックボックスが選択されている場合、これらの属性が属性値リストの下の DN に表示されます。
- 「変更」ボタンをクリックします。このボタンが有効にならないときは、このエントリの名前を変更する権限がありません。
「ネーミング属性の変更」ダイアログが表示されます。
- 属性のリストをスクロールし、このエントリの DN にする属性を選択します。属性の隣のチェックボックスを選択してネーミング属性に追加するか、選択解除して削除します。
同じ親の下のエントリの DN は、一意なものにする必要があります。このため、値または値の組み合わせが一意となるネーミング属性を選択する必要があります。DN が重複している場合、そのエントリを保存しようとすると、サーバーがこれを拒否します。たとえば、ユーザーを示すすべてのエントリでは、同じネーミング属 性を使用する必要があります。
- 「了解」をクリックして「ネーミング属性の変更」ダイアログを閉じます。汎用エディタには、このエントリの新しい DN が表示されます。
- このエントリのその他の値を編集するか、その他の変更を加え、「了解」をクリックして変更を保存し、汎用エディタを閉じます。
ディレクトリエントリの削除
Directory Server コンソールを使用してディレクトリエントリを削除するには、次の手順を実行します。
- Directory Server コンソールの最上位にある「ディレクトリ」タブでディレクトリツリーを展開し、削除するエントリを表示します。
サブツリーのルートノードを選択することで、ディレクトリのブランチ全体を削除することもできます。
- エントリをマウスの右ボタンでクリックし、「削除」を選択します。これ以外の方法でエントリを削除することもできます。
- エントリをマウスの左ボタンでクリックして選択し、「編集」メニューから「削除」を選択します。このエントリをディレクトリ内の別の場所にペーストするときは、「編集」メニューから「カット」を選択することもできます。
- エントリをマウスの左ボタンでクリックして選択し、キーボードショートカットの Control-D を使用します。
「表示」メニューから「レイアウト」オプションを選択して Directory Server コンソールの右側のパネルに子を表示しているときは、Control または Shift を押しながらクリックすることで、複数のエントリを選択できます。
- エントリまたはサブツリーとそのすべての内容を削除することを確認します。
選択したエントリがただちに削除されます。この処理を元に戻すことはできません。複数のエントリを削除した場合、削除したエントリの数を示すダイアログが表示されます。また、削除時にエラーが発生した場合は、エラーを示すダイアログが表示されます。
コンソールからの一括処理
LDIF ファイルを使用することで、複数エントリの追加、組み合わせ操作の実行、サフィックス全体のインポートを行うことができます。LDIF ファイルと Directory Server コンソールを使用してエントリを追加するには、次の手順を実行します。
- 前述の項に示される構文を使って LDIF ファイルにエントリまたは操作を定義します。エントリを追加するだけ、またはサフィックスを初期化するだけの処理では、changetype キーワードは必要ありません。エントリだけを LDIF ファイルに指定します。組み合わせ操作を実行するときは、すべての DN に changetype を続け、必要に応じて特定の処理または属性値を指定します。
- Directory Server コンソールを使用して、LDIF ファイルをインポートします。詳細は、「LDIF ファイルのインポート」を参照してください。
組み合わせ操作を実行するときは、サーバーがすべての LDIF 処理を実行できるように、「LDIF のインポート」ダイアログで「追加のみ」が選択されていないことを確認します。
コマンド行からのエントリの管理
コマンド行ユーティリティ ldapmodify および ldapdelete には、ディレクトリの内容を追加、編集、削除するための完全な機能が用意されています。これらを使用して、サーバーの設定エントリと、ユーザーエントリに 含まれるデータの両方を管理できます。これらのユーティリティは、1 つまたは複数のディレクトリの一括管理を実行するためのスクリプトの作成にも利用できます。
ldapmodify コマンドと ldapdelete コマンドは、このマニュアル全体の手順で使用されます。次に、これらの管理手順の実行に必要なすべての基本操作について説明します。機能の詳細、すべてのコマンド行オプション、これらのコマンドの戻り値については、『Sun ONE Directory Server Resource Kit Tools Reference』の第 4 章「ldapmodify」および第 5 章「ldapdelete」を参照してください。
コマンド行ユーティリティへの入力は、常に LDIF (LDAP Data Interchange Format) 形式で行います。この形式の入力は、コマンド行に直接指定できるだけでなく、入力ファイルからも行うことができます。LDIF は、エントリ、属性、およびその値をテキストで表現します。LDIF は、RFC 2849 (http://www.ietf.org/rfc/rfc2849.txt) に定義されている標準形式です。次の項では、LDIF 入力について説明し、それ以降の項では各種変更処理で使われる LDIF について説明します。
LDIF 入力の供給
コマンド行ユーティリティに LDIF 入力を行うときは、コマンド行入力、特殊文字、スキーマ検査、エントリの順序とサイズについて特別な注意を払う必要があります。
コマンド行での LDIF 入力の終了
ldapmodify ユーティリティと ldapdelete ユーティリティは、ファイルから読み取るのとまったく同様に、ユーザーがコマンドの後に入力した LDIF 文を読み取ります。入力が終了したら、ファイルの最後 (EOF) を示すエスケープシーケンスとしてシェルに認識される文字を入力します。
使用しているオペレーティングシステムに応じて、通常は次のいずれかが EOF エスケープシーケンスとなります。
- UNIX : ほとんどの場合 Control+D (^D)
- Windows NT : 通常は Control+Z の後にキャリッジリターン (^Z<Return>)
次の例は、UNIX システムでの ldapmodify コマンドの入力の終了を示しています。
prompt> ldapmodify -h host -p port -D bindDN -w password
dn: cn=Barry Nixon,ou=People,dc=example,dc=com
changetype: modify
delete: telephonenumber
^D
prompt>表記を単純かつわかりやすくするために、このマニュアルの例には EOF シーケンスは表示されません。
特殊文字の使い方
コマンド行にコマンドオプションを指定するときは、コマンド行インタープリタにとって特別な意味を持つエスケープ文字の入力が必要になることがあります。このような文字には、空白 ( )、アスタリスク (*)、円記号 (\) などが含まれます。たとえば、多くの DN には空白文字が含まれ、ほとんどの UNIX シェルでは値を二重引用符 ("") で囲む必要があります。
-D "cn=Barbara Jensen,ou=Product Development,dc=example,dc=com"
一重引用符または二重引用符のどちらを使用するかは、コマンド行インタープリタのタイプによって異なります。詳細は、オペレーティングシステムのマニュアルを参照してください。
さらに、コンマを含む DN を使用する場合は、円記号 (\) でコンマをエスケープする必要があります。次に例を示します。
-D "cn=Patricia Fuentes,ou=People,o=example.com Bolivia\,S.A."
ldapmodify コマンドの後の LDIF 文はシェルではなく、コマンドによって解釈されるため、特別な注意が必要ないことに注意してください。
スキーマ検査
エントリを追加または変更する場合、使用する属性は、エントリのオブジェクトクラスが必要とするか、許可する属性である必要があり、その属性には、定義されている構文に準拠する値が含まれている必要があります。
エントリを変更すると、Directory Server は変更される属性だけでなく、エントリ全体に対してスキーマ検査を行います。このため、エントリのいずれかのオブジェクトクラスまたは属性がスキーマに準拠していない場合、変更処理は失敗します。詳細は、「スキーマ検査」を参照してください。
LDIF エントリの順序
エントリを追加するための LDIF テキストのシーケンスでは、コマンド行に指定する場合も、ファイルに指定する場合も、親エントリを子の前に指定する必要があります。これにより、サーバー が LDIF テキストを処理するときに、子エントリの前に親エントリが作成されます。
たとえば、ディレクトリに存在しない People サブツリーにエントリを作成する場合、サブツリー内のエントリの前に People コンテナを表すエントリを指定します。
dn: dc=example,dc=com
dn: ou=People,dc=example,dc=com
...
People サブツリーのエントリ
...
dn: ou=Group,dc=example,dc=com
...
Group サブツリーのエントリ
...ldapmodify コマンド行ユーティリティを使ってディレクトリ内にエントリを作成することができますが、サフィックスまたはサブサフィックスのルートは、必要な設定エン トリと関連づける必要のある特別なエントリです。新しいルートサフィックスまたはサブサフィックス、およびそれに関連する設定エントリを追加する手順につ いては、「コマンド行からのサフィックスの作成」を参照してください。
大規模なエントリの管理
極端に大きな属性値を持つエントリを追加または変更するときは、それを受け入れることができるように、事前にサーバーの設定が必要になることがあります。 サーバーのオーバロードを防ぐために、デフォルトでは、クライアントは 2M バイトを超えるデータを送信できないように制限されています。
これを超えるエントリを追加するか、属性をこれ以上の値に変更しようとすると、サーバーはその処理を拒否し、直ちに接続を閉じます。たとえば、1 つのエントリの 1 つまたは複数の属性にマルチメディアコンテンツなどのバイナリデータが含まれると、この制限を超える可能性があります。
また、多数のメンバーを含む大規模なスタティックグループを定義するエントリも、この制限を超える可能性があります。ただし、パフォーマンスを考慮すると、このようなグループはお勧めできません。ディレクトリ構造の再設計を考慮する必要があります。詳細は、「グループの管理」を参照してください。
クライアントが送信するデータにサーバーが適用するサイズ制限を変更するには、次の手順を実行します。
- cn=config エントリの nsslapd-maxbersize 属性に新しい値を設定します。
- この処理をコンソールから行うには、管理者または Directory Manager としてログオンし、「汎用エディタによるエントリの変更」で説明する方法で、cn=config エントリを編集します。nsslapd-maxbersize 属性の値を、クライアントが一度に送信できる最大バイト数に設定します。
- この処理をコマンド行から行うには、次のコマンドを実行します。
ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn: cn=config
changetype: modify
replace: nsslapd-maxbersize
nsslapd-maxbersize: sizeLimitInBytes詳細については、『Sun ONE Directory Server Reference Manual』の第 4 章にある「nsslapd-maxbersize」を参照してください。
- 「Directory Server の起動と停止」で説明している手順を実行してサーバーを再起動します。
エラーの処理
コマンド行ツールは、LDIF 入力に含まれるすべてのエントリまたは変更を順番に処理します。最初のエラーが発生した場合のデフォルトの対応は、処理の停止です。エラーに関係なくすべての入力の処理を継続するときは、-c オプションを指定します。エラーの状態は、ツールの出力に表示されます。
上記注意点のほかに一般的なエラーには、次のようなものがあります。
- 実行する操作に必要なアクセス権がない
- ディレクトリにすでに存在する DN が指定されたエントリを追加しようとする
- 存在しない親の下にエントリを追加しようとする
エラー状態とそれを回避する方法について詳細は、『Sun ONE Directory Server Resource Kit Tools Reference』の第 4 章「ldapmodify」および第 5 章「ldapdelete」を参照してください。
ldapmodify によるエントリの追加
ldapmodify の -a オプションを使って、ディレクトリに 1 つまたは複数のエントリを追加できます。次の例では、ユーザーを含む構造化エントリを作成し、次にユーザーエントリを作成します。
ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
dn: ou=People,dc=example,dc=com
objectclass: top
objectclass: organizationalUnit
ou: People
description: Container for user entries
dn: uid=bjensen,ou=People,dc=example,dc=com
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetorgPerson
uid: bjensen
givenName: Barbara
sn: Jensen
cn: Babs Jensen
telephoneNumber: (408) 555-3922
facsimileTelephoneNumber: (408) 555-4000
mail: bjensen@example.com
userPassword: clearPassword-D オプションと -w オプションは、これらのエントリの作成に必要な権限を持つユーザーのバインド DN とパスワードを指定します。-a オプションは、LDIF に指定されているすべてのエントリが追加されることを示します。各エントリには DN と属性値が指定され、エントリとエントリの間には空白行が挿入されます。ldapmodify ユーティリティは、入力されるすべてのエントリを順番に作成し、エラーが発生した場合は、それをレポートします。
慣例により、エントリの LDIF には、次の順序で属性が指定されます。
- オブジェクトクラスのリスト
- 1 つまたは複数のネーミング属性。これは DN で使用される属性で、必須属性である必要はない
- すべてのオブジェクトクラスの必須属性
- エントリに指定する、許可されているその他の属性
userpassword 属性の値を入力するときは、パスワードをクリアテキストで指定します。サーバーはこの値を暗号化し、暗号化された値だけが格納されます。LDIF ファイルに表示されるクリアテキストのパスワードを保護するために、読み取りアクセス権を制限してください。
-a オプションを必要としない、別の形式の LDIF をコマンド行に指定することもできます。この形式の利点は、エントリを追加する文と、次の項で説明するエントリを変更する文を組み合わせて指定できることです。
ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn: ou=People,dc=example,dc=com
changetype: add
objectclass: top
objectclass: organizationalUnit
ou: People
description: Container for user entries
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: add
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetorgPerson
uid: bjensen
givenName: Barbara
sn: Jensen
cn: Barbara Jensen
telephoneNumber: (408) 555-3922
facsimileTelephoneNumber: (408) 555-4000
mail: bjensen@example.com
userPassword: clearPasswordchangetype: add キーワードは、指定の DN を持つエントリが、それ以後のすべての属性を持った状態で作成されることを示します。それ以外のすべてのオプションと LDIF の表記は同じです。
どちらの例でも、-f filename オプションを使うことで、端末からの入力の代わりにファイルから LDIF を読み取ることができます。LDIF ファイルには、-a オプションを使用した場合、端末からの入力と同じ形式で情報を指定する必要があります。
ldapmodify によるエントリの変更
既存のエントリの属性と属性値を追加、置換、または削除するときは、changetype: modify キーワードを使います。changetype: modify を指定する場合は、エントリの変更方法を示す、1 つまたは複数の変更操作も指定する必要があります。次の例には、3 種類の LDIF 変更操作が指定されています。
dn: entryDN
changetype: modify
add: attribute
attribute: value
...
-
replace: attribute
attribute: newValue
...
-
delete: attribute
[attribute: value]
...同じエントリに対する操作を区切るときはハイフン (-) を使い、異なるエントリに対する操作セットを区切るときは空白文字を使います。各操作の対象となる attribute: value のペアを複数指定して、それを一度に追加、置換、または削除することもできます。
属性値の追加
次の例は、同じ add LDIF 文を使って、既存の複数値属性と、まだ存在しない属性に値を追加する方法を示しています。
ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: modify
add: cn
cn: Babs Jensen
-
add: mobile
mobile: (408) 555-7844
mobile: (408) 555-7845次の場合は、処理が失敗し、エラーが返されることがあります。
- 指定した値がその属性にすでに存在する
- 値が、属性に定義されている構文に準拠していない
- エントリのオブジェクトクラスが、その属性タイプを必要としないか、許可しない
- 属性タイプが複数値ではなく、その属性にすでに値が存在する
バイナリ属性値の追加
バイナリ属性値は、attribute;binary サブタイプによって示されます。サブタイプは必要ありませんが、ユーザーとクライアントが属性の内容を知る上で便利です。ldapmodify コマンドで使用するどの LDIF 文でも、属性名に適切なサブタイプを追加できます。
バイナリ値を入力するには、LDIF テキストに直接入力するか、別のファイルから読み取ります。次の例は、ファイルから読み取る LDIF の構文を示しています。
ldapmodify -h host -p port -D "cn=Directory Manager" -w password
version: 1
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: modify
add: jpegphoto;binary
jpegphoto;binary: < file:///path/filename.jpg< の前後の空白文字は重要です。ここに示されるとおりに指定する必要があります。ファイル名の指定に < 構文を利用するには、LDIF 文を version: 1 という行から開始する必要があります。ldapmodify がこの文を処理するときに、このツールは、指定ファイルの内容全体から読み取った値を属性に設定します。
言語サブタイプを持つ属性の追加
属性の言語とふりがなのサブタイプは、ローカライズされた値を特定します。属性に対して言語サブタイプを指定すると、そのサブタイプが属性名に次のように追加されます。
attribute;lang-CC
ここで、attribute は既存の属性タイプを示し、CC は言語を特定する 2 文字の国コードを示します。オプションとして、言語サブタイプにふりがなのサブタイプを追加し、ローカライズされた値の発音表記を指定することもできます。この場合、属性名は次のようになります。
attribute;lang-CC;phonetic
サブタイプを持つ属性に対して処理を行うには、そのタイプを明示的に一致させる必要があります。たとえば、lang-ja の言語サブタイプを持つ属性値を変更する場合は、次の例に示すように、変更操作に lang-ja を含める必要があります。
ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: modify
replace: homePostalAddress;lang-ja
homePostalAddress;lang-fr: 34\, avenue des Champs-Elysées属性値の変更
次の例は、LDIF の replace 文を使って、単一値の属性と、複数値属性のすべての値を変更する方法を示しています。
ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: modify
replace: sn
sn: Morris
-
replace: cn
cn: Barbara Morris
cn: Babs Morrisreplace 文を使うときは、指定した属性のすべての現在値が削除され、指定した値が追加されます。
属性値の削除
次の例は、属性全体、または複数値属性の 1 つの値だけを削除する方法を示しています。
ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: modify
delete: facsimileTelephoneNumber
-
delete: cn
cn: Babs Morrisattribute: value のペアを指定せずに delete 構文を使用すると、属性のすべての値が削除されます。attribute: value のペアを指定した場合は、その値だけが削除されます。
複数値属性の 1 つの値の変更
ldapmodify コマンドを使って、複数値属性の 1 つの値を変更するには、次の例に示すように、2 段階の処理が必要です。
ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: modify
delete: mobile
mobile: (408) 555-7845
-
add: mobile
mobile: (408) 555-5487ldapmodify によるエントリ名の変更
エントリの名前を変更するときは、関連識別名 (RDN) を変更します。RDN は、エントリの DN に含まれる、いちばん左の attribute=value のペアです。この属性はネーミング属性と呼ばれ、エントリのすべての属性に同じ値が存在する必要があります。
エントリの名前を変更するときは、エントリが別のサブツリーに移動するような、DN の別の部分を変更することはできません。エントリを異なるブランチに移動するには、別のサブツリー内にそのエントリの属性を使用して新しいエントリを作成 してから、元のエントリを削除する必要があります。
また、親の RDN は子の DN で使われており、すべてのエントリに DN が含まれる必要があるため、子を持つエントリの名前を変更することはできません。ツリー全体を移動するには、新しい場所でそのツリーを再作成する必要があります。
LDIF 文を使ってエントリの名前を変更するには、changetype: modrdn キーワードを使います。次の例では、Barbara Morris の uid ネーミング属性の名前を変更します。
ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: modrdn
newrdn: uid=bmorris
deleteoldrdn: 1newrdn 行は、attribute=value 構文を使って新しいネーミング属性を指定します。deleteoldrdn 行は、同時に以前のネーミング属性を削除するかどうかを指定します (1 であれば削除、0 の場合は削除しない)。いずれの場合も、エントリに新しいネーミング属性が追加されます。
ldapdelete によるエントリの削除
ディレクトリからエントリを削除するときは、ldapdelete コマンド行ユーティリティを使います。このユーティリティは、ディレクトリサーバーにバインドし、DN によって指定される 1 つまたは複数のエントリを削除します。指定のエントリを削除する権限を持つバインド DN を指定する必要があります。
親エントリの名前を変更できないのと同じ理由で、子を持つエントリを削除することはできません。LDAP プロトコルでは、親を持たない子エントリが存在する状況を禁止しています。たとえば、組織単位に属するすべてのエントリを先に削除しない限り、組織単位エ ントリは削除できません。
警告
サフィックス o=NetscapeRoot は削除しないでください。Sun ONE 管理サーバーは、このサフィックスを使用してインストールした Sun ONE サーバーに関する情報を格納します。このサフィックスを削除すると、Directory Server を含むすべての Sun ONE サーバーの再インストールが必要になります。
次の例では、組織単位には 1 つのエントリしか含まれていないため、そのエントリを削除すれば、親エントリを削除できます。
ldapdelete -h host -p port -D "cn=Directory Manager" -w password
uid=bjensen,ou=People,dc=example,dc=com
ou=People,dc=example,dc=comldapmodify によるエントリの削除
changetype: delete キーワードを利用することで、ldapmodify ユーティリティを使ってエントリを削除できます。この場合も、前述の ldapdelete と同じ制限が適用されます。LDIF 構文を使ってエントリを削除する利点は、1 つの LDIF ファイルで複数の処理を組み合わせて実行できることです。
次の例は、前述の例と同じ削除処理を行います。
ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: delete
dn: ou=People,dc=example,dc=com
changetype: deleteリフェラルの設定
情報をローカルに取得できない場合に、どのサーバーに接続すべきかをクライアントアプリケーションに通知するには、リフェラルを使います。リフェラルと は、リモートサフィックスへのポインタ、つまり Directory Server が結果の代わりにクライアントへ返すエントリへのポインタです。クライアントは、リフェラルで指定されたリモートサーバー上で、再度、操作を実行する必要 があります。このリダイレクションは、次の 3 つの場合に行われます。
- クライアントアプリケーションがローカルサーバーに存在しないエントリを要求し、サーバーがデフォルトのリフェラルを返す場合
- サフィックス全体がメンテナンスまたはセキュリティ上の理由でオフラインになり、サーバーがサフィックスに定義されているリフェラルを返す場合。サフィックスレベルのリフェラルについては、「アクセス権とリフェラルの設定」を参照。クライアントが書き込み処理を要求する場合、サフィックスの読み取り専用レプリカも、マスターサーバーにリフェラルを返す
- スマートリフェラルと呼ばれるエントリを作成できる。クライアントがスマートリフェラルにアクセスすると、サーバーは定義されているリ フェラルを返す。Directory Server コンソールは、スマートリフェラルを自動的にたどるため、最上位の「ディレクトリ」タブでローカルエントリのように見える
いずれの場合も、リフェラルは LDAP URL であり、ホスト名、ポート番号、およびオプションとして別のサーバー上の DN を含みます。詳細については、『Sun ONE Directory Server Reference Manual』の付録 D「LDAP URL」を参照してください。ディレクトリの導入におけるリフェラルの使用方法については、『Sun ONE Directory Server Deployment Guide』を参照してください。
次に、ディレクトリのデフォルトリフェラルを定義する手順と、スマートリフェラルを定義する手順について説明します。
デフォルトリフェラルの設定
デフォルトリフェラルは、ディレクトリで管理されているサフィックスのどれにも含まれない DN に対して、操作を送信するクライアントアプリケーションに返されます。デフォルトリフェラルはディレクトリ内のすべてのサフィックスに適用されるため、グ ローバルリフェラルとも呼ばれます。サーバーは定義されているすべてのリフェラルを返しますが、返す順序は定義されていません。
コンソールからのデフォルトリフェラルの設定
- Directory Server コンソールの最上位の「設定」タブで、設定ツリーのルートノードを選択し、右側のパネルで「ネットワーク」タブを選択します。
- 「返すリフェラル」チェックボックスを選択し、テキストフィールドに LDAP URL を入力します。あるいは、「構成」をクリックして、指示に従って LDAP URL を定義します。次に、セキュリティ保護されているポートへの LDAP URL の例を示します。
ldaps://east.example.com:636/dc=example,dc=com
複数のリフェラル URL を入力するには、次のように空白で区切って、それぞれを引用符で囲みます。
"ldap://east.example.com:389/" "ldap://backup.example.com:389/"
- 「保存」をクリックして変更を保存します。変更は直ちに適用されます。
コマンド行からのデフォルトリフェラルの設定
ディレクトリ設定ファイルの cn=config エントリに 1 つまたは複数のデフォルトリフェラルを追加するか、交換するときは、ldapmodify コマンド行ユーティリティを使います。次に例を示します。
ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
dn: cn=config
changetype: modify
replace: nsslapd-referral
nsslapd-referral: ldap://east.example.com:389/
nsslapd-referral: ldap://backup.example.com:389/サーバーを再起動する必要はありません。
スマートリフェラルの作成
スマートリフェラルを使用して、ディレクトリエントリおよびディレクトリツリーを、特定の LDAP URL に割り当てることができます。スマートリフェラルを使用すると、クライアントアプリケーションに、特定のサーバーや特定のサーバーにある特定のエントリを 参照させることができます。
多くの場合、スマートリフェラルは別のサーバー上の同じ DN を持つ実際のエントリを指しています。ただし、同じサーバーまたは別のサーバーのあらゆるエントリに対するスマートリフェラルを定義できます。たとえば、次の DN を持つエントリを定義することができます。
uid=bjensen,ou=People,dc=example,dc=com
この場合、スマートリフェラルは east.example.com というサーバー上の次のエントリを指しています。
cn=Babs Jensen,ou=Sales,o=east,dc=example,dc=com
ディレクトリがスマートリフェラルを使用する方法は、RFC 2251 (http://www.ietf.org/rfc/rfc2251.txt) のセクション 4.1.11 に指定されている標準に準拠する必要があります。
コンソールからのスマートリフェラルの作成
- Directory Server コンソールの最上位にある「ディレクトリ」タブでディレクトリツリーを展開し、スマートリフェラルの親となるエントリを表示します。
- 親エントリをマウスの右ボタンでクリックし、「新規」メニューの「リフェラル」を選択します。あるいは、親エントリ をマウスの左ボタンでクリックして選択し、「オブジェクト」メニューから「新規」、「リフェラル」を順に選択することもできます。リフェラルエントリのカ スタムエディタダイアログが表示されます。
- エディタの「一般」タブで、リフェラルの名前を入力し、ドロップダウンリストからネーミング属性を選択します。名前は、選択したネーミング属性の値となります。必要に応じて、このリフェラルを説明する文字列も入力できます。
- エディタの「URL」タブで、「構成」ボタンをクリックしてスマートリフェラルの URL を定義します。表示されるダイアログに LDAP URL の要素を入力します。
URL の要素には、リフェラルエントリを保持するディレクトリサーバーのホスト名と LDAP ポート番号、およびサーバー上のターゲットエントリの DN が含まれています。デフォルトでは、ターゲット DN はスマートリフェラルエントリと同じ DN となります。しかし、ターゲット DN には、任意のサフィックス、サブツリー、または最下位エントリを指定できます。
- LDAP URL の構成ダイアログで「了解」をクリックします。新しいリフェラルのテキストボックスに URL が表示されます。
- 新しいリフェラルの隣にある「追加」をクリックして、リフェラルをリストに追加します。
- このエントリのリフェラルとして返される、複数の URL を定義できます。「リフェラルリスト」を作成および管理するには、「構成」、「追加」、「削除」、「変更」ボタンを使います。
- 「リフェラル認証」ボタンをクリックして、ダイアログを表示します。このダイアログでは、リモートサーバーを指すリ フェラルをたどるときに、Directory Server コンソールがバインドに使用する証明情報を設定できます。サーバーへのアクセス時に使われるバインド DN とパスワードを定義できます。同じサーバーを指すすべてのリフェラルは、同じ証明情報を使います。
- サーバー、および対応する証明情報のリストを管理するには、「追加」、「編集」、「削除」ボタンを使います。設定が完了したら、「了解」をクリックします。
- リフェラルのカスタムエディタで「了解」をクリックし、スマートリフェラルエントリを保存します。
コンソールのディレクトリツリーには、スマートリフェラルエントリのターゲットサブツリーまたはエントリが表示されます。スマートリフェラルエントリに黄 色の警告アイコンが表示されるときは、URL または証明情報が無効です。エントリをダブルクリックし、「リフェラルエラー」が表示されていたら「継続」をクリックして、「URL」または「リフェラル 認証」を変更してエラーを修正します。
コマンド行からのスマートリフェラルの作成
スマートリフェラルを作成するには、referral オブジェクトクラスと extensibleObject オブジェクトクラスを持つエントリを作成します。referral オブジェクトクラスは、LDAP URL を含むことになる ref 属性を許可します。extensibleObject オブジェクトクラスは、ターゲットエントリと一致させるために、任意のスキーマ属性をネーミング属性として使用することを許可します。
たとえば、uid=bjensen エントリの代わりにスマートリフェラルを返すには、次のエントリを定義します。
ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
dn: uid=bjensen,ou=People,dc=example,dc=com
objectclass: top
objectclass: extensibleObject
objectclass: referral
uid: bjensen
ref: ldap://east.example.com/cn=Babs%20Jensen,ou=Sales,
o=east,dc=example,dc=com
注 サーバーでは、LDAP URL で空白のあとに続く情報はすべて無視されます。このため、リフェラルとして使用する予定のある LDAP URL では、空白の代わりに %20 を使用する必要があります。
スマートリフェラルを定義すると、別のサーバー上の cn=Babs Jensen エントリで、uid=bjensen エントリの修正が実際に行われます。ldapmodify コマンドは、たとえば次のように、自動的にリフェラルをたどります。
ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: replace
replace: telephoneNumber
telephoneNumber: (408) 555-1234スマートリフェラルエントリを変更するには、たとえば次のように、ldapmodify の -M オプションを使う必要があります。
ldapmodify -M -h host -p port -D "cn=Directory Manager" -w password
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: replace
replace: ref
ref: ldap://east.example.com/cn=Babs%20Jensen,ou=Marketing,
o=east,dc=example,dc=com属性値の暗号化
属性の暗号化は Sun ONE Directory Server 5.2 の新機能で、ディレクトリに格納されている機密データを保護します。この機能を使用すると、エントリの特定の属性を暗号化された形式で格納するように指定 できます。これにより、データベースファイル、バックアップファイル、およびエクスポートされた LDIF ファイルに格納されているデータが読み取られることを防ぎます。
この機能を使用すると、属性値は Directory Server に格納される前に暗号化され、返される前に復号化されます。ACI などのメカニズムを使用して、アクセスが禁止されているデータに LDAP クライアントがアクセスすることを防ぎ、SSL を使用して通信を暗号化する必要があります。データセキュリティ一般と、属性暗号化のアーキテクチャの概要については、『Sun ONE Directory Server Deployment Guide』の第 7 章「Designing a Secure Directory」を参照してください。
属性の暗号化は、サーバー上で SSL が設定され有効になっている場合だけアクティブになります。ただし、デフォルトでは、どの属性も暗号化されません。属性の暗号化はサフィックスレベルで設 定されます。つまり、サフィックス内でその属性が現れるすべてのエントリについて、属性が暗号化されます。ディレクトリ全体で属性を暗号化するには、すべ てのサフィックスでその属性の暗号化を有効にする必要があります。
一部のエントリがネーミング属性として使っている属性を暗号化する場合、DN に表示される値は暗号化されず、エントリに格納される値が暗号化されます。
DIGEST-MD5 SASL 認証の場合と同様に、暗号化のために userPassword 属性を選択しても、パスワードがクリアテキストとして格納されている場合を除き、実質的なセキュリティ上の利点はありません。パスワードポリシーにパス ワードの暗号化メカニズムが定義されている場合、それをさらに暗号化してもセキュリティの強化にはならず、バインド操作のたびにパフォーマンスが低下する という結果になるだけです。
コンソールからの属性の暗号化設定
- Directory Server コンソールで「設定」タブを選択し、「データ」ノードを展開します。次に、属性値を暗号化する対象のサフィックスを選択します。右側のパネルで「属性の暗号化」タブを選択します。
このタブには、このサフィックスで現在暗号化されているすべての属性の名前と暗号化スキームを示すテーブルがあります。
- 属性の暗号化を有効にするには、次の手順を実行します。
- 「属性の追加」ボタンをクリックして、属性のリストを表示します。
- 暗号化する属性をリストから選択し、「了解」をクリックします。この属性が、テーブルの「属性名」列に追加されます。
- この属性の暗号化スキーマを、属性名の隣にあるドロップダウンリストから選択します。
- 属性が暗号化されないようにするには、テーブルから属性名を選択し、「属性の削除」ボタンをクリックします。
- 「保存」をクリックします。暗号化設定を変更する前にサフィックスの内容を LDIF ファイルにエクスポートするように促すメッセージが表示されます。
- 「サフィックスをエクスポート」をクリックして、エクスポートダイアログを開きます。エクスポートを行わない場合は、「継続」をクリックして、属性の暗号化設定を変更します。新しい設定が保存されます。
サフィックスをまだエクスポートしていないときは、内容を保存するために、この時点でエクスポートします。暗号化されている属性がサフィックスに含まれて る場合、次の手順でこの LDIF ファイルを使ってサフィックスを再初期化するのであれば、暗号化された状態のままこれを LDIF にエクスポートすることもできます。
LDIF ファイルを使用してサフィックスを初期化するように促すメッセージが表示されます。
- 「ただちにサフィックスを初期化」をクリックして初期化ダイアログを開き、ディレクトリに読み込む LDIF ファイルの名前を入力します。
サフィックスを再初期化すると、暗号化された値を復元できなくなるため、前の手順で、暗号化された属性をそのままサフィックスからエクスポートした場合 は、そのファイル使ってこの時点で初期化を行う必要があります。このファイルが読み込まれ、インデックスが作成されるときに、指定した属性の値はすべて暗 号化されます。
この時点でサフィックスの初期化を行わない場合は、「閉じる」をクリックします。データを後からインポートする手順については、「データのインポート」を参照してください。
- 1 つまたは複数の属性を暗号化するように設定を変更し、インポート処理の前にその属性が値を持っていた場合、暗号化されていない一部の値は、データベースキャッシュに判読可能な状態で残ることがあります。データベースキャッシュをクリアするには、次の手順を実行します。
- 「Directory Server の起動と停止」で説明する方法で、サーバーを停止します。
- root または管理者権限を持つユーザーとして、ファイルシステムの次の場所にあるデータベースキャッシュファイルを削除します。
ServerRoot/slapd-serverID/db/__db.*
- Directory Server を再起動します。サーバーは、新しいデータベースキャッシュファイルを自動的に作成します。
コマンド行からの属性の暗号化設定
- 属性の暗号化を設定するサフィックスに何らかのエントリが含まれるときは、最初にそのサフィックスの内容を LDIF ファイルにエクスポートします。詳細は、「データのエクスポート」を参照してください。
暗号化されている属性がサフィックスに含まれる場合、手順 5 でこの LDIF ファイルを使ってサフィックスを再初期化するのであれば、暗号化された状態のままこれを LDIF にエクスポートします。
- 属性の暗号化を有効にするときは、ldapmodify コマンドを使って次の設定エントリを追加します。
ldapmodify -a -h host -p port -D cn=Directory Manager -p password
dn: cn=attributeName, cn=encrypted attributes, cn=databaseName,
cn=ldbm database, cn=plugins, cn=config
objectclass: top
objectclass: dsAttributeEncryption
cn: attributeName
dsEncryptionAlgorithm: cipherNameここで、attributeName は暗号化する属性のタイプ名で、databaseName はサフィックスに対応するデータベースの識別名です。cipherName は次のいずれかです。
- ckm_des_cbc : DES ブロック暗号化方式
- ckm_des3_cbc : トリプル DES ブロック暗号化方式
- ckm_rc2_cbc : RC2 ブロック暗号化方式
- ckm_rc4 : RC4 ストリーム暗号化方式
- 属性が暗号化されないようにするには、ldapmodify コマンドを使って次の設定エントリを変更します。
ldapmodify -h host -p port -D cn=Directory Manager -p password
dn: cn=attributeName, cn=encrypted attributes, cn=databaseName,
cn=ldbm database, cn=plugins, cn=config
changetype: modify
replace: dsEncryptionAlgorithm
dsEncryptionAlgorithm: clearTextここで、attributeName は暗号化する属性のタイプ名で、databaseName はサフィックスに対応するデータベースの識別名です。
注 属性暗号化の設定エントリを削除しないでください。これは、サフィックスを次に初期化したときに自動的に削除されます。
- 1 つまたは複数の属性を暗号化するように設定を変更し、インポート処理の前にその属性が値を持っていた場合、暗号化されていない一部の値は、データベースキャッシュに判読可能な状態で残ることがあります。データベースキャッシュをクリアするには、次の手順を実行します。
- 「Directory Server の起動と停止」で説明する方法で、サーバーを停止します。
- root または管理者権限を持つユーザーとして、ファイルシステムの次の場所にあるデータベースキャッシュファイルを削除します。
ServerRoot/slapd-serverID/db/__db.*
- Directory Server を再起動します。サーバーは、新しいデータベースキャッシュファイルを自動的に作成します。再びキャッシュがいっぱいになるまで、このサフィックスでの操作のパフォーマンスは、若干の影響を受ける可能性があります。
- 「データのインポート」で説明する方法で、LDIF ファイルを使ってサフィックスを初期化します。手順 1 でサフィックスをエクスポートした場合は、サフィックスに最新の内容が含まれるように、そのファイルを使用します。サフィックスを再初期化すると、暗号化された値を復元できなくなるため、手順 1 で、暗号化された属性をそのままサフィックスからエクスポートした場合は、そのファイル使ってこの時点で初期化を行う必要があります。
このファイルが読み込まれ、対応するインデックスが作成されるときに、指定した属性の値はすべて暗号化されます。
参照整合性の管理
参照整合性は、関連するエントリ間の関係を保持するプラグインメカニズムです。グループのメンバーシップなど、一部のタイプの属性には別のエントリの DN が含まれています。参照整合性を利用することで、エントリを削除したときに、そのエントリの DN を含むすべての属性も削除できます。
たとえば、参照整合性が有効になっているときに、あるユーザーのエントリがディレクトリから削除されると、そのユーザーは、所属しているあらゆるグループ からも削除されます。参照整合性が無効な状態では、管理者はグループからユーザーを手動で削除する必要があります。Directory Server と、ユーザーとグループの管理をディレクトリに頼っているその他の Sun ONE 製品を統合する場合には、この機能がとても重要です。
参照整合性のしくみ
参照整合性検査プラグインが有効になっているときに削除操作や名前変更の操作を実行すると、指定された属性に対する整合性更新がただちに実行されます。ただし、デフォルトでは、参照整合性検査プラグインは無効になっています。
ディレクトリ内にあるユーザーエントリまたはグループエントリの削除や名前変更のたびに、その操作が次の参照整合性ログファイルに記録されます。
ServerRoot/slapd-serverID/logs/referint
更新間隔と呼ばれる指定した時間が経過すると、参照整合性が有効になっているすべての属性が検索され、検索結果のエントリと、ログファイル内に記録された 削除または変更されたエントリの DN が照合されます。特定のエントリが削除されたことがログファイルに記録されている場合は、対応する属性が削除されます。特定のエントリが変更されたことが ログファイルに記録されている場合は、対応する属性値が記録に従って変更されます。
参照整合性プラグインのデフォルトの設定が有効な場合は、削除操作や名前変更の操作を実行すると、member、uniquemember、owner、seeAlso、および nsroledn の各属性に対する整合性更新がただちに実行されます。ただし、参照整合性検査プラグインの動作は、次のような用途に合わせてユーザーが自由に設定できます。
- 参照整合性の更新を別のファイルに記録する
- 更新間隔を変更する。参照整合性の更新がシステムに与える影響を軽減するために、更新間隔を長くする
- 参照整合性を適用する属性を選択する。DN 値を含む属性を使用または定義するために、参照整合性プラグインを使ってそれを監視する
参照整合性の設定
Directory Server コンソールから参照整合性を有効化または無効化したり、プラグインを設定するときは、次の手順を実行します。
- Directory Server コンソールの最上位の「設定」タブで「プラグイン」ノードを展開し、「referential integrity postoperation」プラグインを選択します。
プラグインの設定が右側のパネルに表示されます。
- プラグインを有効にする場合は、「プラグインを有効に」チェックボックスを選択します。プラグインを無効にする場合は、このチェックボックスの選択を解除します。
- 更新間隔を秒単位で変更するときは、「引数 1」に値を設定します。一般的な値は次のとおりです。
- 0 : 処理の終了後、毎回直ちに更新する。変更処理のたびに、その直後に参照整合性検査を行うことは、サーバーのパフォーマンスに重大な影響を及ぼすため、注意する必要がある
- 90 : 90 秒ごとに更新する
- 3600 : 1 時間ごとに更新する
- 10,800 : 3 時間ごとに更新する
- 28,800 : 8 時間ごとに更新する
- 86,400 : 1 日に 1 回更新する
- 604,800 : 1 週間に 1 回更新する
- 使用する参照整合性ログファイルのパスを「引数 2」に設定します。
「引数 3」は使用されませんが、表示されている必要があります。
- 参照整合性が監視される属性は、「引数 4」の最初にリスト表示されます。このリストの管理、および独自の属性の追加には、「追加」ボタンと「削除」ボタンを使います。
注 最適なパフォーマンスを得るには、参照整合性プラグインによって更新される属性にもインデックスを設定する必要があります。詳細は、第 10 章「インデックスの管理」を参照してください。
- 「保存」をクリックして、変更内容を保存します。
- 変更を適用するには、Directory Server を再起動する必要があります。
レプリケーションにおける参照整合性の使用
レプリケーション環境では、次のようないくつかの参照整合性検査プラグインの使用に関する制限があります。
- マスターレプリカを含むすべてのサーバーで有効化する必要がある
- すべてのマスターで同じ設定で有効化する必要がある
- ハブまたはコンシューマレプリカだけを含むサーバーで有効化しても意味がない
レプリケーショントポロジで参照整合性プラグインを設定するには、次の手順を実行します。
- すべてのレプリカが設定され、すべてのレプリケーションアグリーメントが定義されていることを確認します。
- 参照整合性を維持する属性のセットを定義します。また、マスターサーバーに適用する更新間隔を決定します。
- 同じ属性セットと同じ更新間隔を使用して、すべてのマスターサーバーで参照整合性プラグインを有効化します。この手順については、「参照整合性の設定」を参照してください。
- すべてのコンシューマサーバー上で参照整合性検査プラグインが無効になっていることを確認します。