web-dev-qa-db-ja.com

マスター/スレーブLDAPレプリケーションを構成する方法

セッションレプリケーションを使用してUbuntuでマスタースレーブLDAPサーバーを構成するにはどうすればよいですか。

たとえば、Ifおよびldapクライアントがマスターサーバーでパスワードを変更した場合。新しいパスワードをスレーブサーバーに自動的に同期させたい

4
Ishan Mate

Ldapのマスタースレーブは、プロバイダーとコンシューマーの名前を使用します。使用しているLDAPサーバーを指定しないので、openLDAPについて話していると思います。

古いopenLDAP設定では、confファイルに保存されていました。現在、すべての設定はldapサーバー自体に保存されています。そのため、これらのファイルを作成することから始めるために、構成を作成してldapサーバーに注入する必要があります。この指示により、すべてのエントリがスレーブサーバーに自動的に複製されます。

会社名がacmeで、ドメインがcomであるとします。現在のLDAPサーバーの管理者がcn = admin、dc = acme、dc = comにあること

最初すべてのldapエントリを読み取り、コンシューマサーバーに複製できるldapユーザーを作成する必要があります。

作成ファイル「create_repl_user.ldif」

dn: cn=ldaps2,dc=acme,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: ldaps2
description: LDAP server2 replicator

Secondマスターldapサーバーでプロバイダーサービスを有効にし、ユーザーldaps2にldapサーバー全体への読み取りアクセス権を付与する必要があります。

ファイル「enable_sync_prov.ldif」を作成します

dn: olcDatabase={1}hdb,cn=config
changetype: modify
delete: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange
  by self write
  by anonymous auth
  by dn="cn=admin,dc=acme,dc=com write
  by * none
-
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange
  by self write
  by dn="cn=admin,dc=acme,dc=com" write
  by dn="cn=ldaps2,dc=acme,dc=com" read
  by anonymous auth
  by * none
-
add: olcDbIndex
olcDbIndex: entryUUID eq
-
add: olcDbIndex
olcDbIndex: entryCSN eq

dn: cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: {1}syncprov

dn: olcOverlay=syncprov,olcDatabase={1}hdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: {0}syncprov
olcSpCheckpoint: 100 10
olcSpSessionlog: 100

Third:指定されたサーバーからLDAPコンシューマーへの複製を有効にする必要があります。ファイルenable_sync_consumer.ldifを作成し、行provider = "ldap://yourldapservername.com:389 /"をマスターldapサーバーのIPに置き換えます。 credentials = yourencryptedldap2spassword、ldap2sユーザー用に決定したパスワードを使用します。

dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: stats

dn: olcDatabase={1}hdb,cn=config
changetype: modify
delete: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange
  by self write
  by anonymous auth
  by dn="cn=admin,dc=acme,dc=com" write
  by * none
-
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange
  by anonymous auth
  by * none
-
delete: olcAccess
olcAccess: {2}to *
  by self write
  by dn="cn=admin,dc=acme,dc=com" write
  by * read
-
add: olcAccess
olcAccess: {2}to *
  by * read
-
replace: olcRootDN
olcRootDN: cn=manager
-
delete: olcRootPW
-
add: olcDbIndex
olcDbIndex: entryCSN eq
-
add: olcDbIndex
olcDbIndex: entryUUID eq
-
add: olcDbIndex
olcDbIndex: uid eq
-
add: olcDbIndex
olcDbIndex: cn eq
-
add: olcDbIndex
olcDbIndex: ou eq
-
add: olcDbIndex
olcDbIndex: dc eq


add: olcSyncrepl
olcSyncrepl: rid=123
  provider="ldap://yourldapservername.com:389/"
  type=refreshAndPersist
  retry="60 30 300 +"
  searchbase="dc=acme,dc=com"
  bindmethod=simple
  binddn="cn=ldaps2,dc=acme,dc=com"
  credentials=yourencryptedldap2spassword

構成ファイルを作成したので、それらをプロバイダーおよびコンシューマサーバーにインジェクトする必要があります

プロバイダーサーバーでレプリケーションユーザーを作成します。

run ldapadd -x -W -D cn=admin,dc=acme,dc=com -f  create_repl_user.ldif

プロバイダーサービスを有効にします。

run ldapadd -x -W -D cn=admin,dc=acme,dc=com -f  enable_sync_prov.ldif

コンシューマサーバーでコンシューマ同期設定を追加します。

run ldapadd -x -W -D cn=admin,dc=acme,dc=com -f enable_sync_consumer.ldif
4
tomodachi

すばらしい記事であり、私を大いに助けてくれました。しかし、ldifにはいくつかのエラーがあります。注意してください:enable_sync_prov.ldif

dn = "cn = admin、dc = acme、dc = ncom書き込み

あるべき

by dn = "cn = admin、dc = acme、dc = com"書き込み

次に、ldapadd/ldapmodifyは、cn = admin、dc = acme、dc = comではなく、ツリーのcn = admin、cn = config部分で実行する必要があります。

1
vkersten