蓝鲸CMDB权限体系从零搭建:独立用户管理、角色授权与SSO落地

做蓝鲸 CMDB 定制开发这几年,我碰到最多的需求不是"加个字段"或者"改个展示",而是权限。默认装完 CMDB 就一个用户,所有操作全走同一个账号,权限粒度粗到没法看。企业一上生产,安全团队第一个问题就是"你们谁能删模型、谁能改实例",答不上来。社区版连用户和角色管理都没有,想接公司统一的 OIDC/OAuth2 做单点登录?得自己从头搭。
我最近花了一个多月,把这套东西从后端到前端完整做了一遍。不是打补丁,是独立模块。今天把过程拆开讲。


做出来之后长什么样
跟原生 CMDB 比,多出来的核心能力有四块:
- **独立的用户管理中心**:创建、编辑、查询、禁用用户,全部在一个页面里完成。不用再去外部系统翻来翻去。
- **角色与权限指派**:自定义角色数量不限。我实际配过「DBA」「网络管理员」「应用负责人」这些角色,每个角色对模型、实例、业务乃至系统功能的增删改查都能单独勾选。
- **OIDC 认证**:原生集成 OpenID Connect 协议,对接 Authing、Okta 这类企业内部统一身份认证服务,单点登录直接跑通。
- **全新前端界面**:Vue.js 技术栈从头写的管理界面,交互逻辑我反复调过,管理员用起来比原生顺手不少。
技术层面到底动了什么
这次定制我判断最核心的难点不在某个单点,而在于它贯穿了整个技术栈。API 服务、数据流、中间件、前端路由、状态管理、容器化部署,每个环节都得动,而且环环相扣。
后端(Golang)
- 新增完整的 User Management 服务模块。coreservice 和 web_server 里写入了超过 2000 行核心逻辑,承接所有用户、角色、权限相关的 API 请求。
- 为对接 OIDC 单独写了 oidc.go 服务,同时重构了 login.go,让它能动态处理多种登录模式。
- 设计了全新的 user_management 数据模型,配套 user_management_init.go 数据库迁移脚本。我踩过一次坑:迁移脚本没做好兼容性处理,灰度环境直接炸了,后来加了回滚逻辑才稳。
前端(Vue.js)
- 新建 user-management 视图目录,包含用户列表、角色管理、权限配置、用户表单等 7 个核心 Vue 组件,总代码量超 1500 行。
- 权限状态比较复杂,我单独拆了 role-permission.js 和 user-management.js 两个 Vuex 模块,专管权限数据的获取、变更与缓存。
- 另外写了 permission.js 工具函数和 v-permission 自定义指令,模板里控制显隐就一行指令的事,比到处写 v-if 干净很多。
运维与部署(Helm)
为了让整套东西在容器化环境里能直接跑,我更新了数十个 Helm Chart 配置文件(values.yaml、configmap.yaml 等),确保新增服务和配置能被 Kubernetes 正确接管。这部分工作量不大但容易漏,漏一个 configmap 字段就是线上 502。
为什么我觉得这事值得做
技术最终得落到业务上。我实测下来,这套东西带来的变化很具体:
- 安全性上,按角色精确授权,遵循最小权限原则,误操作和越权访问的风险被压到很低。
- 效率上,权限划分清晰之后,管理员不用再对着配置文件手动改,日常运维时间省了不少。
- 集成上,跟企业现有认证体系打通后,员工登录流程简化了,审计日志也能统一收口。
如果你也需要类似的东西
我在 CMDB 领域做了几年,从 0 到 1 完整交付过这类项目。如果你这边有进一步的需求——开发全新的业务功能模块、集成企业内部其他系统、深度性能优化与二次开发、或者需要专业的技术咨询——都可以直接找我聊。
📧 邮箱: [email protected]
💬 微信:winnielove2020
B
关于作者 · Alex
我是 Alex,12 年+ 软件架构经验,专注 AI 私有化部署、DevOps 与云原生架构。这里持续分享一线技术实践与职业成长。


