3.5. 一貫性のあるスキーマの概要
LDAP クライアントアプリケーションは、Directory Server 内の一貫したスキーマを使用してディレクトリーエントリーを検索します。一貫性のないスキーマでは、同じ情報を格納するために異なる属性または形式が使用されるため、ディレクトリーツリー内の情報を見つけることはできません。
スキーマの一貫性は、次の方法で維持できます。
- スキーマチェックを使用して、属性とオブジェクトクラスがスキーマルールに準拠していることを確認します。
- 構文検証を使用して、属性値が必要な属性構文と一致するようにします。
- 一貫したデータ形式を選択して適用できます。
3.5.1. スキーマチェック リンクのコピーリンクがクリップボードにコピーされました!
スキーマチェックにより、すべての新規または変更されたディレクトリーエントリーがスキーマルールに準拠していることが検証されます。デフォルトでは、ディレクトリーはスキーマチェックを有効にします。ルールに違反すると、ディレクトリーは要求された変更を拒否します。
スキーマチェックは、適切な属性が存在することを検証します。構文検証を使用すると、属性値が正しい構文にあることを確認できます。この機能を無効にしないでください。
スキーマチェックが有効になっている場合は、オブジェクトクラスによって定義されている必須属性と許可属性に注意する必要があります。エントリーのオブジェクトクラス定義に従って必須でもなく許可もされていない属性をエントリーに追加すると、Directory Server はオブジェクトクラス違反メッセージを返すことがあります。
たとえば、organizationalPerson オブジェクトクラスを使用するようにエントリーが定義されている場合には、エントリーに共通名 (cn) および姓 (sn) 属性が必要になります。これらの属性の値は、エントリーの作成時に設定する必要があります。さらに、エントリーでオプションとして使用できる属性の長いリストがあります (例: telephoneNumber、uid、streetAddress、userPassword などの記述的な属性)。
3.5.2. 構文の検証の概要 リンクのコピーリンクがクリップボードにコピーされました!
構文検証とは、Directory Server が属性の値がその属性に必要な構文と一致することを検証することを意味します。たとえば、構文検証では、新しい telephoneNumber 属性の値に有効な電話番号が含まれていることを確認できます。これは、デフォルトで有効になっています。
オプションで、構文検証の追加の設定を行い、構文違反に関する警告メッセージをログに記録してから、変更を拒否するか、変更プロセスを正常に実行できるようにします。
構文検証では、新しい属性値が追加された場合に LDAP 操作をチェックします。既存の属性や、レプリケーションなどのデータベース操作を通じて追加された属性は処理されません。既存の属性は、dsconf schema validate-syntax コマンドを使用して検証できます。
この機能は、必要な形式が定義されていないバイナリー構文と非標準構文を除くすべての属性構文を検証します。構文は RFC 4514 に対して検証されますが、DN はそれほど厳格ではない RFC 1779 または RFC 2253 に対して検証されます
厳密な DN 検証を設定できます。
3.5.2.1. Directory Server 操作の構文検証 リンクのコピーリンクがクリップボードにコピーされました!
構文検証は、エントリーの作成 (追加) または属性の編集 (変更) などの標準の LDAP 操作に適用できます。属性構文を検証すると、他の Directory Server 操作に影響する可能性があります。
データベース暗号化
LDAP 操作用に値がデータベースに書き込まれる前に属性を暗号化できます。つまり、属性構文が検証された後に暗号化が実行されます。暗号化されたデータベースをインポートおよびエクスポートできます。
エクスポートおよびインポート操作は、インポート操作の構文検証の実行を許可する --encrypted(dsctl) フラグを使用して実行する必要があります。
--encrypted flag (サポート対象外) を使用せずに暗号化されたデータベースをエクスポートすると、暗号化された値を含む LDIF が作成されます。この LDIF がインポートされると、暗号化された属性を検証できず、警告がログに記録され、インポートされたエントリーの属性検証がスキップされます。
同期
Windows Active Directory エントリーと Directory Server エントリーの属性に対して許可または強制される構文には違いがある場合があります。構文検証により、Directory Server エントリーに RFC 標準が適用されるため、Active Directory の値を同期することはできません。
レプリケーション
Directory Server 11.0 インスタンスが、変更をコンシューマーにレプリケートするサプライヤーである場合は、構文検証を使用できます。ただし、レプリケーションのサプライヤーが Directory Server の古いバージョンであるか、構文検証が無効になっているとします。その場合、Directory Server 11.0 コンシューマーはサプライヤーが許可する属性値を拒否できるため、11.0 コンシューマーでは構文検証を使用できません。
3.5.3. 一貫したデータ形式 リンクのコピーリンクがクリップボードにコピーされました!
LDAP スキーマを使用して、属性値を持つデータを配置できます。ただし、LDAP クライアントアプリケーションおよびディレクトリーユーザーに適した形式を選択して、一貫性を維持してディレクトリーツリーでデータを保存することが重要になります。
LDAP プロトコルと Directory Server を使用すると、RFC 2252 で指定されたデータ形式でデータを表現できます。たとえば、電話番号の正しい LDAP 形式は、2 つの ITU-T 推奨ドキュメントで定義されます。
-
ITU-T Recommendation E.123国内およびおよび国際電話番号の記法 -
ITU-T Recommendation E.163国際的な電話サービスの番号付けプラン(たとえば、米国の電話番号は+1 555 222 1717の形式になります。)
別の例として、postalAddress 属性には、行区切り文字としてドル記号 ($) を使用する複数行の文字列形式の属性値があります。適切にフォーマットされたディレクトリーエントリーは以下のように表示されます。
postalAddress: 1206 Directory Drive$Pleasant View, MN$34200
postalAddress: 1206 Directory Drive$Pleasant View, MN$34200
属性には、文字列、バイナリー入力、整数、その他の形式が必要です。属性のスキーマ定義で形式を設定できます。
3.5.4. レプリケートされたスキーマでの一貫性の維持について リンクのコピーリンクがクリップボードにコピーされました!
ディレクトリースキーマを編集すると、変更内容が changelog に記録されます。レプリケーション中に changelog をスキャンして、変更の有無と、変更がレプリケートされているかを確認します。レプリケートされたスキーマの一貫性を維持することで、エラーなしでレプリケーションを続行できます。
レプリケートされた環境で一貫したスキーマを維持するために、以下のポイントを考慮してください。
読み取り専用レプリカでスキーマを変更しないでください。
読み取り専用レプリカのスキーマを変更すると、スキーマに不整合が生じ、レプリケーションが失敗します。
異なる構文を使用する同じ名前の属性を 2 つ作成しないでください。
読み取り/書き込みレプリカに、サプライヤーレプリカの属性と同じ名前で、サプライヤーの属性とは異なる構文を持つ属性を作成すると、レプリケーションは失敗します。