Solaris for ISPs 管理ガイド

第 5 章 ディレクトリサービスの使用

Solaris for ISPs は Sun Directory Services を使用して、Sun Internet Administrator と各種サービスが使用するコンポーネントソフトウェア情報とログイン情報を保存します。この情報には、標準オブジェクトクラスと、Solaris for ISPs の諸機能をサポートするために新たに定義されたオブジェクトが含まれます。

この章では、Solaris for ISPs の情報ツリー構造、コマンド行からのツリーエントリの作成方法、および必要なアクセス制御について説明します。ディレクトリサービスのスキーマ拡張については、第 6 章「Solaris for ISPs のディレクトリサービスのスキーマ」を参照してください。

Sun Directory Services は、ディレクトリの使用と管理のために次のツールを提供します。

Sun Directory Services 関連のマニュアルとして、『Sun Directory Services 3.1 管理ガイド』と『Sun Directory Services 3.1 ユーザーズガイド』が提供されており、上記の各ツールの使用方法について詳しく説明しています。インストール用 CD-ROM には、これらのマニュアルが AnswerBook2 形式で格納されています。コマンド行プログラムに関するドキュメントは、マニュアルページのセクション 1 (/opt/SUNWconn/man) に入っています。

Solaris for ISPs のディレクトリ構造

Solaris for ISPs は特別な構造のディレクトリ情報ツリー (DIT) を必要とします。このディレクトリ構造は、Solaris for ISPs をインストールして構成するときに作成されます。Solaris for ISPs のディレクトリ構造は、2 つの命名コンテキスト、つまり OSI (Open Systems Interconnection) ツリーと DC (Domain Component) ツリーで構成されます。各ツリーの構成要素は並列に存在しています。この並列構造により、DNS 要求におけるドメイン名を DC ツリーを介して OSI ツリー内の実コンテンツエントリに簡単にマップできます。

OSI ツリー構造

OSI ツリーには Solaris for ISPs の実エントリ、つまり、コンポーネントサービス、各サービスの管理者、および各サービスの加入者のエントリが入っています。OSI ツリーの構造を図 5-1 に示します。

図 5-1 Solaris for ISPs の OSI ツリー

Graphic

OSI ツリーでは、sun.com というドメインのエントリが、o=sun、c=us という識別名で示されています。このエントリをルートドメインといい、Solaris for ISPs ユーザーの組織全体を表します。ルートドメイン名はディレクトリサービスのインストール時に指定します。

ルートドメインの下には、次の 4 つの organizationalUnit エントリがあります。この 4 つのエントリは必須エントリです。

People、Groups、Services の 3 つのノードは、ユーザーが定義する各ドメインエントリの下にも必ず存在します。Administrators ノードは、ルートドメインの下にだけ存在します。

各組織ユニットエントリの下に作成される一連のエントリ例を図 5-2 に示します。

図 5-2 OSI ツリーのエントリ

Graphic

図 5-2 における organizationalUnit エントリの eng は、ドメインエントリです。ドメインエントリは、この ISP の法人顧客です。あるいは、この ISP で仮想ドメインホストサービスを提供する顧客の場合もあります。各ドメインには必ず 2 つのエントリがあります。1 つはこの OSI ツリーのドメインエントリで、もう 1 つはドメイン名マップのための DC ツリーのエントリです。これらのエントリを作成する方法については、「ドメインエントリの作成」を参照してください。

ルートドメインと同様に、各ドメインにも必須の organizationalUnit エントリがあります。ルートの下に作成された各ドメインには、図 5-3 に示すように People、Groups、Services の 3 種類のエントリが必要です。

図 5-3 OSI ツリーのドメイン構造

Graphic

OSI ツリーにドメインエントリを作成するときは、その下に People、Groups、Services の 3 種類のエントリを作成する必要があります。このドメインのサービスを構成するときは、ou=Services の下にサービスエントリを作成します。このドメインの加入者情報は、ou=People の下に ispSubscriber エントリとして作成します。


注 -

現バージョンの Solaris for ISPs では、管理者エントリはルートドメインの下にだけ作成されます。管理者エントリは、GUI から管理者を指定したときに Sun Internet Administrator によって作成されます。


DC ツリー構造

DC (ドメインコンポーネント) ツリーは、sun.com のようなドメイン名形式を OSI ツリー内の対応する識別名にマップします。一般に DC ツリーは、図 5-4 に示すように、OSI ツリーより単純で平面的な構造になります。

図 5-4 Solaris for ISPs の DC ツリー

Graphic

図 5-4 では、dc=sun、dc=com というエントリが、OSI ツリー内の o=sun、c=us というエントリに対応します。また、eng ドメインは、eng.sun.com という DNS 形式に対応付けられます。

これら 2 つのツリーにドメインエントリを作成する方法については、「ドメインエントリの作成」を参照してください。

コマンド行からのディレクトリエントリの作成

一般的なディレクトリサービスのエントリ作成方法については、『Sun Directory Services 3.1 管理ガイド』の第 5 章「ディレクトリ情報の読み込みと保守」を参照してください。この節では、Solaris for ISPs が必要とする特別なエントリの作成方法について説明します。

Deja ツールを使用してディレクトリエントリを作成する方法については、Sun Internet Administrator のオンラインヘルプを参照してください。

ディレクトリエントリの作成: 一般的な手順

Sun Directory Services には、ディレクトリエントリの作成と変更のために次のコマンド行ユーティリティが用意されています。

上記のコマンド行ユーティリティを使用するには、スーパーユーザーのアクセス権が必要です。詳細は、リファレンスマニュアルページ (セクション 1) を参照してください。

ldapaddldapmodify への入力には、コマンド行またはテキストファイルを使用します。エントリ情報は複雑で長いものが多いので、以降の項に示す手順ではテキストファイルから入力する方法について説明します。

どの場合でも、次の手順に従ってエントリ情報を作成します。

  1. ディレクトリに作成する 1 つまたは複数のエントリを記述したファイルを作成します。ファイル形式の詳細は、ldif(4) のマニュアルページを参照してください。

  2. スーパーユーザーのアクセス権を取得し、エントリ情報が入ったファイルを指定して ldapadd を実行し、エントリを作成します。

ldapadd コマンドの実行形式を次に示します。


# ldapadd -D "BindDN" -w password -f file

BindDN はディレクトリにバインドする識別名 (DN) で、ディレクトリツリーの当該部分への書き込み権を持っている必要があります。password はバインドのためのパスワードです。また、file オプションでは、作成した ldif ファイル名を指定します。

ldif(4) ファイルの構造

コマンド行からエントリを追加するには、エントリ情報が入った ldif 形式のファイルを作成します。ldif 形式のファイルは、各ディレクトリエントリを空白行で区切った単純テキスト形式のファイルです。各ディレクトリエントリは、次の例のような構造を持ちます。


注 -

次の例では必須属性だけを示します。ほとんどのオブジェクトクラスには、この他にさまざまなオプション属性があります。オプション属性は、必要に応じて使用してください。


dn: ou=wcgate1,ou=eng,o=sun,c=US 
ou: wcgate1 
associateddomain: wcgate1.eng.sun.com  
objectclass: organizationalUnit 
objectclass: domainRelatedObject

各属性の意味は次のとおりです。

dn

作成するエントリの識別名を指定します。

ou

作成するエントリの名前属性です。よく使用する名前属性としては、commonNameorganizationalUnit (ou)、domainComponent (dc) があります。

associatedDomain

DC ツリー内の対応するエントリのドメイン名をドット区切り形式で指定します。OSI ツリーと DC ツリーの関係については、「Solaris for ISPs のディレクトリ構造」、ドメインのクロスリファレンスエントリを作成する方法については、「ドメインエントリの作成」を参照してください。

この場所には、属性:値のペアを一行ごとに必要な数だけ指定できます。

objectClass

エントリのオブジェクトクラス (種類) を指定します。objectClass は多数存在しますが、この例では 2 つだけ示します。

使用できるオブジェクトクラスと属性の詳細は、このマニュアルの第 6 章「Solaris for ISPs のディレクトリサービスのスキーマ」、および『Sun Directory Services 3.1 管理ガイド』の第 8 章「ディレクトリスキーマの構成」を参照してください。

ドメインエントリの作成

ディレクトリにドメインを作成するには、OSI ツリーと DC ツリーの両方にドメインエントリを 1 つずつ作成する必要があります。その後で、OSI ツリー内のドメインエントリの下に必要な organizationalUnit エントリを作成します。

eng.sun.com の下に wcgate1 というドメインを作成する手順を次に示します。

  1. OSI ツリー に作成するエントリのデータをテキストファイル (たとえば、domain.ldif) に入力します。

       dn: ou=wcgate1,ou=eng,o=sun,c=US 
    ou: wcgate1 
    associateddomain: wcgate1.eng.sun.com 
    objectclass: organizationalUnit 
    objectclass: domainRelatedObject 

    associatedDomain 属性に、DC ツリー内のエントリ名をドット区切り形式 (DNS 形式) で指定していることに注意してください。

  2. domain.ldif ファイルに、DC ツリーのエントリ情報を追加します。

       dn: dc=wcgate1,dc=eng,dc=sun,dc=com 
    dc: wcgate1
    associatedname: ou=wcgate1,ou=eng,o=sun,c=US 
    description: DNS-to-DN Mapping for wcgate1.eng.sun.com 
    labeleduri: ldap:///ou=wcgate1,ou=eng,o=sun,c=US??sub 
    objectclass: domain 
    objectclass: labeledURIObject

    associatedDomain 属性に、OSI ツリー内のエントリ識別名を指定していることに注意してください。また、RFC2255 に従って labeledURI 属性にも同じ情報を指定していることに注意してください。

  3. domain.ldif ファイルに、必須の組織ユニットエントリである Services の情報を追加します。

       dn: ou=Services,ou=wcgate1,ou=eng,o=sun,c=US 
    ou: Services 
    objectclass: organizationalUnit
  4. domain.ldif ファイルに、必須の組織ユニットエントリである People の情報を追加します。

       dn: ou=People,ou=wcgate1,ou=eng,o=sun,c=US 
    ou: People 
    objectclass: organizationalUnit 
  5. domain.ldif ファイルに、必須の組織ユニットエントリである Groups の情報を追加します。

       dn: ou=Groups,ou=wcgate1,ou=eng,o=sun,c=US 
    ou: Groups 
    objectclass: organizationalUnit
  6. domain.ldif ファイルを保存します。

  7. スーパーユーザーのアクセス権を取得し、次のコマンドを実行してディレクトリに各エントリを追加します。バインドの識別名とパスワードは、それぞれ適切な値に置き換えてください。


    # ldapadd -D "cn=admin,o=sun,c=US" -w password -f domain.ldif
    

ldapadd 実行後のディレクトリ構造は図 5-5 のようになります。

図 5-5 ドメインが追加されたディレクトリ構造

Graphic

加入者エントリの作成

Solaris for ISPs の加入者には次の種類があります。

以降の項では、単純なエントリを作成しそれに必要な情報を追加することで、複雑な加入者エントリを構築する手順を示します。

基本加入者エントリの作成

加入者エントリを作成するには、ドメインと People の組織ユニットエントリが存在していなければなりません。これらのエントリが存在していれば、テキストファイル (たとえば、people.ldif) を編集して、加入者エントリ情報を作成できます。基本加入者エントリは、ispSubscriber という 1 つのオブジェクトクラスと、小数の必須属性を持ちます。基本加入者を追加するためのテキストファイルは次のようになります。

dn: cn=Jane Doe (jldoe),ou=People,ou=wcgate1,ou=eng,o=sun,c=US 
commonname: Jane Doe (jldoe) 
sn: Doe
uid: jldoe 
userpassword: hidden 
objectclass: ispSubscriber 

各属性の意味は次のとおりです。

dn

加入者エントリの識別名を指定します。

commonName

加入者エントリ (ispSubscriber オブジェクトクラス) の名前属性です。Solaris for ISPs の加入者と管理者の commonName 属性は、Firstname Lastname (userid) の形式で指定します。

sn

加入者の姓です。

uid

加入者のログイン名です。

userPassword

パスワードです。パスワード情報を UNIX アカウントと共有する場合は、8 文字以内の文字列でなければなりません。パスワードは、ディレクトリサービス管理コンソールで指定した方法で暗号化されます。

objectClass:ispSubscriber

この加入者エントリのオブジェクトクラスの種類を指定します。

people.ldif ファイルには、属性値の異なるこのようなデータブロックを追加することにより、加入者エントリを必要なだけ作成できます。データ入力が終わったら、people.ldif を保存します。スーパーユーザーのアクセス権を取得し、次のコマンドを実行してディレクトリに加入者エントリを追加します。バインドの識別名とパスワードは、それぞれ適切な値に置き換えてください。


# ldapadd -D "cn=admin,o=sun,c=US" -w password -f people.ldif

FTP と Web の仮想ホスト情報の追加

Sun Internet FTP Server と Sun WebServer (SWS) で使用する仮想ホストを構成するには、次の 3 種類の属性を追加する必要があります。

gidnumber: 60001 
uidnumber: 60001 
ispcontentdirectory: jldoe

各属性の意味は次のとおりです。

gidNumber

FTP サービスと Web サービス用の仮想ホストドメインにおいて、このユーザーに指定する UNIX のグループ ID です。

uidNumber

FTP サービスと Web サービス用の仮想ホストドメインにおいて、このユーザーに指定する UNIX のユーザー ID です。

ispContentDirectory

コンテンツのパス (関連ドメインのドキュメントルートからの相対パスで指定される) で、ここにこの加入者のコンテンツファイルが存在します。


注 -

uidNumbergidNumber の 2 つの属性値を指定するには、仮想 FTP ドメインに共有アクセスできるように正しく設定された UNIX アカウントが必要です。仮想ホストの構成については、Sun Internet FTP Server のオンラインヘルプを参照してください。


people.ldif ファイルには、このようなデータブロックを追加することにより、加入者エントリを必要なだけ作成できます。データ入力が終わったら、 people.ldif を保存します。スーパーユーザーのアクセス権を取得し、次のコマンドを実行してディレクトリに加入者エントリを追加します。バインドの識別名とパスワードは、それぞれ適切な値に置き換えてください。


# ldapadd -D "cn=admin,o=sun,c=US" -w password -f people.ldif

既存エントリの属性を変更する場合は、ldapmodify を実行します。ldapmodify の実行方法については、ldapmodify(1) のマニュアルページを参照してください。

遠隔ユーザー情報の追加

RADIUS サーバーを介して ISP サービスにアクセスする加入者エントリを作成するには、エントリ情報に remoteUser というオブジェクトクラスといくつかの属性を追加する必要があります。


注 -

Solaris for ISPs のデフォルト構成では、ルートドメインが RADIUS 加入者エントリの検索ベースになっています。ルートドメイン以外を検索ベースにしたいときは、ディレクトリサービス管理コンソールを使用して RADIUS を構成し、検索ベースを変更してください。


ldif ファイルに次の行を追加します。

objectclass: remoteUser
authsuffixname: @ispxpress
grpcheckinfo: authSuffixName
grpcheckinfo: userPassword
authserviceprotocol: Framed-User
framedrouting: None
framedprotocol: PPP
grpreplyinfo: authServiceProtocol
grpreplyinfo: framedProtocol
grpreplyinfo: framedRouting 

各属性の意味は次のとおりです。

objectClass: remoteUser

RADIUS サーバーを使用してサービスにアクセスする加入者に必要なオブジェクトクラスです。

authsuffixname: @ispxpress

加入者のユーザー名に付加される接尾辞です。RADIUS サーバーは、他のドメイン内の同じ uid を持つエントリをこの接尾辞で区別します。ユーザーエントリごとに適切な接尾辞を入力します。

grpcheckinfo: authSuffixName

RADIUS サーバーが認証するエントリを選択する前に authSuffixName 属性を確認するようにします。

grpcheckinfo: userPassword

RADIUS サーバーが認証するエントリを選択する前に userPassword 属性を確認するようにします。

authserviceprotocol: Framed-User

デフォルトの RADIUS 構成を使用する場合は、この属性値をそのまま入力します。ネットワークアクセスサーバーの構成により正確な値が決まります。

framedrouting: None

デフォルトの RADIUS 構成を使用する場合は、この属性値をそのまま入力します。ネットワークアクセスサーバーの構成により正確な値が決まります。

framedprotocol: PPP

デフォルトの RADIUS 構成を使用する場合は、この属性値をそのまま入力します。ネットワークアクセスサーバーの構成により正確な値が決まります。

grpreplyinfo: authServiceProtocol

応答メッセージに authServiceProtocol 属性値を含めるように、RADIUS サーバーに指示します。

grpreplyinfo: framedProtocol

応答メッセージに framedProtocol 属性値を含めるように、RADIUS サーバーに指示します。

grpreplyinfo: framedRouting

応答メッセージに frameRouting 属性値を含めるように、RADIUS サーバーに指示します。

people.ldif ファイルには、このようなデータブロックを追加することにより、加入者エントリを必要なだけ作成できます。データ入力が終わったら、 people.ldif を保存します。スーパーユーザーのアクセス権を取得し、次のコマンドを実行してディレクトリに加入者エントリを追加します。バインドの識別名とパスワードは、それぞれ適切な値に置き換えてください。


# ldapadd -D "cn=admin,o=sun,c=US" -w password -f people.ldif

既存エントリの属性を変更する場合は、ldapmodify を実行します。ldapmodify の実行方法については、ldapmodify(1) のマニュアルページを参照してください。

完成した ldif ファイル

複雑な加入者情報を含む ldif ファイルは次のようになります。

dn: cn=Jane Doe (jldoe),ou=People,ou=wcgate1,ou=eng,o=sun,c=US 
commonname: Jane Doe (jldoe) 
sn: Doe
uid: jldoe 
userpassword: hidden 
gidnumber: 60001 
uidnumber: 60001 
objectclass: ispSubscriber 
objectclass: remoteUser
ispcontentdirectory: /home/users/jldoe
authsuffixname: @ispxpress
grpcheckinfo: authSuffixName
grpcheckinfo: userPassword
authserviceprotocol: Framed-User
framedrouting: None
framedprotocol: PPP
grpreplyinfo: authServiceProtocol
grpreplyinfo: framedProtocol
grpreplyinfo: framedRouting 

グループエントリの作成

グループエントリを作成する前に、次のエントリが作成されていなければなりません。

これらのエントリが存在していれば、テキストファイル (たとえば、groups.ldif) を編集して、グループ情報を作成できます。グループエントリを追加するためのテキストファイルは次のようになります。

dn: cn=isp-gp1,ou=Groups,ou=wcgate1,ou=eng,o=sun,c=US 
cn: isp-grp1
objectclass: groupOfNames
member: cn=Ed Anchor (anchor),ou=People,ou=wcgate1,ou=eng,o=sun,c=US
member: cn=April Shower (showers),ou=People,ou=wcgate1,ou=eng,o=sun,c=US
member: cn=Chili Jones (relleno),ou=People,ou=wcgate1,ou=eng,o=sun,c=US

各属性の意味は次のとおりです。

dn

作成するグループの識別名を指定します。

cn

グループエントリの関連識別名です。

objectClass

groupOfNames というオブジェクトクラスが、このエントリの種類を示します。

member

既存の加入者エントリの識別名を member 属性で指定します。

groups.ldif ファイルには、このようなデータブロックを追加することにより、グループエントリを必要なだけ作成できます。データ入力が終わったら、 groups.ldif を保存します。スーパーユーザーのアクセス権を取得し、次のコマンドを実行してディレクトリにグループを追加します。バインドの識別名とパスワードは、それぞれ適切な値に置き換えてください。


# ldapadd -D "cn=admin,o=sun,c=US" -w password -f groups.ldif

Solaris for ISPs のアクセス制御

Solaris for ISPs ではディレクトリサービスに対するアクセス制御を設定して、特定のソフトウェアに必要なアクセスを許可すると同時に不要なアクセスを拒否してセキュリティを強化します。アクセス制御の基本方針は、全構成要素に対して読み込み権を与え、書き込み権を制限することです。現在のアクセス制御設定を変更しないでください。変更した場合には、セキュリティリスクが発生したり、Solaris for ISPs が異常終了したりする可能性があります。

アクセス制御規則では順序が重要なことに注意してください。Sun Directory Services がアクセス権をチェックするときは、要求に対して最初に当てはまる規則が適用され、残りの規則は無視されます。そのため、ファイル内の規則の順序は変更しないでください。新しい規則を作成する場合は、誤って既存の Solaris for ISPs 情報に適用されたり、既存のアクセス制御規則を無効にすることがないように注意してください。


注 -

ディレクトリに管理者としてバインドすると、アクセス制御チェックは行われません。


通常、Solaris for ISPs に固有の情報は、Solaris for ISPs のスキーマ拡張で定義されたオブジェクトクラスをサポートするエントリに入っています。このようなオブジェクトクラスは、名前が「isp」で始まります。アクセス構成ファイル内の規則のうち、このようなオブジェクトクラス (または属性) を含むものは Solaris for ISPs の規則であり、変更するとその影響を受けます。アクセス制御規則は、 /etc/opt/SUNWconn/ldap/current/dsserv.acl.conf で定義されています。

Sun Directory Services のアクセス制御については、『Sun Directory Services 3.1 管理ガイド』の第 1 章「ディレクトリの概念」と第 4 章「ディレクトリサーバーの構成」を参照してください。

以降の項では、Solaris for ISPs のアクセス制御により保証されている通常の動作について説明します。「アクセス権を持つ」ということは、エントリの識別名とパスワードでディレクトリにバインドすることにより必要なアクセス権が取得できることを意味します。

Sun Internet Administrator の諸機能を有効にするための規則

Sun Internet Administrator が正しく機能するためには、次のアクセス権が必要です。

サービスに必要なアクセス権を許可する規則

Solaris for ISPs の各種サービスは、各サービスエントリに保存されている構成情報 (サブドメインと仮想ドメイン内の Services ノードの下にある情報) に対する読み取り権と書き込み権を必要とします。そのため、DIT の特定部分 (サービスエントリ自体も含む) にエントリを作成または変更するための書き込み権と情報を持ちます。

必要なユーザーアクセスを許可する規則

ユーザー (加入者と管理者) は各自のパスワード属性に対する書き込み権を持ちますが、パスワード以外の部分は変更できません。Sun Internet Administrator に対して管理アクセス権を持つ管理者はグローバルアクセス権を持つため、あらゆるデータを変更する権限を持ちます。