sso 自动化运维平台

单点登录SSO(Single Sign-On)是身份管理中的一部分。本文中作者开发了一个自动化运维平台中的统一认证接口,单点登录平台通过提供统一的认证平台,实现单点登录。因此,应用系统并不需要开发用户认证程序。

AD:

前言:

在工作中,大大小小开发了不少自动化运维平台,能更好的提高效率以及人工的失误。有朋友问我,登录平台的账号密码如何的管理。当听到这个问题的时候,我说直接入库呀,但是说完后,觉得相当的不妥,最少和我现在解决方案也不一样。

以前做运维开发项目的时候,每个app都是一套用户密码,顶多做了一个加密流转,申请接入的时候,需要领导的邮件审批,后期改成ldap在openldap做认证了。 但是现在不这么搞了。

原因呢?   我相信大家公司肯定都有认证的接口,先说下常见的认证接口有那两种(我就见过这两种,希望朋友补充):

  1. 公司的各个平台通过ldap连入windows ad目录,或者是连入特定的db。  当时这样很不安全,如果我是开发者的话,用户输入用户名和密码的时候,点击登录,我完全可以把账号密码给print出来。
  2. Passport方案,这个算是统一认证,一般是oauth,但是oauth相对麻烦点。大家有时候,要登录论坛的时候,他会提示可以用qq,支付宝,人人的账号登录。  我现在的方案就是类似这种的方法,好!  下面说下,我对这个统一认证的接口使用。

我自己也写过一个 统一认证平台接口,是基于cookie方式的,实现的方法相对简单,但是很有效,安全方面让安全部门测试过,在一定条件下,还是很安全的。在以前公司开发的多个平台也都接入了这个统一认证。


语言:python

框架:tornado

模块:requests,flask-admin,oauth2

组件:redis,mysql

前端:Bootstrap

对于python oauth2的方案,可以看 https://github.com/simplegeo/python-oauth2

  1. 得到授权码code
  2. 获取access token
  3. 通过access token,获取OpenID
  4. 通过access token及OpenID调用API,获取用户授权信息

这里的方案不是oauth2,因为oauth2更多的是给大批的第三方应用设计的,咱们这里只是做passport认证,用oauth2显得不是太合适。

集群平台clusterops clusterops.xiaorui.cc,中心认证passport.xiaorui.cc为例:

  1. 判断用户是否登录,已经在passport登录的话,可以直接访问clusterops,如果没有登录的话,会转跳到 passprot.xiaorui.cc/redirect?urlto=clusterops.xiaorui.cc
  2. 当转跳到 passprot.xiaorui.cc/redirect?urlto=clusterops.xiaorui.cc的时候,会提示用你的域账户和密码登录,登录成功后,会再次转跳到 clusterops.xiaorui.cc/api?res=aqggzwnasdzo9kzwsxedclmcksduwe8sdf0d&Token=F3fQk1eTJWu2XbWHEzuXXJ0KoJeH6O
  3. clusterops接收api接口的res和Token字段数据,用这两个字段以cookie的方式去访问passport.xiaorui.cc/getuserdata?accesstime=时间戳
  4. 统一认证端passport拿到了cookie在redis里面做对比,然后判断access时间,在5分钟之内,符合要求给他return 用户数据,如果不符合,就给他回一个错误数据。
  5. clusterops解析了返回的json数据,把username及一些数据,放到session里面,这样用户就完成了认证及登录。

看这个流程图比较直观点,一般来说我们只是对于web应用做认证接入,认证后,在这个web应用的所有动作权限,都是在web应用本身做的。如果每个应用和连接都再次向认证系统去验证cookie、session,那就会有瓶颈,所以用saml使两个认证服务器做认证通信 !

上面说的只是统一认证方面的,下面再来说说单点登录。

单点登录SSO(Single Sign-On)是身份管理中的一部分。SSO的一种较为通俗的定义是:SSO是指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即通过一个应用中的安全验证后,再访问其他应用中的受保护资源时,不再需要重新登录验证。

开源的sso,也有不少,我用过lemonldap这个websso方案,感觉还不错。

SSO的好处:

方便用户:从用户实际使用角度考虑

用户使用应用系统时,能够一次登录,多次使用。用户不再需要每次输入用户名称和用户密码,也不需要牢记多套用户名称和用户密码。

方便管理员:从日常维护管理角度考虑

系统管理员只需要维护一套统一的用户账号,方便、简单。相比之下,系统管理员以前需要管理很多套的用户账号。每一个应用系统就有一套用户账号,不仅给管理上带来不方便,而且,也容易出现管理漏洞,开发者也不知道用户的账号密码

简化应用系统开发:从应用扩展角度考虑

开发新的应用系统时,可以直接使用单点登录平台的用户认证服务,简化开发流程。单点登录平台通过提供统一的认证平台,实现单点登录。因此,应用系统并不需要开发用户认证程序。

单点登录在这里就很好体现了,只要用户登录了passport统一认证,登录后平台会session标记,只要别的项目指向PassPort认证,那自然而然他们都可以登录了。

另外,我们一定要再开发一套针对统一认证passport的权限控制,不然每个应用都自己控制admin和guest的权限,这样会显得很乱。 这段时间我也配置一套权限管理接口,可以配套在统一认证接口上,权限控制的很细,一个页面,一个菜单,一个动作都可以控制。

欧了,这里是我自己对于运维平台的统计认证,sso单点登录,权限管理的理解。 我相信,我的这篇文章更加适合新手理解,当然肯定也有理解出问题的地方,请大神指正 !

时间: 2024-10-11 11:51:18

sso 自动化运维平台的相关文章

自动化运维平台puppet的高级应用

一.模板的应用 到目前为止,资源申报.定义类.声明类等所有功能都只能一个manifest文件中实现,但这却非有效的基于puppet管理IT资源架构的方式.实践中,一般需要把manifest文件分解成易于理解的结构,例如将类文件.配置文件甚至包括后面讲提到的模板文件等分类存放,并且通过某种机制在必要时将他们整合起来.这种机制即成为"模板",它有助于结构化.层次化的方式使用puppet,而puppet则基于"模块自动装载器"完成模块装载 从另一个角度来说,模板实际上就是

混合云自动化运维平台

https://as.h5con.cn/product/819?_spam=cnblog 为什么选择混合云架构? 图一 为何选择混合云架构? 为什么选择混合云架构这个问题可以拆成两个问题,一是为什么使用公共云?另一个问题就是为什么不完全使用公共云,为什么还保留原来的IDC?采用这种混合云的架构是基于以下几个痛点考虑的: 业务痛点:对于互联网的业务而言,企业必须做到快速响应业务需求,同时互联网业务需求是灵活多变的,传统IDC模式很难保证在短时间内上线一款新的应用.对于公共云来说,其具有的弹性伸缩能

linux自动化运维平台ansible部署

前言 运维的发展方向,集中化,自动化,标准化,虚拟化,分布式.本文展示的就是自动化运维的发展方向的工具:ansible.ansible有很多优点,仅需要ssh和python即可使用,不需要客户端,功能强大,模块丰富,上手容易门槛低,基于python开发,更容易做二次开发. 操作使用环境: [[email protected] ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) 结构拓扑图 安装软件和其他准备工作 可以源

写一个基于saltstack的自动化运维平台

前端只要是采用bootsrap.html和css.用表单和ajax做前后台的数据交换.这里由于我静态框架很差,所以采用的是别人的静态oms开源系统.后端主要运用的是paramiko模块(前期做的批量命令和文件推送.刚学saltstack.后期全部采用saltstack)和saltstack进行资产的自动化收集,这个只是一个前期的小项目,后期慢慢改善.差不多完成了,好好回家过年: 执行命令界面,点击主机列表的时候返回下面的主机信息.用paramiko方式执行批量命令. 批量推送文件界面: 资产管理

自动化运维平台 web端样例

自动化运维平台OMserver部署过程中解决的问题1

https://blog.liuts.com/post/245/1/1/#topreply 记录下来,供自己研究 首先,最好按照博客的步骤来进行. nginx配置文件  /usr/local/nginx/conf/nginx.conf的配置文件 server {         listen       80;         server_name  omserver.domain.com;         #charset koi8-r;         #access_log  logs/

电子书 Python自动化运维:技术与最佳实践.pdf

本书在中国运维领域将有"划时代"的重要意义:一方面,这是国内一本从纵.深和实践角度探讨Python在运维领域应用的著作:一方面本书的作者是中国运维领域的"偶像级"人物,本书是他在天涯社区和腾讯近10年工作经验的结晶.因为作者实战经验丰富,所以能高屋建瓴.直指痛处,围绕Python自动化运维这个主题,不仅详细介绍了系统基础信息.服务监控.数据报表.系统安全等基础模块,而且深入讲解了自动化操作.系统管理.配置管理.集群管理及大数据应用等高级功能.重要的是,完整重现了4个

关于自动化运维的实践×××

谈起自动化运维,现在已经成为运维工作最热门的词语,关于运维自动化本人早在2012年就已经接触了BMC的ITSM系统,将ITIL运维管理体系和自动化运维工具的有效的结合大幅度的提高了运维工作效率.下图为HP提的统一运维自动化理念和运维手册,从目前企业基础架构层来看,运维人员无关乎关心的如下几个方面的自动化. 要了解运维自动化在企业当中应用场景和是否真正能够解决运维团队工作的问题.那我们则需要站到企业运维人员的角度去考虑问题.那么我首先要知道一个企业或者运维团队在规划运维的时候所需要考虑的问题及面临

手游公司运维之利用Rundeck自动化运维工具和Shell脚本构建测试环境代码发布平台和生产环境代码发布平台

在做手游运维工作之前,我接触的代码发布都是常规的软件发布,有固定的发布周期.之前工作的那个外企有严格的发布周期,一年中的所有发布计划都是由Release Manager来控制,每次发布之前都需要做一些准备工作,如填写发布表单,上传发布需要的资源文件,联系发布过程中的相关人员,如开发和测试.最后在公司内部开发的发布平台上按照指定的时间点击鼠标对一个集群内的几台主机或全部主机进行代码发布.这个发布平台还是基于rsync服务实现的.虽然每个星期都有各种服务的发布,但是整个发布流程是可以控制的,并且发布