-
Notifications
You must be signed in to change notification settings - Fork 66
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[文档] ldap 配置/使用/FAQ 汇总 #429
Comments
ldap地址配置正确, 但是就是无法测试连接一直失败(
|
有没有python脚本可以快速测试配置的 ldap 服务是否可用?TODO |
ldap3.core.exceptions.LDAPBindError使用openldap账户@登录域 的用户名和密码登不上环境; 登录提示: 报错日志:
页面报错提示:
原因: 配置的 LDAP 管理密码有误 相关issue |
OpenLDAP导入的账户,页面"全名"字段为空解决方案:在LDAP字段配置 -> 中文名处设置 相关issue: |
ldap用的ssl, 如何配置同步ldap 地址规则:
配置错误可能的报错: 相关issue: |
ldap配置同步用户及部门成功了, 但是登录不上 (LDAP用户登录提示密码错误)新建 ldap 同步目录的时候, 会有一个 登录目前的交互是需要, 用户名输入框需要用户主动填写 格式: 所以登录时, ldap 同步过来的用户, 用户名需要填写 相关issue: |
ldap插件同步的代码在哪里? 使用了什么库?其中, 测试连接的逻辑代码是 bk-user/src/api/bkuser_core/categories/plugins/ldap/client.py Lines 54 to 81 in 3492c10
目前依赖的是第三方库 ldap3 |
TODO#【MAD登录】 MAD同步成功,但域账号登录时仍然提示“账户名和密码不匹配 262 |
修改密码无法同步到 AD 域Q: 用户集成了Windows AD,但是修改的密码无法同步到AD域里,请问可以实现密码同步更能嘛? 相关issue: #313 |
对接单点登录之后如何新增admin超级管理员?Q: 对接公司内部的单点系统之后,所有用户登录都是普通用户,admin不能登录了 from bkuser_core.profiles.models import Profile
from bkuser_core.categories.models import ProfileCategory
p = ProfileCategory.objects.get(id=${期望目录id})
Profile.objects.create(username="admin", domain=p.domain, category_id=p.id) 相关issue: #314 |
LDAP配置的地址是什么格式?ldap 地址规则:
|
|
需要补充:
https://bk.tencent.com/s-mart/community/question/1901 配置说明: 用户基础字段配置说明: 用户扩展字段配置说明: 用户组字段 |
用户数据同步成功, 但是登录报错
|
支持同步没有开启memberOf模块的openldap问题: 用户的openldap服务没有开启memberOf模块,用户管理的ldap同步会失败,提示没有memberOf属性。 报错详情:
先确认用户管理ldap配置是否正确 如果升级到了最新版,这里用户组关联字段是可以不填写的,留空即不同步用户组数据 解决问题的思路:
另外, 如果使用的 LDAP 是由类似 那么你需要手动修改用户组默认属性配置,由 进入 Api 模块的 Python Shell 环境: from bkuser_core.user_settings.models import Setting
# 填写相关联的目录 ID
s = Setting.objects.get(category_id=${category_id}, meta__key="user_member_of")
s.value = "isMemberOf"
s.save() 相关issue: |
ldap 同步部门成功, 但是同步用户失败
|
FAQ: 配置mad, 同步用户出错报错详情:
|
版本bug: ldap目录下, 用户绑定的企业微信, ldap同步之后被清空
|
FAQ: 同一蓝鲸平台可以同时接入多个域控吗>可以, 使用多个目录, 每个目录配置不同域, 使用ldap分别同步即可 登录时, 用户名为 相关issue: https://bk.tencent.com/s-mart/community/question/2049?type=answer |
MAD/LDAP同步报错: Duplicate entry 'xxxxx' for key 'code'报错详情:
报错原因 1: ldap 中 存在某个用户的
|
FAQ: 社区版 6.0.2 中用户管理 (2.2.2) 接入 AD/LDAP 用户体系时同步用户异常 (version==2.2.2)修复: 使用 相关issue: |
排查同步入库报错问题: 目录/用户/部门相关表的查询sql
报错关键字:
报错原因:
注意: 只要code不变, 那么在权限中心等, 是同一个用户; code的生成规则:
所以, 如果服务端dn重复, 会导致同步失败; 如果往目录 1 配置同步过一次, 后来改了配置又同步, 存在重复dn也会冲突; 查看目录列表 (注意: select * from categories_profilecategory; 查看目录的配置 select b.key, a.value, a.enabled, a.category_id, a.meta_id from user_settings_setting a, user_settings_settingmeta b where a.meta_id=b.id
and a.category_id=123; 查看某个用户 (注意查看 # code / username / display_name
select * from profiles_profile where code='xxxxxx';
select * from profiles_profile where username='xxxxx';
select * from profiles_profile where category_id=2 limit 10; 查看某个部门的信息 select * from departments_department where name='DEPT_NAME ';
select * from departments_department where category_id=2 limit 10; 查询部门-用户关系表 select * from departments_department_profiles where category_id=2;
# 部门下的所有用户
select * from departments_department_profiles where department_id=123;
# 用户的所有部门
select * from departments_department_profiles where profile_id=123; 处理:
|
部门及用户同步后的code生成规则bk-user/src/api/bkuser_core/categories/plugins/ldap/syncer.py Lines 106 to 111 in 91b97a5
|
ldap地址正确但是测试连接失败 LdapCannotBeInitialized
ldap3从 2.6.1, 升级到 2.7 之后解决; |
illegal mix of collations for operation 'case'问题: 同步时, 入数据库pymysql报错, 无法保存部门或用户 报错详情:
原因:
相关issue: |
ldap3.core.exceptions.LDAPSessionTerminatedByServerError: session terminated by server
|
这个报错是使用开源包 ldap3 调用请求 ldap服务器报的, 非 按照搜索结果逐一排查, 例如这种: cannatag/ldap3#513 (comment) |
怎么清理某个目录下已同步的所有用户和部门什么情况能清理:
清理掉意味着废弃掉已有组织架构及用户, 如果权限中心已经同步组织架构过去了, 那么不能清理 (要么用户管理+权限中心都重置) => 如果清理, 权限中心下次同步将会出现数据错乱/权限错乱, 无法恢复 清理sqlselect * from categories_profilecategory;
# 获取 category的id, 替换下面sql的x
# 删目录下用户
delete from profiles_profile where category_id=x;
# 删部门
UPDATE departments_department SET parent_id = NULL WHERE parent_id IS NOT NULL AND category_id=x;
delete from departments_department where category_id=x;
# 删部门-用户关系表
delete from departments_department_profiles where department_id not in (select id from departments_department);
# 删用户-leader关系表
delete from profiles_profile_leader where from_profile_id not in (select id from profiles_profile); |
openLDAP sizelimit默认配置会导致只能同步500账号到bk-useropenLDAP的sizelimit默认值为500,会导致只能同步500账号到bk-user, 超限后新用户无法同步。 更优解决办法: cat > sizelimit.ldif
ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f sizelimit.ldif modifying entry "cn=config" 相关issue: |
SQL 补全# 查看目录所有配置及其更新时间
select b.key, a.value, a.enabled, a.category_id, a.meta_id, a.create_time, a.update_time from user_settings_setting a, user_settings_settingmeta b where a.meta_id=b.id
and a.category_id=4;
# 查用户/部门数据(査几条看看, 必要的话order by id desc看最新的)
select * from profiles_profile where category_id=4 limit 10;
select * from departments_department where category_id=4 limit 10;
# 查询某个category中用户/部门启用的数据
select enabled, count(*) from profile_profiles where category_id=4 group by enabled;
select enabled, count(*) from departments_department where category_id=4 group by enabled;
# 査部门-用户关系表中的数据
select count(*) from departments_department_profiles where department_id in (select id from departments_department where enabeld=1 and category_id=4);
select count(*) from departments_department_profiles where department_id in (select id from departments_department where enabeld=0 and category_id=4);
|
case 示例:1. #915
|
误删除ldap目录后该怎么恢复?注意第三步恢复部门及用户, 可能恢复后有脏数据(之前被软删除的也被恢复了), 因为此时无法识别哪些是之前删除的, 哪些是删目录的时候删除的 删目录删除的=>其update_time应该是一致的或接近的, 可以多加一个条件 注意: 如果不确定, 就不要操作; 如果能回滚db, 会是一个更好的选择 恢复sql select * from categories_profilecategory;
# 找到被误删的记录 获取 category的id, 替换下面sql的x
# 1. 恢复目录
update categories_profilecategory set enabled=1, status="normal" where id=x;
# 2. 恢复配置
update user_settings_setting set enabled=1 where category_id = x;
# 确认配置状态是ok的
select b.key, a.value, a.enabled, a.category_id, a.meta_id from user_settings_setting a, user_settings_settingmeta b where a.meta_id=b.id
and a.category_id=x;
# 3. 恢复部门及用户
update departments_department set enabled=1 where category_id=x;
update profiles_profile set enabled=1, status='NORMAL' where category_id=x; |
数据源用户名变更导致的同步失败现象:
日志:
查看日志, 每一条用户插入都报错, 并且异常信息都是一致的 排查: select * from profiles_profile where code='f94236485e704bef717341c34d6c81c0d20cc7ad12c916b8cd9960c712db142e'; 找到这个用户, 然后到ldap/mad数据源查找这个用户, 或者咨询人事/ldap或mad维护人员, 最近是否有变更过这个用户的用户名(用户管理ldap/mad 配置中映射到username的字段) 失败原因: ldap/mad 数据同步到用户管理后, username是域下面唯一的, 并且会使用 修复: 确认对应账号的 拉取逻辑:
|
配置 MAD / LDAP 登录慢 或 超时测试是否 MAD / LDAP 查询慢 # Note: LDAP 引入
from bkuser_core.categories.plugins.ldap import login
# Note: MAD 引入
# from bkuser_core.categories.plugins.mad import login
from bkuser_core.profiles.models import Profile
profile = Profile.objects.get(username="xxxx", domain="xxxxx")
l = login.LoginHandler()
l.check(profile=profile, password="xxxxxxx") |
背景: ldap由于是外部插件的形式, 内部根本没有场景, 而且ldap server多种多样, 配置差异很大, 非常不好配置; Github issues和社区问答中都存在很多的问题咨询和解答.
目标: 汇总所有相关问题, 并实时更新, 便于用户检索和解决问题
相关入口
如何使用
相关入口
部分的相关文档1/2/3
ctrl+f
在本页搜索相关的关键字, 欢迎补充相关答案相关入口
的`4/5进一步查找(因为更新同步存在延时)欢迎补充相关的 FAQ 及解答, 分享具体实践的经验
The text was updated successfully, but these errors were encountered: