跳到主要内容
版本:7.0.0

账户同步实操

设置路径:管理员设置 — 用户管理 — 账户同步 (如未开启,可联系观远工作人员开启)

更新方式:手动触发、定时任务

一、用户组同步

1.  准备用户组数据集

      需要包含以下3个字段(参考下图):

1)    用户组ID:STRING类型,该ID只是一个外部用户组的唯一标识ID,并非BI里面的用户组ID。不能为空且不能重复(*为空的记录将被忽略,重复的记录将以最后一条记录为准)

2)    名称:STRING类型,不能为空(*为空的记录将被忽略)

3)    父用户组ID:STRING类型。正确示例如下图:

image.png

注意:不要出现父用户组ID互相依赖的情况,比如A的父用户组为B,B的父用户组为A,下图为错误示例,一定要避免

image.png

2.  设置用户组同步,关联字段

      同步后效果如下。

image.png

注意:

1. 如果该用户组和其子孙用户组还配置有一些作为所有者的资源,则不能删除。

2. 如果系统同步的用户A,所属于用户组a(在BI中手动添加的手动创建的用户组)、用户组b(来自系统同步),那么在下次系统同步用户A的时候用户组a还在。

二、账户同步

1. 数据集准备

      确保要同步的用户属性都在数据集里,且以string 文本格式存储。如果多个用户属性分布在不同数据集里(或者格式不对),建议使用ETL对数据进行处理,属于一个专门用于账户同步的数据集。已经存在的账户信息,可以在数据中心 Built-in-Dataset 文件夹里builtin_user 数据集里查询,用户组信息存储在user_and_user_group_relation_record 表里。

image.png

2. 设置数据集同步,关联字段

      进入「账户同步」编辑界面,用户同步标签下,点击「选择数据集」,选择准备好的数据集。

      可同步的字段分为4类:基本信息、权限信息、第三方账号关联,以及其他信息。除了密码和用户状态,其他属性都只能根据需要从上一步选中的数据集中一一关联相对应的字段,不需要同步的字段,匹配字段保持为空,最后保存即可。

image.png

字段解释

A.  账号:不能为空且需保证唯一性(为空的记录将被忽略)

B.  密码:只在首次新建用户时生效,后续不会随着数据集更新而更新,如需修改,可在管理员设置内手动修改。如果选择与数据集字段匹配则需要密码字段,密码字段必须用Base64进行编码;如果使用统一初始密码,则表示所有通过账户同步创建的新用户密码都是一样的,可能存在数据安全风险,建议设置复杂密码,且设置密码策略(路径:系统管理—登录设置。请参考观远BI账户安全和登录设置 )。观远BI不支持批量修改密码,但是有对应API接口(批量修改用户属:POST /public-api/users/modify)可供用户自行进行二次开发实现批量修改密码。

C.   用户状态:分为启用/禁用,选择设置统一初始值时,将只在首次新建用户时生效,后续如需修改,可在管理员设置内手动修改;如果选择了“与数据集字段匹配”且选择了字段(小写英文:disable为禁用,小写英文:enabled或者空,为启用),那后续状态会跟随数据集进行同步。

D.  账号类型:角色必须用英文(admin/editor/participant),字段值为空则默认新增的用户都是只读账户;只在首次新建用户时生效,后续不会随着数据集更新而更新,如需修改,可在管理员设置内手动修改。

E.   所属用户组 ID:非必填,且可为空,为空则该用户将不被添加至任何用户组中,有多个用户组则用英文逗号','分割;不能使用用户组名字,只能使用用户组ID(用户组同步数据集里的外部用户组ID,非BI里的用户组ID)。

F.   第三方账号关联:匹配数据集字段后,支持SSO登录账号/LDAP登录账号自动同步。会有判空以及重复校验。但要注意,该功能完美支持观远自带的标准SSO集成方式,不适用于其他方式或者定制开发的单点登录方式。例如SSO登录账号为邮箱,但是BI登录账号为工号,那需要先保证用户邮箱这个属性有值,然后设置SSO登录账号关联数据集里的邮箱字段。

image.png

同步主流程

● 先同步用户组,然后再同步用户(因为有依赖关系);

● 大体流程就是获取新用户(组)信息,与旧用户(组)信息比较,或者删除/新增/更新的数据,分别处理。参考下面流程图。

image.png

任务管理:

1. 提交任务时,判断是否有正在运行中的账户同步任务,如果有则不能提交。

2.  同步后可以在当前页面上看到运行状态,并且可以在右上角查看更新历史记录。历史记录里会注明是全部失败还是部分失败,点击失败字段的“详情”可以查看失败原因和清单。最常见的失败原因为,用户存在未转移的资源导致删除用户失败。

image.png

注意事项

  • 建议设置“是否禁用删除用户操作”为“是”(开启以后用户只是被禁用,不会直接被删掉,可以批量再启用或者清理。用来缓解用户被误操作删除时的影响)

    image.png

  • 用户组缓存会在所有用户组都同步结束后再进行刷新(否则有性能问题)。

  • 用户/用户组同步更新,是和上次同步的数据进行比对。只会新增/更新/删除/禁用数据集里的用户(组),包括手动添加、但是后来又在账户同步中出现过的用户。

  • 如果配置的数据集被重置,那么同步时会删除所有同步过来的用户(组)。

  • 用户同步数据集中的用户,同步后都会打上“系统同步”的标签。当数据集中账号与BI中手动创建的用户账号相同时,则用户同步数据集会覆盖更新手动创建的用户,并打上“系统同步”的标签。

  • 用户同步数据集中存在账户相同的数据行时,该部分账户会更新失败;用户同步数据集中存在邮箱/手机号相同的数据行时,该部分账户会新增失败。

  • 当用户同步数据集中存在账号与BI中手动创建的用户账号不同时,手机号/邮箱相同时,则用户同步数据集中的账号会作为新增账号。(6.5版本生效)   

    • 6.5之前的版本中,当手机号或者邮箱相同时,会提示异常与错误。 

    通过API创建的账户,如果没有放进同步数据集,不会打上系统同步的标签,不会受到账户同步的影响;通过ETL把这部分账号加入同步数据集后,受账户同步影响。

Q&A

  • 手动创建的账号不规范,如何使用账户同步批量自动更新和删除?

    答:用ETL创建用户同步数据集时,把内置数据集 builtin_user 和外部的用户数据集(例如钉钉用户数据集)进行全关联或拼接,使手动创建的账号都存在于同步数据集里,这样同步完成后所有账号都会打上“系统同步”标签,以后用户属性都会按照数据集批量更新;重新修改ETL,通过设置筛选条件筛除不规范账号(或离职账号),再次同步后,不规范的账号(或离职账号)会被批量删除或禁用。