LDAP の設定と構成

ディレクトリサーバーへのデータの読み込み

ディレクトリサーバーに Unix Crypt 形式でパスワードを格納していない場合、ディレクトリサーバーを構成してパスワードを格納します。Unix Crypt 形式のパスワードの設定方法についての詳細は、iPlanet のマニュアルを参照してください。

ACI を設定する
  1. ツリーのトップエントリの ACI (アクセス制御情報) を設定します。この ACI は所有者が自分のエントリを変更する権限を制御します。たとえば、デフォルトの ACI ではユーザーが自分のホームディレクトリを変更できますが、次の例のように変更した ACI では自分のホームディレクトリを変更できません。各自の環境に合わせて ACI を設定してください。

    次に示すようなツリーのトップエントリである「Allow self entry modification」ACI を、


    aci=(targetattr = "*")(version 3.0; acl "Allow self entry modification";
    allow (write)userdn = "ldap:///self";)

    次のように変更します。


    aci=(targetattr!="cn || uid || uidNumber || gidNumber || homeDirectory
    || shadowLastChange || shadowMin || shadowMax || shadowWarning ||
    shadowInactive || shadowExpire || shadowFlag || memberUid")
    (version 3.0; acl "Allow self entry modification"; allow
    (write) userdn = "ldap:///self"; )

    注 –

    ユーザーが変更すべきでない属性 (uid など) の変更許可を与えないでください。それを許可すると、uid を 0 に設定することによって、ユーザーがスーパーユーザーになることができるようになってしまいます。


ネームコンテナのエントリを追加する

ネームコンテナの一覧は、ディレクトリ情報ツリーを参照してください。


注 –

次のコンテナエントリは、NIS ドメインで使用した nisDomain の例に基づいています。実際に使用するときは、これらのコンテナエントリを各自の環境に合わせて変更してください。


  1. ドメインエントリを追加します。


    dn: dc=mkt,dc=mainstore,dc=com
    dc: mkt
    associatedDomain: mkt.mainstore.com
    objectClass: top
    objectClass: domain
    objectClass: domainRelatedObject
    objectclass: nisDomainObject
    nisdomain: mkt.mainstore.com
  2. ネームコンテナのエントリを追加します。


    dn: ou=people,dc=mkt,dc=mainstore,dc=com
    ou: people
    objectClass: top
    objectClass: organizationalUnit
    
    dn: ou=Group,dc=mkt,dc=mainstore,dc=com
    ou: Group
    objectClass: top
    objectClass: organizationalUnit
    
    dn: ou=rpc,dc=mkt,dc=mainstore,dc=com
    ou: rpc
    objectClass: top
    objectClass: organizationalUnit
    
    dn: ou=protocols,dc=mkt,dc=mainstore,dc=com
    ou: protocols
    objectClass: top
    objectClass: organizationalUnit
    
    dn: ou=networks,dc=mkt,dc=mainstore,dc=com
    ou: networks
    objectClass: top
    objectClass: organizationalUnit
    
    dn: ou=netgroup,dc=mkt,dc=mainstore,dc=com
    ou: netgroup
    objectClass: top
    objectClass: organizationalUnit
    
    dn: ou=aliases,dc=mkt,dc=mainstore,dc=com
    ou: aliases
    objectClass: top
    objectClass: organizationalUnit
    
    dn: ou=Hosts,dc=mkt,dc=mainstore,dc=com
    ou: Hosts
    objectClass: top
    objectClass: organizationalUnit
    
    dn: ou=services,dc=mkt,dc=mainstore,dc=com
    ou: services
    objectClass: top
    objectClass: organizationalUnit
    
    dn: ou=Ethers,dc=mkt,dc=mainstore,dc=com
    ou: Ethers
    objectClass: top
    objectClass: organizationalUnit
    
    dn: ou=profile,dc=mkt,dc=mainstore,dc=com
    ou: profile
    objectClass: top
    objectClass: organizationalUnit
    
    dn: nismapname=auto_home,dc=mkt,dc=mainstore,dc=com
    nismapname: auto_home
    objectClass: top
    objectClass: nisMap
    
    dn: nismapname=auto_direct,dc=mkt,dc=mainstore,dc=com
    nismapname: auto_direct
    objectClass: top
    objectClass: nisMap
    
    dn: nismapname=auto_master,dc=mkt,dc=mainstore,dc=com
    nismapname: auto_master
    objectClass: top
    objectClass: nisMap
    
    dn: nismapname=auto_shared,dc=mkt,dc=mainstore,dc=com
    nismapname: auto_shared
    objectClass: top
    objectClass: nisMap
パフォーマンスと上限に関するパラメータを設定する

これらのパラメータの値は、読み込むデータ量、データの使用パターン、使用するハードウェアなどによってサーバーごとに異なります。

  1. キャッシュの最大エントリ数、キャッシュの最大サイズ (バイト) を設定し、上限値を確認します。

    システムで使用できるメモリーおよびディスク容量に合わせて、キャッシュパラメータを変更してください。

  2. サイズおよび時間の上限パラメータを、環境に合わせて設定します。

    sizelimit および timelimit-1 に指定すると、取り得る上限値として設定されます。各自のシステムに合わせて値を選択してください。

プロキシエージェントにパスワードの読み取り権を与える

注 –

次のプロキシエージェント ACI (アクセス制御情報) は、NIS ドメインで使用した nisDomain の例に基づいています。実際に使用するときは、これらのプロキシエージェント ACI を各自の環境に合わせて変更してください。


  1. すべてのクライアントで認証に pam_unix を使用する場合は、ldapmodify を使用して検索起点識別名に読み取り ACI を設定することによって、プロキシエージェントにパスワードの読み取り権を与えます。


    #ldapmodify -D "cn=Directory Manager" -w nssecret -f aci.ldif

    aci.ldif の内容は次のとおりです。


    dn: dc=mkt,dc=mainstore,dc=com
    changetype: modify
    add: aci
    aci: (target="ldap:///dc=mkt,dc=mainstore,dc=com")
     (targetattr="userPassword")(version 3.0; acl "password read";
     allow (compare,read,search) userdn = "ldap:///cn=proxyagent,
     ou=profile,dc=mkt,dc=mainstore,dc=com"; )
  2. ldapsearch を使用して新しい ACI 設定を確認します。

    ldapsearch は変更された ACI を表示します。


    #ldapsearch -L -h <servername> -b "dc=mkt,dc=mainstore,dc=com" \
      -s base "objectclass=*"

    ldapsearch によって返される変更後の ACI は、次のようになります。


    dn: dc=mkt,dc=mainstore,dc=com
    dc: mkt
    associateddomain: mkt.mainstore.com
    objectclass: top
    objectclass: domain
    objectclass: domainRelatedObject
    objectclass: nisDomainObject
    nisdomain: mkt.mainstore.com
    aci: (target="ldap:///dc=mkt,dc=mainstore,dc=com")
     (targetattr="userPassword")(version 3.0; acl "password read";
     allow (compare,read,search) userdn = "ldap:///cn=proxyagent,
     ou=profile,dc=mkt,dc=mainstore,dc=com"; )

    pam_ldap 認証はサーバー側で実行されるため、プロキシエージェントにパスワード属性の読み取り権を与える必要はありません。pam_ldap についての詳細は、PAMを参照してください。

NIS データを LDIF 書式に変換する

NIS(YP) 環境から LDAP 環境に移行するには、dsimport を使用して NIS データを LDIF 書式に変換します。dsimport は NIS 拡張の一部で、iPlanet Advantage Software CD vol.1 に収録されています。マニュアルは、次の Web サイトで参照できます。http://docs.iplanet.com/docs/manuals/directory.html

  1. NIS パスワードを LDIF 書式に変換します。


    # cat passwd.nis | dsimport -n -m nis.mapping -t passwd \
    	-M SIMPLE -D "" -w "" >passwd.ldif

    passwd.ldif ファイルを LDAP サーバーに読み込みます。

  2. NIS グループデータを LDIF 書式に変換します。


    # cat group.nis | dsimport -n -m nis.mapping -t group \
    -M SIMPLE -D "" -w "" > group.ldif

    group.ldif を LDAP サーバーに読み込みます。

  3. 上記の手順を繰り返して、すべてのネームコンテナファイルを変換します。

  4. ns-slapd の ldif2db コマンドまたは ldapadd コマンドを使用して、LDIF 書式ファイルをディレクトリデータベースにインポートします。

    ns-slapd ldif2db コマンドについての詳細は、『Directory Server Administrator's Guide』の「Managing Directory Server Databases」を参照してください。ldapadd については、ldapadd(1) のマニュアルページを参照してください。


    注 –

    ファイルデータを LDIF 書式に変換するために、dsimport は、エントリの格納方法を定義するマップファイルを変更する必要があります。


インデックスを作成して検索パフォーマンスを向上させる

注 –

インデックスの作成方法については、『iPlanet Directory Server Administrator's Guide』の「Managing Indexes」を参照してください。


  1. 次の Solaris クライアント属性にインデックスを付けます。


    membernisnetgroup    pres,eq,sub
    nisnetgrouptriple    pres,eq,sub
    memberuid            pres,eq
    macAddress           pres,eq
    uid                  pres,eq
    uidNumber            pres,eq
    gidNumber            pres,eq
    ipHostNumber         pres,eq
    ipNetworkNumber      pres,eq
    ipProtocolNumber     pres,eq
    oncRpcNumber         pres,eq
    ipServiceProtocol    pres,eq
    ipServicePort        pres,eq
    nisDomain            pres,eq
    nisMapName           pres,eq
    mail                 pres,eq
  2. ldapsearch を使用して、VLV 制御タイプが 1.2.840.113556.1.4.473、VLV 制御値が 2.16.840.1.113730.3.4.9 の OID によって特定される仮想リスト表示 (VLV) を、ディレクトリがサポートしているかどうかを確認します。


    # ldapsearch -b "" -s base objectclass=\*

    ldapsearch は次の検索結果を返します。


    objectclass=top
    namingcontexts=dc=sun,dc=com
    namingcontexts=o=NetscapeRoot
    subschemasubentry=cn=schema
    supportedcontrol=2.16.840.1.113730.3.4.2
    supportedcontrol=2.16.840.1.113730.3.4.3
    supportedcontrol=2.16.840.1.113730.3.4.4
    supportedcontrol=2.16.840.1.113730.3.4.5
    supportedcontrol=1.2.840.113556.1.4.473
    supportedcontrol=2.16.840.1.113730.3.4.9
    supportedcontrol=2.16.840.1.113730.3.4.12
    supportedsaslmechanisms=EXTERNAL
    supportedldapversion=2
    supportedldapversion=3
    dataversion=atitrain2.east.sun.com:389 020000605172910 
    netscapemdsuffix=cn=ldap://:389,dc=atitrain2,dc=east,dc=sun,dc=com
  3. 次の VLV 属性にインデックスを付けます。


    getpwent:      vlvFilter: (objectclass=posixAccount),     vlvScope: 1
    getspent:      vlvFilter: (objectclass=posixAccount),     vlvScope: 1
    getgrent:      vlvFilter: (objectclass=posixGroup),       vlvScope: 1
    gethostent:    vlvFilter: (objectclass=ipHost),           vlvScope: 1
    getnetent:     vlvFilter: (objectclass=ipNetwork),        vlvScope: 1
    getprotoent:   vlvFilter: (objectclass=ipProtocol),       vlvScope: 1
    getrpcent:     vlvFilter: (objectclass=oncRpc),           vlvScope: 1
    getaliasent:   vlvFilter: (objectclass=rfc822MailGroup),  vlvScope: 1
    getserviceent: vlvFilter: (objectclass=ipService),        vlvScope: 1

    ツリー内の ou のうち、多数のオブジェクトを含むかアクセス頻度の高いものに、これらのインデックスを作成します。

  4. パスワードエントリ (getpwent) については、ディレクトリに次のエントリを追加します。


    dn: cn=getpwent,cn=config,cn=ldbm
    objectclass: top
    objectclass: vlvSearch
    cn: getpwent
    vlvBase: ou=people,dc=eng,dc=sun,dc=com
    vlvScope: 1
    vlvFilter: (objectclass=posixAccount)
    aci: (target="ldap:///cn=getpwent,cn=config,cn=ldbm")(targetattr="*")
     (version 3.0; acl "Config";allow(read,search,compare)userdn="ldap:///anyone";)
    
    dn: cn=getpwent,cn=getpwent,cn=config,cn=ldbm
    cn: getpwent
    vlvSort: cn uid
    objectclass: top
    objectclass: vlvIndex
  5. getpwent の VLV インデックスを作成します。


    # cd /usr/netscape/server4/slapd*
    # ./vlvindex getpwent
    OK# ./vlvindex getgrent
    OK# ./vlvindex gethostent
    OK# ./vlvindex getspent
    OK# 
    # ./vlvindex
    [05/Jun/2000:15:34:31 -0400] - ldbm2index: Unknown VLV Index named ''
    [05/Jun/2000:15:34:31 -0400] - ldbm2index: Known VLV Indexes are: 'getgrent', 
    'gethostent', 'getnetent', 'getpwent', 'getspent', 
  6. 残りの VLV 属性について、手順 4 と 5 を繰り返します。

すべてのユーザーに VLV 要求制御の読み取り権/検索権/比較権を与える
  1. ldapsearch を使用して、VLV 制御 ACI を表示します。


    #ldapsearch -D "cn=Directory Manager" -w nssecret -b cn=features, \
    cn=config objectclass=\*

    検索結果は次のとおりです。


    cn=features,cn=config
    objectclass=top
    cn=features
    
    cn=options,cn=features,cn=config
    objectclass=top
    cn=options
    
    oid=2.16.840.1.113730.3.4.9,cn=features,cn=config
    objectclass=top
    objectclass=directoryServerFeature
    oid=2.16.840.1.113730.3.4.9
    cn=VLV Request Control
    aci=(targetattr != "aci")(version 3.0; acl "VLV Request \
     Control"; allow( read, 
    search, compare ) userdn = "ldap:///all";)
  2. ldapmodify を使用して、すべてのユーザーに、VLV 機能の読み取り/検索/比較の権限を与えます。これにより、anonymous (匿名) による検索で VLV 制御を使用しても失敗しなくなります。


    #ldapmodify -D "cn=Directory Manager" -w nssecret -f vlvcntrl.ldif

    vlvcntrl.ldif の内容は次のとおりです。


    dn: oid=2.16.840.1.113730.3.4.9,cn=features,cn=config
    changetype: modify
    replace: aci
    aci: (targetattr !="aci")(version 3.0; acl "VLV Request Control"; 
     allow (compare,read,search) userdn = "ldap:///anyone"; )
  3. ldapsearch を使用して、変更された VLV 制御 ACI を表示します。


    #ldapsearch -L -b "cn=features,cn=config" -s one \
    oid=2.16.840.1.113730.3.4.9

    ldapsearch が返す ACI は次のようになります。


    dn: oid=2.16.840.1.113730.3.4.9,cn=features,cn=config
    objectclass: top
    objectclass: directoryServerFeature
    oid: 2.16.840.1.113730.3.4.9
    cn: VLV Request Control
    aci: (targetattr !="aci")(version 3.0; acl "VLV Request Control"; 
     allow (compare,read,search) userdn = "ldap:///anyone"; )
LDAP サーバーに proxyagent エントリを追加する

注 –

この手順は、proxyagent エントリを使用する場合だけ必要になります。


  1. proxyagent エントリを LDAP サーバーに追加します。


    #ldapadd -D "cn=Directory Manager" -w nssecret -f proxyagent.ldif

    proxyagent.ldif の内容は次のとおりです。


    dn: cn=proxyagent,ou=profile,dc=mkt,dc=mainstore,dc=com
    cn: proxyagent
    sn: proxyagent
    objectclass: top
    objectclass: person
    userpassword: proxy_agent_password

    注 –

    ou は、ou=profile または ou=person に設定できます。


クライアントプロファイルを生成する
  1. クライアントプロファイルを生成し、それを LDAP サーバーに追加します。


    ldap_gen_profile -P profile -b baseDN -D bindDN \
      -w bindDNpasswd ldapServer_IP_address(es)[:port#]

    bindDN はプロキシエージェントのバインド DN です。障害発生時に他の LDAP サーバーで処理を継続することを可能にする場合は、2 つ以上の LDAP サーバーの IP アドレスを指定します。上のコマンドの実行結果を、profile.ldif などの名前のファイルに格納します。

    典型的なコマンド行を示します。


    ldap_gen_profile -P myProfile -b "dc=mkt,dc=mainstore,dc=com" \
    -D "cn=proxyagent,ou=profile,dc=mkt,dc=mainstore,dc=com" \
    -w proxy_agent_pswd -a simple 100.100.100.100 > profile.ldif
  2. このクライアントプロファイルを LDAP サーバーに追加して、クライアントがダウンロードできるようにします。