1. 零信任身份源接入与用户目录同步

零信任身份源接入与用户目录同步 学习卡片

为什么身份源接入是零信任的第一块基石

零信任的核心原则是"永不信任、始终验证",而验证的前提是知道"谁在请求访问"。企业现有的用户身份通常沉淀在 LDAP 或 Active Directory 中,零信任控制平面本身并不存储这些用户,它需要通过标准协议把目录中的用户、组和属性同步过来,形成一份可供策略引擎实时查询的身份清单。没有这一步,后续的 MFA 策略、设备绑定、最小权限访问都无从谈起。

本案例的任务是:把一台企业 LDAP 目录接入零信任控制平面,完成用户、组、属性的同步映射,并验证同步后的身份数据能够被访问策略正确匹配。

接入前需要确认的三类信息

  • 目录连接信息:LDAP 服务器地址、端口(389 明文 / 636 TLS)、Base DN、绑定账号 DN 与密码。绑定账号只需读取权限,不要用域管理员。
  • 同步范围:指定要同步的 OU 或组,避免把服务账号、测试账号一并拉入。常用做法是只同步 ou=employees 下的用户。
  • 属性映射:零信任平台需要至少一个唯一标识(如 uid 或 sAMAccountName)、显示名(cn)、邮箱(mail)、所属组(memberOf)。这些字段决定后续策略能否按人和组匹配。
绑定账号建议单独创建,例如 cn=zt-reader,ou=svc,dc=corp,dc=example,dc=com,仅授予对目标 OU 的读取权限。这样即使凭据泄露,影响面也被限制在只读范围。

同步链路与数据映射关系

下图展示了从 LDAP 目录到零信任控制平面的完整同步链路:绑定账号发起查询,目录返回条目,控制平面按映射规则转换字段,最终写入身份库并供策略引擎调用。

企业 LDAP / AD dc=corp,dc=example,dc=com ou=employees ou=svc cn=zt-reader (绑定账号,只读) 同步引擎 LDAP Connector 查询范围:ou=employees 同步周期:每 15 分钟 增量同步:按 modifyTimestamp (首次全量,后续增量) 零信任身份库 Identity Store user_id ← uid display_name ← cn email ← mail groups ← memberOf LDAP 查询 字段映射 策略引擎 Policy Engine 匹配条件:user.groups 决策:Allow / Deny / MFA 身份数据供策略查询 同步验证 ✓ 用户数一致 ✓ 组关系正确 ✓ 策略可匹配 验证 LDAP 目录 → 同步引擎 → 身份库 → 策略引擎 → 验证闭环

关键配置与同步映射

以下是一份可直接参考的 LDAP 连接器配置示例,字段名以常见零信任平台(如 Keycloak、Okta、Azure AD Connect 等)的通用语义为准,具体界面名称可能不同,但映射逻辑一致。

# LDAP 连接器配置示例
connection:
  url: "ldaps://ldap.corp.example.com:636"
  bind_dn: "cn=zt-reader,ou=svc,dc=corp,dc=example,dc=com"
  bind_password: "<从密钥管理服务注入>"
  base_dn: "ou=employees,dc=corp,dc=example,dc=com"
  user_filter: "(objectClass=person)"
  group_filter: "(objectClass=groupOfNames)"

sync:
  mode: "incremental"          # 首次 full,后续 incremental
  interval: "15m"
  attribute_mapping:
    user_id:      "uid"        # 唯一标识,不可为空
    display_name: "cn"
    email:        "mail"
    department:   "ou"
    groups:       "memberOf"   # 多值属性,映射为组列表

group_mapping:
  - ldap_group: "cn=dev-team,ou=groups,dc=corp,dc=example,dc=com"
    zt_group:   "engineering"
  - ldap_group: "cn=ops-team,ou=groups,dc=corp,dc=example,dc=com"
    zt_group:   "operations"
绑定密码不要明文写入配置文件。生产环境应通过密钥管理服务(如 Vault、KMS)注入,或使用平台提供的凭据保险箱功能。同步账号的权限应严格限制为只读,且仅覆盖需要同步的 OU。

同步后的验证方法

同步完成后,不能只看"同步成功"的提示,必须验证身份数据是否真正可用于策略匹配。建议按以下顺序检查:

  1. 数量核对:在零信任平台查询用户总数,与 LDAP 中 ou=employees 下 objectClass=person 的条目数对比。若不一致,检查 user_filter 是否过滤掉了部分账号。
  2. 属性抽查:随机抽取 3~5 个用户,核对 uid、cn、mail、memberOf 是否与 LDAP 一致。重点关注多值属性 memberOf 是否完整同步。
  3. 组关系验证:确认 dev-team 和 ops-team 的成员列表与 LDAP 一致,且已映射为 engineering 和 operations 两个零信任组。
  4. 策略匹配测试:创建一条测试策略,条件为 user.groups contains "engineering",用 dev-team 中的用户发起访问,确认策略能够命中。

常见问题与排查方向

现象可能原因排查动作
同步用户数为 0Base DN 或绑定账号权限错误用 ldapsearch 以绑定账号手动查询,确认能返回条目
部分用户缺失user_filter 过严或 OU 范围不对放宽 filter 为 (objectClass=*) 测试,确认条目是否在范围内
组关系为空memberOf 未启用或映射字段名错误检查 LDAP 是否返回 memberOf,确认映射键名与平台字段一致
策略无法匹配组名映射未生效或大小写不一致在身份库中直接查询该用户的 groups 字段,确认值是否为 engineering
同步验证通过的标准:用户数量与 LDAP 一致、关键属性抽查无误、组映射正确、且至少一条基于组的策略能够成功匹配。四项全部满足,才说明身份源接入真正完成,可以进入后续的 MFA 策略配置环节。