基于OpenLDAP的企业统一用户SaaS的设计与实现

叶光芳,肖兴楷

赣州银行股份有限公司,江西赣州,341001

运行维护工作的目标是保证生产系统的安全稳定运行,这是一个繁杂的过程,涉及各式各样工具与系统平台的使用,而每个系统都拥有各自的用户管理与认证功能。随着系统不断增加,用户信息的管理成本也不断提高,此时容易出现多个系统之间用户信息冗余、信息不同步的问题。对于运维工作人员而言,记忆众多系统的账号和口令十分繁杂且容易出错。为了解决此类问题,我们开始探索搭建企业内部的OpenLDAP,并结合腾讯蓝鲸智云PaaS平台开发一个SaaS应用进行管理。

软件即服务是来自英文Software-as-a-Service,简称SaaS。蓝鲸智云是腾讯对外开放的一套运维解决方案。这套解决方案永久免费,并且支持私有云部署,我们的企业内部就是运用了该方案进行蓝鲸PaaS平台的私有云部署。该平台为一个SaaS应用从创建到部署、再到后续的维护管理提供了完善的自动化和自助化服务,本文所介绍的统一用户SaaS应用(下文简称SaaS)就是在该平台上进行开发部署的。

LDAP(lightweight directory access protocol)即轻量目录访问协议,这是一种标准的目录服务技术[1],由密歇根州(Michigan)大学推出的基于TCP/IP协议的LDAP协议。该协议对于Internet访问的支持非常好,并且它还为浏览和查找目录以及内容读取提供了专门的优化,使得读取速度比一般的关系数据库要快得多[2]。OpenLDAP软件是LDAP协议的开源实现,可以与Zabbix、Apache、OpenVPN等众多应用系统集成[3],本文所阐述的SaaS即是基于OpenLDAP进行设计与开发。

首先我们需要搭建LDAP服务,安装OpenLDAP服务端,修改相关配置,按照设计的字段新建用户进行测试。字段设计见表1。

表1 新建用户字段

用户通过浏览器客户端输入账户密码来登录应用系统,相应系统会请求LDAP服务器获取数据库存储的账号及密码信息进行验证,验证通过即可成功进入系统,认证过程如图1所示。

图1 认证过程

4.1 总体框架结构

在完成LDAP服务搭建后,可以发现通过命令行创建用户的方法极为复杂,相关的管理操作同样复杂。此时大多数用户会使用工具phpldapadmin进行管理,该工具将原本需要进行命令行操作的过程转变为图形化操作,但是该工具的设计对于我们来说不够简洁、易用,这也是制作一个SaaS应用进行LDAP管理的原因之一。本SaaS应用的总体框架结构如图2所示,接下来将对其进行详细说明。

图2 SaaS应用的总体框架结构

4.2 数据来源

企业内部有HR系统对员工信息进行管理,每天会对组织架构和人员信息进行卸数(抽取、转换、加载)成为文本文件,放置在文件交换服务器中。我们通过调用蓝鲸作业平台快速分发文件API,将该卸数文件传输到我们的SaaS服务器上,确认传输成功后,将文件进行解析并入库,如图3所示。通过celery设定定时任务,每日定时进行上述操作,从而保证数据的每日同步。

图3 数据传输流程

4.3 LDAP目录树设计

LDAP目录服务器对于信息的存储以及目录服务,主要是通过目录数据库来进行的。为了能够使用户对信息进行快速查找和定位,目录数据库对于数据的存储主要是用树状的层次结构[4]。本SaaS用户认证信息的LDAP目录服务器存储模型的目录树结构如图4所示。

图4 LDAP目录服务器存储模型的目录树结构

4.4 SaaS功能模块设计

4.4.1 管理员批量开通LDAP账号

为员工开通LDAP账户,设置默认密码为员工身份证号后六位。前端设计为可以批量操作,也可以选择自动开通某个部门所有员工的LDAP账户,当该部门有新员工加入时会触发自动开通,并发送邮件告知新员工。

4.4.2 用户自助开通LDAP账号

企业员工数量众多,每一个员工可能在不同的时间需要开通账号,如果都通过管理员开通账号,效率是非常低的。因此我们设计了一个自助操作页面,员工可以自行操作。通过匹配员工的工号与手机号,即可获取短信验证码,进行开通账户的操作。这将大大降低管理员的工作量,避免低效重复地工作。

4.4.3 用户LDAP账户的修改与删除

LDAP账户的各个属性中,大多是由HR系统的数据进行同步,可以人工修改设置的只有密码属性。在自助操作页面中也提供了重置密码功能,使用匹配的工号与手机号获取验证码,可以填写自定义密码,也可以不填写则默认身份证号后六位。当有员工离职时,在每日同步数据的过程中会将此类员工的LDAP账号删除,管理员也可以手动删除LDAP账号。

4.4.4 扩展功能

公司的企业微信账号管理,原先是通过企业微信后台进行手工管理,初始化导入一批新增的用户时,需手动维护部门、手机号、邮箱等信息,且原始账户ID设置为姓名拼音,可能会出现重名的情况。当有员工离职时,也需要手工操作删除,如此管理账号,容易出错的同时也不易于数据同步管理。本SaaS已对接员工的基本信息,将企业微信用户的管理放在本SaaS中,并不需要大幅度改动SaaS的结构,还能够改善上面提到的问题。

目前的扩展功能主要是完成企业微信用户的新增与删除操作。通过调用企业微信提供的API新建用户与部门,新开通的账号ID使用员工号,并将现存的企业微信用户同步到SaaS后端。当有员工离职时,将自动删除其企业微信。为了统一开通企业微信账号的入口,我们将企业微信端的申请加入设置为“不允许加入”,只能通过本SaaS,避免出现两端数据不同步。

4.5 对接运维系统方案

本SaaS用于管理LDAP账户,用户需要在已接入LDAP的系统中才能使用,接下来将以蓝鲸平台为例介绍如何对接运维系统。蓝鲸平台从6.0版本开始支持OpenLDAP目录,只需要通过蓝鲸用户管理SaaS进行用户目录的相关配置,即可同步LDAP用户至蓝鲸。此过程中,需注意以下几个问题。

4.5.1 HR系统提供的数据不全面

在我们企业的ITSM流程中,组织架构细化至团队层级,需要获得每个员工的直接上级信息;
但在HR系统中,组织架构仅细化至部门中心层级,也没有直接上级信息。因此,我们对SaaS进行了小改动:①组织架构表新增负责人字段,即属于该组织的员工,其直接上级为该组织负责人;
②添加新增与编辑组织架构的功能,即可以在部门中心层级下新增团队层级并自由调整人员。ITSM流程问题解决的同时,还需要确保每日的数据同步正确,即同步时不会将我们在SaaS上新增的组织架构及调整之后的员工信息恢复至HR系统的架构,同时确保员工在更换部门时能够将信息正常同步至SaaS。

4.5.2 蓝鲸6.0的用户目录同步不支持自定义字段

在当前版本中,企业微信ID、直接上级都无法通过用户目录从OpenLDAP直接同步至蓝鲸。由于SaaS和蓝鲸用户管理的数据库在同一个MySQL中,于是我们在SaaS中添加定时任务,通过脚本直接修改蓝鲸用户管理数据库中的数据,将企业微信ID与直接上级插入数据库中。

4.5.3 新LDAP账号与系统原有账号之间的过渡

本SaaS上线后,为蓝鲸本地目录的用户都开通了新的LDAP账号,原本用户具有自己管理的系统业务对应权限,但此时新账号是没有相应权限的,这里我们需要通过脚本进行权限同步:①同步权限中心用户组,遍历所有本地用户信息,通过姓名获取工号和LDAP账号,若该LDAP账号存在便将其加入对应原始账号所属的用户组中;
②更新CMDB的维护人信息,通过API更新业务信息,两个账号同步使用一段时间确定没有问题后,即可将老账户停用,完成过渡。

至此,蓝鲸平台接入LDAP用户体系顺利完成,之后陆续对接了Zabbix、Grafana、知识库等运维管理系统,对接方案大同小异。

上述方案充分利用了蓝鲸PaaS平台提供的良好的SaaS应用开发环境以及LDAP协议所具有的相关特性,企业中原本分散的员工账号信息在本SaaS中得到集中管理,通过一个SaaS即可拥有最全、最准确的员工信息、LDAP账号信息、企业微信账号等各类信息。同时,只需记忆一个LDAP账号与口令,就可以简化众多运维系统的信息管理维护过程,使得用户使用各运维系统的便利性大大提高,进而提高运维人员的工作效率。得益于蓝鲸PaaS平台的良好支持,本SaaS应用轻便,总体功能较为简单,具有较好的可扩展性。例如,我们后续开发了发送企业微信通知等信息的API接口,通过工号即可快速发送消息,无需再查询企业微信ID或考虑发送消息的具体实现。本SaaS充分利用了统一信息管理的优势,起到了降低运维系统信息维护难度、集中统一管理用户的作用。

猜你喜欢 蓝鲸账号微信 蓝鲸也要七十二变小哥白尼(野生动物)(2022年2期)2022-06-01玩游戏没账号租一个就行电脑爱好者(2021年24期)2021-09-09施诈计骗走游戏账号派出所工作(2021年4期)2021-05-17在母亲的身旁,庞然大物也会变成小可爱爱你·阳光少年(2018年4期)2018-05-14蓝鲸的眼睛作文周刊·小学三年级版(2016年20期)2017-05-26微信中国信息化周报(2016年47期)2017-03-25Google Play游戏取消账号绑定没有Google账号也能玩CHIP新电脑(2016年3期)2016-03-10微信中国信息化周报(2015年28期)2015-08-06微信中国信息化周报(2015年13期)2015-06-01给骗子汇款小小说月刊(2010年6期)2010-11-22