夜莺二次开发指南 - 用户资源中心
前言
本系列将对夜莺平台各个模块的主要逻辑进行介绍,方便大家进行二次开发,本篇是系列的第四篇,用户资源中心模块
首先贴下夜莺的项目地址和架构图,正在使用夜莺的读者欢迎给夜莺加一个 star
github 地址 https://github.com/didi/nightingale
v3.0 架构图如下
本节主要讲解用户资源中心的 RDB 模块,RDB 模块是夜莺平台的基座,提供了用户信息、组织资源树、用户权限等功能,关于功能的介绍可以到 bilibili 观看视频,这些功能的实现都比较简单,大家可以直接看 http/router.go 的代码 ,里面列举了 rdb 的所有 http 接口,本篇主要介绍下第三方系统如何来接入夜莺平台
用户认证接入
夜莺提供了一套完整的用户体系,其他系统可以通过接入夜莺的用户认证来复用夜莺的用户体系。下面介绍一下接入用户认证的流程
首先待接入系统 A 和夜莺平台的 cookie 要可以复用
当用户在夜莺平台登录之后,会把和用户相关的 sessionId 写入到 cookie 中,当用户再访问接入系统 A 时,系统 A 从 cookie 里可以拿到 sessionId,cookie 的 key 为 ecmc-sid
通过调研 rdb 提供的接口,查询用户的用户名,如果能查询说明用户是合法的而且已经登录了,如果查不到则说明用户没有登陆,可以让前端将页面跳转到夜莺的登陆页面
根据 sessionId 查询用户信息的接口如下
关于用户信息这里展开说一下,首先看下用户的数据结构
User 数据结构中提供了一个 LeaderId 字段,可以设置用户 leader 是谁,这样就具备了简单的企业组织结构的表达能力,在一些审批和升级事件中可以使用这个字段,User 数据结构中还有一个 Organization 字段,所以可以根据 LeaderId 和 Organization 绘制出公司的人员组织结构,大家有需要可以自己实现这个功能。
资源接入
夜莺使用组织资源树的方式来管理资源,夜莺平台的用户权限、告警策略、采集策略都是基于组织资源树来设计的。夜莺的目标是成为基础架构平台底座,让大家可以基于夜莺开发适合公司自己的基础平台。所以为了可以让各种 PAAS 类平台接入到夜莺平台,我们抽象了租户和项目两个特殊的节点类别。简单的节点组织方式可以为:租户--->项目--->模块,复杂一点的可以是:租户--->组织--->项目--->模块--->集群。
下面介绍下,第三方系统如何把资源自动注册到夜莺平台,夜莺提供了专门的资源注册和销毁的接口
拿 RDS 平台接入夜莺举例,RDS 平台需要把用户创建的 RDS 实例和夜莺的项目节点绑定起来,夜莺提供了 /tree/projs 的接口,只展示用户拥有权限的项目节点,RDS 平台的前端页面可以调用这个接口,在用户创建 RDS 实例时,先让用户选择项目节点,这样就可以把实例和项目节点关联起来,等实例创建好之后,RDS 平台可以调用夜莺的资源注册接口,把 RDS 资源注册到夜莺的服务树上面。下面是 rds 注册到 rdb 之后的截图
通过这种方式,RDS 平台可以直接复用夜莺的权限管理能力和告警监控能力,将 RDS 实例的英文标识作为 endpoint 上报监控到夜莺之后,可以直接在夜莺平台查看监控和配置告警。
权限接入
通过上文 RDS 平台将资源绑定到节点之后,就可以复用夜莺的权限管理体系了,夜莺提供了两类页面,一类是页面角色,一类是资源角色。
如果系统有些页面或者按钮只可以给管理员看到,不能让普通用户看到,这个时候可以使用页面角色来配置权限
资源角色在涉及到某些资源相关的操作权限时使用,首先资源角色在配置的时候,需要框定一个范围,这个范围就是服务节点,也就是上文提到的项目节点,通过在某个项目节点给某个用户赋予某个角色,来控制该用户是否有权限来对 RDS 资源进行操作。
下面介绍下集成步骤
待接入的平台要梳理自己的业务,看哪些页面/操作需要受权限管控,每个页面/操作用一个权限点表示(底层实现是一个字符串,比如 rds_instance_write 表示 RDS 平台对项目下资源的写操作权限)
根据平台的使用场景,创建相关的角色并配置好权限点
当用户在接入的平台操作时,比如在某个项目下创建 rds 实例,可以根据项目 id+用户名+权限点调用 rdb 的权限校验接口,来校验用户是否有权限做此操作,查询样例如下
本篇文章到此就结束了,下篇将为大家介绍资产管理平台(AMS)模块
作者简介
秦叶宁 企业级开源运维平台 Nightingale 主程,Urlooker 作者,现负责滴滴私有云运维产品方向的工作,如有运维平台的搭建需求,欢迎与我联系:)
版权声明: 本文为 InfoQ 作者【qinyening】的原创文章。
原文链接:【http://xie.infoq.cn/article/911dcd8561effca48233a28ee】。文章转载请联系作者。
评论