2017年2月20日月曜日

OpenLDAPでメタディレクトリを利用した複数のデータベースの統合管理

やりたいこと


  • 2つのLDAPデータベースを統合してクライアントに表示させたい
    • メタディレクトリとよばれる機能を用いる

環境

  • CentOS 7
  • OpenLDAP 2.4
    • データベースA
      • ルートDN:ou=dba,dc=hirune,dc=example
    • データベースB
      • ルートDN:ou=dbb,dc=hirune,dc=example
    • メタディレクトリ
      • ルートDN:ou=meta,dc=hirune,dc=example

概要

  • メタディレクトリにアクセスしたら、データベースAの内容とデータベースBの内容が両方表示されるようにしたい
  • メタディレクトリを使うにはcn=configを編集してモジュールを追加でロードする必要がある
    • /usr/lib64/openldap/back_ldap.so
    • /usr/lib64/openldap/back_meta.so
  • objectClassにolcDatabaseConfig・olcMetaConfigを持たせたものをcn=configに追加すればメタディレクトリになる

手順

  1. 通常通りLDAPサーバをインストールする
  2. データベースAとデータベースBを作成する
  3. 以下の内容をcn=configに追加し、モジュールをロードする
    dn: cn=module{0},cn=config
    objectClass: olcModuleList
    cn: module{0}
    olcModulePath: /usr/lib64/openldap
    olcModuleLoad: {0}back_meta
    olcModuleLoad: {1}back_ldap
  4. 以下の内容をcn=configに追加し、メタディレクトリを作成する
    dn: olcDatabase=meta,cn=config
    objectClass: olcDatabaseConfig
    objectClass: olcMetaConfig
    olcDatabase: meta
    olcSuffix: ou=meta,dc=hirune,dc=example
  5. 以下の内容をolcDatabase=meta,cn=configに追加し、メタディレクトリに各データベースをバインドさせる
    dn: olcMetaSub={0}uri,olcDatabase=meta,cn=config
    objectClass: olcMetaTargetConfig
    olcMetaSub: {0}uri
    olcDbURI: ldap:///ou=dba,ou=meta,dc=hirune,dc=example
    olcDbRewrite: {0}suffixmassage "ou=dba,ou=meta,dc=hirune,dc=example" "ou=dba,dc=hirune,dc=example"

    dn: olcMetaSub={1}uri,olcDatabase=meta,cn=config
    objectClass: olcMetaTargetConfig
    olcMetaSub: {1}uri
    olcDbURI: ldap:///ou=dbb,ou=meta,dc=hirune,dc=example
    olcDbRewrite: {0}suffixmassage "ou=dbb,ou=meta,dc=hirune,dc=example" "ou=dbb,dc=hirune,dc=example"
    • olcDbURIをldap://externalserver.hirune.example/~のように書き換えることで外部のLDAPサーバも参照可能

補足

参考

0 件のコメント:

コメントを投稿