场景需求

openldap-architecture

需求

当公司体量较大,内部有多个系统,如果每个平台都需要维护一个用户管理体系,那么如果一个员工拥有 N 个平台权限离职及常规权限变更,对于的管理无疑也是一个挑战,也无法做到精细化权限管理。比如每次新进或离职一位同事,我们这边 OPS 运维组的小伙伴们,都要在每个系统上去添加用户,搞得小伙伴们很不爽。

简单说一下 OPENLDAP 对运维管理的价值,支撑企业技术发展比如 GIT、 ZABBIX、 YAPI、 JUMPSERVER、 OA 等大大小小系统,乃至 Windows,Linux 系统的认证登录。

通过 LDAP 技术我们可以实现多平台账号集中管理,权限灵活控制,密码强度及其有效期的约束,将用户管理与各个平台解耦,最终实现一次修改 N 处生效。

LDAP 简介

LDAP(轻量级目录访问协议,Lightweight Directory Access Protocol) 是实现提供被称为目录服务的信息服务。目录服务是一种特殊的数据库系统,其专门针对读取,浏览和搜索操作进行了特定的优化。目录一般用来包含描述性的,基于属性的信息并支持精细复杂的过滤能力。目录一般不支持通用数据库针对大量更新操作操作需要的复杂的事务管理或回卷策略。而目录服务的更新则一般都非常简单。这种目录可以存储包括个人信息、web 链结、jpeg 图像等各种信息。为了访问存储在目录中的信息,就需要使用运行在 TCP/IP 之上的访问协议 —LDAP。

LDAP 目录中的信息是是按照树型结构组织,具体信息存储在条目 (entry) 的数据结构中。条目相当于关系数据库中表的记录;条目是具有区别名 DN (Distinguished Name)的属性(Attribute),DN 是用来引用条目的,DN 相当于关系数据库表中的关键字(Primary Key)。属性由类型(Type)和一个或多个值(Values)组成,相当于关系数据库中的字段(Field)由字段名和数据类型组成,只是为了方便检索的需要,LDAP 中的 Type 可以有多个 Value,而不是关系数据库中为降低数据的冗余性要求实现的各个域必须是不相关的。LDAP 中条目的组织一般按照地理位置和组织关系进行组织,非常的直观。LDAP 把数据存放在文件中,为提高效率可以使用基于索引的文件数据库,而不是关系数据库。类型的一个例子就是 mail,其值将是一个电子邮件地址。

OpenLADP 简介

LDAP 具有两个标准,分别是 X.500 和 LDAP。OpenLDAP 是基于 X.500 标准的,而且去除了 X.500 复杂的功能并且可以根据自我需求定制额外扩展功能,但与 X.500 也有不同之处,例如 OpenLDAP 支持 TCP/IP 协议等。

OpenLDAP 可以直接运行在更简单和更通用的 TCP/IP 或其他可靠的传输协议层上,避免了在 OSI 会话层和表示层的开销,使连接的建立和包的处理更简单、更快,对于互联网和企业网应用更理想。

OpenLDAP 目录中的信息是以树状的层次结构来存储数据(这很类同于 DNS),最顶层即根部称作 “基准 DN”,形如 “dc=mydomain,dc=org” 或者 “o=mydomain.org”,前一种方式更为灵活也是 Windows AD 中使用的方式。在根目录的下面有很多的文件和目录,为了把这些大量的数据从逻辑上分开,OpenLDAP 像其它的目录服务协议一样使用 OUOrganization Unit,组织单元),可以用来表示公司内部机构,如部门等,也可以用来表示设备、人员等。同时 OU 还可以有子 OU,用来表示更为细致的分类。

OpenLDAP 中每一条记录都有一个唯一的区别于其它记录的名字 DNDistinguished Name), 其处在 “叶子” 位置的部分称作 RDN (用户条目的相对标识名)。如 dn:cn=tom,ou=animals,dc=ilanni,dc=com 中 cn 即为 RDN,而 RDN 在一个 OU 中必须是唯一的。

OpenLDAP 默认以 Berkeley DB 作为后端数据库,BerkeleyDB 数据库主要以散列的数据类型进行数据存储,如以键值对的方式进行存储。

BerkeleyDB 是一类特殊的面向查询进行优化、面向读取进行优化的数据库,主要用于搜索、浏览、更新查询操作,一般对于一次写入数据、多次查询和搜索有很好的效果。BerkeleyDB 不支持事务型数据库 (MySQL、MariDB、Oracle 等) 所支持的高并发的吞吐量以及复杂的事务操作。

LDAP 简称目录

简称全称(含义)
ccountryName(国家)
dcdomainComponent(域名)
oorganization(组织 - 公司)
ouorganization unit(组织单元 - 部门)
snsuer name(真实名称)
cncommon name(常用名称)