1.4 スキーマ

スキーマは、ツリー内で作成できるオブジェクトのタイプ(ユーザ、プリンタ、グループなど)、およびオブジェクトの作成時に使用する必須情報とオプション情報を定義します。各オブジェクトには、そのオブジェクトタイプのスキーマクラスが定義されています。

製品に元から付属しているスキーマは、ベーススキーマといいます。新しいクラスや新しい属性の追加など、なんらかの形でベーススキーマが変更されると、そのスキーマは拡張スキーマと見なされます。

スキーマを必ずしも拡張する必要はありませんが、拡張することも可能です。iManagerのスキーマ役割を使用すれば、運用条件に合わせてスキーマを拡張できます。たとえば、組織の従業員たちに特殊な履き物が必要で、従業員の靴のサイズを把握しておく必要があるとします。この場合は、Shoe Sizeという新しい属性を作成し、この属性を補助クラスに追加することができます。その後、その補助クラスを使用して、ユーザオブジェクトを必要に応じて拡張できます。補助クラスの作成の詳細については、補助クラスを作成するを参照してください。

eDirectoryスキーマの操作の詳細については、セクション 5.0, スキーマの管理を参照してください。

1.4.1 スキーマ管理

NetIQ iManagerのスキーマ役割を通して、ツリーに対するスーパバイザ権を持っているユーザがそのツリーのスキーマをカスタマイズすることができます。スキーマ役割、およびその関連タスクは、iManagerの役割およびタスクページに表示されています。

スキーマ役割の使用目的

  • スキーマ内のすべてのクラスおよび属性の一覧を表示する。

  • 構文やフラグなどの属性についての情報を表示する。

  • 既存のスキーマにクラスまたは属性を追加して、スキーマを拡張する。

  • 名前を付けてから、属性、フラグ、追加できるコンテナ、および属性の継承元のペアレントクラスを指定して、クラスを作成する。

  • 名前を付けてから、構文およびフラグを指定して、属性を作成する。

  • 既存のクラスにオプションの属性を追加する。

  • 使用されていない、または必要のなくなったクラスや属性を削除する。

1.4.2 スキーマクラス、属性、および構文

Classes (クラス)

クラスとは、ディレクトリオブジェクトのテンプレートのようなものです。ディレクトリオブジェクトとは、データを挿入されたクラスです。つまり、次のように表すことができます。

CLASS + DATA = DIRECTORY OBJECT

各クラスは、クラス名、継承クラス(そのクラスがクラス階層の最上位である場合を除く)、クラスフラグ、および属性のグループを持っています。クラスは、ディレクトリオブジェクト(ユーザ、プリンタ、キュー、サーバなど)と同じように命名されますが、単なる構造であり内容はありません。

継承クラスとは、他のオブジェクトクラスを定義するときの開始点となるクラスです。継承クラスの属性はすべて、クラス階層でそのクラスの下位に位置するクラスへ継承されます。

クラス階層は、あるクラスがどのようにペアレントクラスと関連付けられているかを示します。クラス階層により、類似したクラスが関連付けられ、属性の継承が可能になります。また、クラスを格納できる有効なコンテナのタイプも定義されます。

クラスの作成時には、クラス階層と追加属性を使用して各クラスをカスタマイズできます。継承クラスを指定することによって、階層内の上位のクラスからその属性とフラグのすべてを新しいクラスに継承できます。さらに、継承された属性クラスに追加する属性を1つまたは複数選択することによって、新しいクラスをカスタマイズできます。追加の属性は、必須属性、ネーミング属性、またはオプション属性として選択できます。

オプションの属性を追加して、既存のクラスを変更することもできます。

属性

属性とは、eDirectoryデータベース内のデータフィールドのことです。たとえば、クラスが記入用紙のようなものだとすれば、属性は記入用紙における1つの記入欄です。属性の作成時に、名前(姓や社員番号など)と、構文タイプ(文字列や数字など)が指定されます。その後、その属性はスキーママネージャの属性リストで使用できるようになります。

メモ:eDirectoryでは、レプリケーションの問題のため、ストリーム属性タイプ以外の属性に60KBまたは30,000文字を超える値を含めることができません。ユーザやアプリケーションが、その制限を超える文字列またはバイナリ属性の値を設定すると、eDirectoryは値が長すぎることを示す-649エラーを返します。

構文

構文にはいくつかの選択可能なオプションがあります。これらの構文オプションは、各属性で入力するデータのタイプを指定するために使用されます。構文は属性の作成時にのみ指定できます。後から構文を変更することはできません。利用可能な構文は次のようなものです。

  • Back Link (バックリンク)

    オブジェクトを参照する他のサーバの追跡に使用されます。また、eDirectoryの内部管理目的で使用されます。

  • ブール

    TRUE(1)またはFALSE(0)の値をとる属性に使用されます。この構文タイプには、単一の値のフラグが設定されます。

  • Case Exact String (大/小文字一致文字列)

    比較演算で大文字/小文字が区別されるUnicode文字列を値としてとる属性に使用されます。2つの「大文字小文字を区別する文字列」は、長さが等しく、対応する文字(大文字/小文字の区別を含む)が同一の場合に一致とみなされます。

  • Case Ignore List (大/小文字無視リスト)

    比較演算で大文字/小文字が区別されないUnicode文字列の順序列を値としてとる属性に使用されます。2つの「大文字小文字を無視するリスト」は、文字列の数が等しく、対応するすべての文字列が同じ場合(つまり、長さと対応する文字が同一の場合)に一致とみなされます。

  • Case Ignore String (大/小文字無視文字列)

    比較演算で大文字/小文字が区別されないUnicode文字列を値としてとる属性に使用されます。2つの「大文字小文字を無視する文字列」は、長さが等しく、対応する文字があらゆる面で(ただし、大文字/小文字の区別を除く)同一の場合に一致とみなされます。

  • クラス名

    オブジェクトクラスの名前を値としてとる属性に使用されます。2つのクラス名は、長さが等しく、対応する文字があらゆる面で(ただし、大文字/小文字の区別を除く)同一の場合に一致とみなされます。

  • カウンタ

    増分変更された符号付き整数を値としてとる属性に使用されます。カウンタによって定義された属性は、単一の値の属性です。カウンタは、この構文の属性に値が追加されると足し算で合計に追加され、この構文の属性から値が削除されると引き算で合計から差し引かれるという点で、整数とは異なります。

  • 識別名

    eDirectoryツリー内のオブジェクト名を値としてとる属性に使用されます。DN(識別名)では大文字/小文字が区別されませんが、ネーミング属性の1つでは大文字/小文字が区別されます。

  • EMail Address (電子メールアドレス)

    バイナリ情報の文字列を値としてとる属性に使用されます。eDirectoryは、この構文の内容の内部構造については想定しません。

  • Fax番号

    国際電話番号と、推奨T.20に従って形式設定されたオプションのビット文字列の格納を規定するE.123標準に準拠した文字列を指定します。2つのFax番号値は、長さが等しく、対応する文字列が同一(ただし、比較処理で無視されるスペースとハイフンを除く)の場合に、一致とみなされます。

  • [保持]

    符号付き整数の値を持つアカウント数量の属性に使用されます。この構文は、アカウント数量(トランザクションが完了するまでの間、サブジェクトのクレジット限度に対して暫定的に保持される金額)を表します。保持量は、カウンタ構文と同じように扱われ、新しい値がベース合計に加算されるか、ベース合計から減算されます。計算された保持量が0になると、保持レコードは削除されます。

  • 整数

    符号付き数値として表される属性に使用されます。2つの整数値は、値が同一である場合に一致とみなされます。順序付けの比較では、符号付き整数ルールが使用されます。

  • 整数64

    64ビット整数値として表される属性に使用されます。整数64属性はMicrosoft Large Integer Syntaxをサポートし、large-integer値や1970年より前または2038年より後の日付を格納するために使用できます。

    メモ:eDirectoryでは、内部タイムスタンプ用に既存の構文と32ビット値を使用します。

  • Interval

    符号付き整数を値としてとり、時間の間隔を表す属性に使用されます。間隔構文では、整数構文と同じ表現が使用されます。Interval (間隔)値は時間間隔の秒数です。

  • Net Address (ネットアドレス)

    サーバ環境でのネットワーク層アドレスを表します。このアドレスは、バイナリ形式です。2つのネットアドレスは、各アドレスのタイプ、長さ、および値が一致する場合に、一致とみなされます。

  • Numeric String (数値文字列)

    CCITT X.208定義で数値文字列として定義されている数値整数を値としてとる属性に使用されます。2つの数値文字列は、長さが等しく、対応する文字が同一の場合に一致とみなされます。数値文字列文字セットにおいて有効な文字は、数字(0~9)およびスペースのみです。

  • Object ACL (オブジェクトACL)

    アクセス制御リスト(ACL)エントリを表す値をとる属性に使用されます。Object ACL (オブジェクトACL)値は、オブジェクトまたは属性のいずれかを保護できます。

  • Octet List (オクテットリスト)

    バイナリ情報またはオクテット文字列の順序付き文字列シーケンスを表します。オクテットリストは、保存済みリストのサブセットである場合に、保存済みリストと一致するとみなされます。2つのオクテットリストは、長さが等しく、対応するビット列(オクテット)が同一の場合に一致とみなされます。

  • Octet String (オクテット文字列)

    eDirectoryによって解釈されないバイナリ情報の文字列を値としてとる属性に使用されます。これらのオクテット文字列は、非Unicode文字列です。2つのオクテット文字列は、長さが等しく、対応するビット列(オクテット)が同一の場合に一致とみなされます。

  • パス

    ファイルシステムパスを表す属性であり、サーバ上でファイルを見つけるために必要なすべての情報が格納されます。2つのパスは、長さが等しく、対応する文字(大文字/小文字の区別を含む)が同一の場合に、一致とみなされます。

  • Postal Address (住所)

    住所を表すUnicode文字列を値としてとる属性に使用されます。通常、住所の属性値は、勧告F.401に基づいてMHS Unformatted Postal O/R Address Specificationバージョン1から選択された属性で構成されます。この値は6行(各行は30文字)に制限されます(郵送先国名を含む)。2つの住所は、文字列の数が等しく、対応するすべての文字列が同じ場合(つまり、長さと対応する文字が同一の場合)に一致とみなされます。

  • 印刷可能文字列

    CCITT X.208に定義されている印刷可能文字列を値としてとる属性に使用されます。印刷可能文字セットは、次のものから構成されます。

    • 英大文字および英小文字

    • 数字(0~9)

    • スペース

    • アポストロフィ (’)

    • 左カッコおよび右カッコ( )

    • プラス記号(+)

    • カンマ(,)

    • ハイフン(-)

    • ピリオド(.)

    • スラッシュ(/)

    • コロン(:)

    • 等号(=)

    • 疑問符(?)

    2つの印刷可能文字列は長さが等しく、対応する文字が同一の場合に一致とみなされます。大文字/小文字は区別されます。

  • Replica Pointer (レプリカポインタ)

    パーティションレプリカを表す値をとる属性に使用されます。eDirectoryツリーのパーティションでは、複数のサーバにレプリカを置くことができます。この構文は、次の6つのコンポーネントで構成されます。

    • サーバ名

    • レプリカタイプ(マスタ、セカンダリ、読み込み専用、サブオーディネートリファレンス)

    • レプリカ番号

    • レプリカルートID

    • アドレスの数

    • アドレスレコード

  • Stream (ストリーム)

    任意のバイナリ情報を表します。ストリーム構文を使用すると、ファイルサーバ上のファイルからeDirectory属性を作成できます。この構文は、ログインスクリプトやその他のストリーム属性で使用されます。ストリームファイルに格納されているデータは、いかなる種類の構文強制も受けません。この構文は単に任意のデータであり、個別のアプリケーションで作成、定義および使用されます。

  • Telephone Number (電話番号)

    電話番号を値としてとる属性に使用されます。2つの電話番号は、長さが等しく、対応する文字列が同一(ただし、比較処理で無視されるスペースとハイフンを除く)の場合に、一致とみなされます。

  • 時刻

    符号なし整数を値としてとり、秒単位の時間を表す属性に使用されます。

  • Timestamp (タイムスタンプ)

    特定のイベントが発生した時刻を示す値をとる属性に使用されます。特定のイベントが発生すると、eDirectoryサーバによってタイムスタンプ値が生成され、そのイベントに関連付けられます。各タイムスタンプ値は、eDirectoryパーティション内で固有です。これにより、同一パーティションのレプリカを保持しているすべてのサーバで発生したイベントを1つにまとめて順序付けできます。

  • Typed Name (タイプ付きの名前)

    オブジェクトに関連付けられたレベルおよび間隔を表す値をとる属性に使用されます。この構文は、eDirectoryオブジェクトを指定し、次の2つの数値を当該オブジェクトにアタッチします。

    • 優先番号を示す属性レベル

    • イベント間の秒数、または参照の頻度を表す間隔

  • 不明

    スキーマから削除されている属性定義をもつ属性に使用されます。この構文は、バイナリ情報の文字列を表します。

1.4.3 必須属性およびオプション属性について

オブジェクトにはどれも、オブジェクトのタイプに合わせて定義されたスキーマクラスがあります。クラスとは、意味のある方法で組織された属性のグループを指します。これらの属性の一部は必須で、一部はオプションです。

必須属性

必須属性とは、オブジェクトの作成時に指定する必要がある属性です。たとえば、社員番号が必須属性であるユーザクラスで新しいユーザを作成する場合、社員番号を入力せずに新しいユーザオブジェクトを作成することはできません。

オプション属性

オプション属性とは、必要に応じて指定できる属性を指します。たとえば、ニックネームがオプション属性となっているユーザクラスで新しいユーザオブジェクトを作成するとします。この場合、この属性が入力されてもされなくてもユーザオブジェクトは作成できます。属性を入力するかどうかは、新しいユーザにニックネームが付けられているかどうかに左右されます。

例外的にオプション属性が命名に使用される場合がありますが、その場合は属性が必須になります。

1.4.4 スキーマのサンプル

図 1-12は、スキーマの一部の例で、基本のスキーマに類似しているかもしれません。この図は、組織クラスについての情報を表しています。この画面に表示されているほとんどの情報は、クラスが作成されたときに指定されたものです。オプションの属性のいくつかは後に追加されました。

ベーススキーマオブジェクトの拡張アイコン このアイコンは、ベーススキーマの拡張であるすべてのクラスと属性に割り当てられます。

図 1-12 iManagerのクラス情報ページ

1.4.5 スキーマを設計する

最初にスキーマの設計を行うと、長期的に見た場合、時間と労力を節約できます。ベーススキーマを表示して、それが実際の必要条件に見合うか、あるいは変更が必要かを判断できます。変更が必要な場合は、スキーママネージャを使用してスキーマを拡張します。詳細については、「スキーマの拡張」と「スキーマの表示」を参照してください。