LDAP 消费者上可能存在非复制数据吗?

LDAP 消费者上可能存在非复制数据吗?

我已经读完了可用文档, 这精通 OpenLDAP 书籍,以及无数的邮件列表帖子,但我还没有找到实现这种情况的方法。我看到了这种场景的几个用例,例如企业应用程序同步 Org 主 LDAP 中的所有用户,但在其服务器中保留其自己的应用程序相关架构和对象。

所以,请问您能否给我指明正确的方向,或者帮助我完全排除这种可能性?

编辑 6月17日

示例场景: 示例场景

我想要实现的目标是能够从提供商处获取 o=area1,o=myorg,dc=org 和 o=area2,o=myorg,dc=org 中的所有数据,同时也能够从消费者处获取其他数据,例如 o=subarea1,o=myorg,dc=org。

我从提供商处获取数据没有任何问题,我已经在消费者中为每个分支(area1,area2)设置了一个 syncrepl 条目,并使用不同的 rid

syncrepl rid=101 
 provider="ldap://provider:389" 
 bindmethod=simple 
 binddn="cn=replicator,o=myorg,cn=org" 
 credentials="***" 
 searchbase="o=area1,o=myorg,dc=org" 
 type=refreshAndPersist 
 retry="5 5 300 5" 
 timeout=3 
 schemachecking=off 
 scope=sub

并且我也在提供商上激活了 syncprov。

当我尝试向消费者添加任何数据时,问题出现了,它总是失败并出现错误:

LDAP Error code 53 - shadow context; no update referral

答案1

是的,你可以。只需在 syncrepl 配置中搜索要复制的过滤器和属性即可

syncrepl rid=1
  provider=ldap://provider.myorg.com:389
  type=refreshOnly
  interval=01:00:00:00
  searchbase="ou=sales,o=employees,o=myorg,cn=com"
  filter="(objectClass=posixAccount)"
  scope=base
  attrs="cn,sn,userPassword"
  schemachecking=off
  bindmethod=simple
  binddn="cn=syncuser,o=myorg,cn=com"
  credentials=secret

现在,情况如下:

  • 仅复制 ou=sales,o=myorg,cn=com
  • 仅复制 posixAccount 架构
  • 只有 cn、sn 和 userPassword。从而保持消费者的 gid 和 uid 不变。
  • 并且不进入子级。只是,您指定的 baseDN。范围有一些选项。
    • sub,表示所有带有子树的
    • 一,表示仅搜索库和其下方的搜索库
    • base,仅表示搜索库

不过有一个问题。对于主 Samba 没有的属性,您必须手动更新。例如,您在消费者 LDAP 中有 Samba 密码,而主 LDAP 没有,当用户更改密码时,您必须更新 2 个 LDAP 以将消费者 LDAP 中的 sambaNTPassword 和 sambaLMPassword 同步到主 LDAP 中的 userPassword。当然,这仅适用于您想要保持密码同步的情况。

答案2

如果您指的是是否可以为消费者提供不同的数据架构,那么我认为您可以为一个林单独复制内容(或创建另一个林),然后将消费者连接到该林或 AD 站点。不幸的是,我只短暂使用了 openldap。希望这能有所帮助。

答案3

2 后端方法

只要您的不同分支位于不同的后端,您就可以将一个后端配置为远程主服务器的消费者,并将另一个后端配置为直接执行读写时的标准后端。

您将其定义ou=sales,o=employees,o=myorg,cn=com为一个后端的 DN,并带有复制设置。然后将其定义ou=accounting,o=employees,o=myorg,cn=com为另一个后端的 DN,不带复制设置。

1 后端方法

如果一切都保存在同一个后端,我设想如下:

  1. 以多主方式配置后端复制。这样,两个服务器都是可写的
  2. 在本地可写树所在的位置,实施 ACI,以便在必要时保持复制的数据对本地用户为只读
  3. 如果本地可写树必须保存在本地而不被复制,则可以配置指令进行选择性复制(忽略属性、对象、DN 等)

答案4

我遇到了类似的问题,并发现了一个允许根据消费者基础进行写入的选项:

olcMirrorMode: TRUE

它必须添加到所有 syncrepl 选项之后。我认为它也能解决你的问题。

相关内容