中小公司员工统一用户认证方案
视频版:
OpenLDAP 企业应用
分享的内容:
- 公司为什么需要统一用户认证?
- 解决用户统一认证都要干哪些事?
- LDAP 都存了哪些员工信息?
- 实现一个简单的用户登陆 API
- OpenLDAP 安全
- OpenLDAP 公司应用架构图
为什么需要统一用户认证?
常遇到的问题:
- GitLab、Jira、Confluence … 各种密码
IT 遇到的问题:
- 内网安全?公司一个 Wi-FI 密码大家都可以连接
- A 员工离职了一堆帐号我要挨个去删
运维遇到的问题:
- VPN、Zabbix、Jenkins …. 各种密码
运营遇到的问题:
- A 业务线,帐号xxx 密码xxx
- B 业务线,帐号xxx 密码xxx
怎么去解决遇到的问题?
LDAP 用户统一认证
运维需要做什么?
- 搭建一套完整的 LDAP 服务,给各个应用分配可以连接 LDAP 的账号
- 配置 GitLab、Jira、Zabbix、Jenkins、VPN …认证走 LDAP
- 对外提供 API 给开发调用(可选)
- 自己开发的运维平台也用 LDAP 认证
- 开发机登陆(ftp、samba、ssh) …
开发需要做什么?
- 开发人员开发的公司内部系统统一走 LDAP 认证
- 主流语言PHP、Python、Java 都有 LDAP 库
IT 需要做什么?
- Wi-FI 认证这块用到 FreeRADIUS,让 Radius 去走 LDAP 认证
- 员工常用信息(手机号、邮箱、部门、IP地址…)全部录到 LDAP 中
- IT 统一维护,方便管理用户信息(办理员工入职、离职)
LDAP组织数据的方式
dn:每一个条目都有一个唯一的标识名(distinguished Name ,DN)
例如:uid=woniu,ou=SRE,dc=51reboot,dc=com
一个普通用户都要存哪些信息?
ObjectClass 是什么?
对象类是属性的集合,LDAP预想了很多人员组织机构中常见的对象,并将其封装成对象类。比如人员(person)含有姓(sn)、名(cn)、电话(telephoneNumber)、密码(userPassword)等属性,单位职工(organizationalPerson)是人员(person)的继承类。
实现一个简单的用户登陆 API
- 了解 LDAP 是怎么登陆?
- 举个常用软件配置的例子 Gitlab
- 知道原理之后,用 Python 实现一个简单的用户登陆API
- 常用服务的配置 SSH
了解 LDAP 是怎么登陆?
- LDAP 需要需创建一个账号给 gitlab 连接使用
- 根据 uid 去查询用户的完整信息,类似于MySQL(select * from
- mysql.user where user=’woniu’)
- 获取DN信息+密码,再去LDAP服务器认证,验证成功,用户就登录了
查看 Gitlab 配置
OpenLDAP 安全
- 密码复杂度(8位大小写数字)
- 密码错误次数锁定用户 (三次错误帐号锁定)
- 密码有效期90天,提前7天邮件通知,超过时间强制修改密码
- 提供重置密码和修改密码接口
开源:http://ltb-project.org/
- 分布式LDAP 是以明文的格式通过网络来发送信息的,包括client访问ldap的密码
- 使用TLS:(Transport Layer Security,传输层安全协议),用于两个应用程序之间提供保密性和数据完整性
- 关掉匿名访问
- VPN (AnyConnect) + GoogleAuthenticator
OpenLDAP 在公司应用的整体架构图
年中快乐!