天天看点

尽可能通用的运维CMDB的设计与实践(III) - 权限管理

作者:运维杂谈

GitHub - veops/cmdb: CMDB: configuration and management of IT resources

权限管理对运维系统来说是极其重要的,因为运维人员是拥有比较高权限的角色,所以运维系统的权限严格管控是至关重要的。比如自动化运维系统要从执行作业、执行目标机器、执行用户3个方面同时去控制权限。

维易开源的CMDB的权限管理经历了3个阶段:

按CI来控制增删改的权限,比如物理机的增删改,这个阶段没有控制CI的读权限,因为CI一般不涉及到敏感数据。

增加CI的读权限,因为有些类型的CI只能开放给部分人看;增加关系权限的控制。

CI权限精细到属性级,用物理机举例,可以对用户A进行这样的授权:开发负责人是用户A,且属性是a、b、c、d的物理机可以被A查看,文章后面会举例说明。

为什么会经历这3个阶段呢?首先当然是场景驱动,其次恰恰与笔者从业经历相关,笔者先后刚好经历了互联网、互联网金融、金融3家不同类型的公司,尤其是金融公司对安全和权限的管控是极其严格的,所以我们做到了属性级的权限控制,这个也许在商业的CMDB里也不一定去实现!

为什么要细粒度到属性级呢?可能很多人认为没必要,因为CMDB里的数据可以不存放敏感的数据,这个也是能在早期建设CMDB可以被将就的一个理由!但是如果从用户侧来讲,可能用户本身都只想看到自己负责的CI,其他的CI对他来讲可能就是冗余的、没有任何意义的脏数据。所以细粒度的权限控制,一个是为了满足需求,另外一个反而是提升了用户体验。总之,只有利没有弊,大不了不用就行了嘛!

讲了这么多,那么下面我们就以维易开源CMDB的权限控制做个简单实践。如下图所示,在每个模型配置的页面里有权限设置的tab,这个页面里明显可以看到分为:

1.模型权限

配置权限表示的是模型可以被编辑,授权权限则是这个模型和实例可以被授权,一般是给管理员才会分配授权的权限。

2.实例权限

包括查看字段,即上面所讲的属性级别的控制;查看实例是指实例的权限控制,增删改这个比较容易理解。

尽可能通用的运维CMDB的设计与实践(III) - 权限管理

查看字段的权限设置如下图所示,默认是全部字段可以被查看,当然可以自定义字段给用户授权,图中授权了8个字段给demo用户角色。

尽可能通用的运维CMDB的设计与实践(III) - 权限管理

查看实例的权限如下图所示,默认也是可以查看所有的CI实例,当然也可以自定义,比如定义物理机里开发负责人是用户自己的,我们可以用双大括号来引用变量,目前支持的变量有user对象。

{{引用变量}}            
尽可能通用的运维CMDB的设计与实践(III) - 权限管理

3.关系权限

在模型关联里可以对CI关系进行授权,主要包括新增、删除和授权的权限控制,这里很容易理解,就不再赘述了。

尽可能通用的运维CMDB的设计与实践(III) - 权限管理

经过上面的权限设置,以demo用户登录CMDB系统,在资源数据视图里查看物理机,结果呈现如下图所示。首先CI列表仅包含了开发负责人是demo的实例,字段仅展示了上面定义的8个属性。

尽可能通用的运维CMDB的设计与实践(III) - 权限管理

END

继续阅读