从零开始的Devops-统一身份认证
统一身份认证
单点登录
单点登录:(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
单点登录网络生活中随处可见,比如登录了QQ客户端,然后你可以打开腾讯微博,QQ空间,QQ邮箱,校友录等等一系列的应用,这时候我们不需要在一个个再输入用户名和密码了,作为受信任的站点,就可以直接登录了。这些我们都已经习以为常了,其实这就是单点登录的例子,离我们一点都不遥远。但作为一个开发者,不只是要使用其功能,更要明白其原理并开发出支持单点登录的应用出来。
需求
从个人的角度
入职后每个人会接触多个系统,项目管理系统,需求管理系统,代码仓库,持续集成,文件服务器,有八个系统就有八个密码,每个系统用一个密码安全隐患较大,每个系统都用不同的密码也不容易记住。
从管理角度
公司需要一个统一认证系统,自助分配权限系统,定期审计,集中分配与追踪所有权限,便于记录。没有的后果,操作与安全问题无法追溯,工作效率低。会占用大量人力去添加账户。建议建立统一认证系统与自助分配权限的系统。人员复杂与传统公司不同我们人员不固定流动性较大更需要整体把握与权限,而且需要定期审计。多项目情况下人员变动更为复杂。解决方案通过openldap或者ad进行权限划分配合一定的二次开发,为什么不建议分组分散到各个系统,添加人员与迁移成本非常高。
单点登录 (SSO)
为用户提供一组用户名和密码来登录需要访问的所有应用,让他们的生活更加轻松。无缝集成 Nginx,Ftp,Gitlab,Jenkins,Jira、Confluence 和 Bitbucket 等所有产品,为用户提供单点登录 (SSO) 体验。
集中多个目录
如果公司属于集团或者已有统一认证,windowsad或ldap需要集成多个已有目录,将任意目录组合映射到单个应用(非常适用于管理不在主目录中的用户),然后在同一位置管理身份验证权限。开始使用适用于 AD、LDAP、Microsoft Azure AD、Novell eDirectory 等的连接器。您甚至可以创建自己的自定义连接器。
Ldap协议
市面上只要你能够想像得到的所有工具软件,全部都支持 LDAP协议。比如说你公司要安装一个项目管理工具,那么这个工具几乎必然支持 LDAP协议,你公司要安装一个 bug管理工具,这工具必然也支持 LDAP协议,你公司要安装一套软件版本管理工具,这工具也必然支持 LDAP协议。 LDAP协议的好处就是你公司的所有员工在所有这些工具里共享同一套用户名和密码,来人的时候新增一个用户就能自动访问所有系统,走人的时候一键删除就取消了他对所有系统的访问权限,这就是 LDAP。
LdapServer方案
公司搭建LDAP Server的几个方案。
crowd3
什么是Crowd?
以下是来自官网的介绍:
能够管理来自多个目录(Active Directory、LDAP、OpenLDAP 或 Microsoft Azure AD)的用户,并在一个位置控制应用身份验证权限。
为什么考虑crowd3?
Atlassian产品中最知名的就是confluence和jira。confluence和jira易用性和专业性。收费较高,公司使用不建议使用破解版本。有webui易用性较强。
Freeipa
FreeIPA是一款集成的安全信息管理解决方案。FreeIPA包含Linux (Fedora),389 Directory Server MIT Kerberos, NTP, DNS, Dogtag (Certificate System)等等身份,认证和策略功能。搭建可以用Redhat,Fedora,Centos搭建。有webui但是专业性较强,配置复杂。
Openldap
openLDAP,这个比较著名,yum可以直接安装。openldap开发用c和c++实现的。配置较为复杂为命令式的配置。可以采用docker搭建。无webui使用复杂。可以采用docker搭建,apt搭建,yum搭建,编译搭建。
Appacheds
Appacheds提供客户端与server端。Appacheds为java实现。
WindowsAD
WindowsAD是一个常见方案,Windows Server也是一个常见方案。Windows Ad可以快速通过windows Server搭建统一认证还可以同时管理笔记本。
Ldap客户端方案
PhpLDAPAdmin
是web版本的ldap客户端用web管理较为方便。
Apache Directory Studio
java版本客户端。
LDAP Admin
LdapAdmin是一个常用的客户端界面较为简单。
选型对比后的结果
crowd3收费,openldap过于简陋,freeipa过于复杂。WindowsAD管理windows电脑,Appacheds管理openldap相关认证。
如何寻找
想二次开发的软件
https://en.wikipedia.org/wiki/List_of_LDAP_software
配置ldap
https://blog.csdn.net/helloclei/article/details/83030239
https://my.oschina.net/u/2496664/blog/801996
ldap 安装与配置
https://www.zybuluo.com/daduizhang/note/1378262
http://blog.tomiyo.cn/2019/04/02/Ubuntu安装OpenLDAP并添加用户和用户组/
配置nginx
https://blog.51cto.com/moerjinrong/2287680
反向代理
https://www.freecodecamp.org/news/docker-nginx-letsencrypt-easy-secure-reverse-proxy-40165ba3aee2/
转发ldap
https://blog.51cto.com/moerjinrong/2287680
客户端
https://blog.csdn.net/woloqun/article/details/90212376
nginx挂载
https://blog.csdn.net/ii19910410/article/details/88639320
apacheds
https://github.com/apache/directory-server
crowd3
crowd3安装
freeipa
安装
openldap
所有系统对接同一套认证
https://blog.csdn.net/weixin_34144450/article/details/92345205
如何调试ldap
建议一用ldap客户端直接连接
建议二用jenkins连接ldap填错字段会有返回