设为首页 加入收藏

TOP

串讲整理
2019-05-11 02:37:18 】 浏览:46
Tags:串讲 整理
版权声明:copyright by Shannon https://blog.csdn.net/Shannon076/article/details/80951647

1. 背景知识

在运维系统当中,对人的管理是非常重要的一环,同时对各个角色人员的权限进行控制是整个公司各部门,各产品线有条不紊运转的重要前提。

2. Olive是什么

Olive是noah运维平台中对员工进行权限控制的子系统。

3. Olive存在的必要性

以Goat中的机器挂卸载为例,如果任何人都可以不受限制的执行机器挂载的操作,随意变更机器归属信息,随意的对机器进行卸载,那么整个公司组织将无法有效的正常运转,甚至会造成无法挽回的损失

4. 与Olive有交互的系统

凡是需要进行权限控制的系统都会与Olive进行交互

5. Olive中的权限模型

[user, role, node, func]四元组的形式,但是通常对用户而言,func的概念并不是显示的提供的,只要确定了前三者,func就可以固定下来。
* 用户:用户是进行权限控制的主体
* 角色:角色是用户所具有的一种”身份”,比如习大大是主席,主席在这里就是一种角色,而在noah中,对应的角色会有RD-READONLY,OP-ENGINEER等
* 节点:节点是服务树中的概念,Olive依托于服务树来进行权限控制的
* 权限:权限用来表示一个具有xx角色的用户,在某一个服务树节点下,具有xx权限。与各个业务子系统相关联

说明:权限可以随着角色的确定而确定,两者之间存在映射关系,因此在后文中,申请权限==申请角色

6. 权限模型中常见的映射关系

6.1 权限点与各业务子系统对应

  • funcId,sysId

6.2 权限点和节点对应

  • nodeId, funcId, sysId

6.3 权限点和角色对应

  • roleId, funcId, sysId

6.4 节点、角色和用户对应

  • nodeId, roleId, userId

7. 权限具有的特性

  • 继承性:所谓继承性,指的是usr在上一级节点node上具有某某权限,那么在node的所有子孙节点上,会继承该权限
  • 模板化:每个角色role在指定的节点node上都会关联一些默认的权限func,在EditNodeFuncForm
  • 差异性:同一个角色role在不同节点node上,具有的权限func是不同的。因为一些特殊节点的存在,比如BAIDU_QA/RD等,这些节点是没有OP角色的,RDQA-MANAGER具有审批权限,表PriviNodeRoleFunc中维护

服务树:服务树一种对百度整个公司组织结构进行抽象表示的多叉树结构。按照各公司实体之间的包含关系,组成一个庞大的树形结构。

8. Olive处理的业务场景

8.1 添加权限

添加权限的操作,常见的操作是:为user在在node下添加role。
* 对各个系统的token进行校验
* 执行添加操作,如果数据库表已经存在,直接continue;否则,执行插入操作
* 通知JMS,将此次变更操作通知消息队列

8.2 删除权限

删除操作与添加操作一致

8.3 查询权限

常见的查询有:
* 根据user和node => role
* 根据role和node => user
* 根据user和role => node

通常在查询权限的时候,需要注意的是,权限的继承性!
比如查询某user在olive节点上是否具有某个角色role,需要向上查询,如果user在noah节点上具有role,那么在olive上一样也具有role角色。

8.4 申请权限

申请权限指的是,用户在指定的节点上申请一个角色

执行过程
* 用户通过noah首页个人中心点击”申请权限”,列出可供选择的节点
* 用户选择要申请权限的服务树节点
* 根据节点id和申请的角色类型(OP,RD,QA),提供给用户可供选择的角色列表
* 获取申请节点所对应的审批人
* 选择审批人,创建申请流程,等待审批

其他说明
* BAIDU节点不能申请权限
* BAIDU_RD、BAIDU_QA、BAIDU_RDQA节点无OP角色权限
* 不同类型的节点具有的可申请权限是不同的,线上节点,线下节点,特殊节点

8.5 从UIC同步用户信息

  • 使用soap协议获取所有uic的用户信息uicUserInfos
  • insert或者update noah这边的user信息
  • 获取所有noah的用户信息noahUserInfos
  • 对uicUserInfos和noahUserInfos对差集,结果为已经删除的用户信息
  • email通知相关负责人
  • 更新noah这边的DoorGod、User和riviNodeRoleUser表

8.6 权限点的sysId

  • 3 运维树
  • 4 监控系统
  • 5 数据备份
  • 6 问题管理
  • 7 机器管理
  • 8 预算管理
  • 9 部署管理系统


Func权限点是与各个业务子系统绑定的,通过sysId进行标识。常见的业务子系统有运维树(这是我经常接触到的权限,基本都是运维树的权限)

9. 暂时存在的问题

9.1 添加权限的接口

添加权限的接口中,只有各个系统的provider和token,但是具体操作的时候,是个人去操作的,一旦出现问题,无法追查到具体操作人

9.2 与其他系统交互

  • 权限变更之后,通知JMS
  • 在Goat模块中,进行权限查询的OliveCaller中,处理比较混乱。具体体现在:
    • 有的是使用soap协议与Olive模块进行交互
    • 有的是直接查询Olive中的数据库表,在Goat模块中,出现Olive的表是否合理
    • 各系统之间的耦合
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Dockerfile命令说明 下一篇几种不同的转换----形式语言与自..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目