蓝鲸配置平台 v3.13.1 权限体系升级解析:细粒度视图权限与业务访问鉴权加固

发布时间:2026/10/15 2:19:05
蓝鲸配置平台 v3.13.1 权限体系升级解析:细粒度视图权限与业务访问鉴权加固 后端企业应用运维【免费下载链接】bk-cmdb蓝鲸智云配置平台(BlueKing CMDB)项目地址https://gitcode.com/gh_mirrors/bk/bk-cmdb点击查看免费下载本文基于蓝鲸智云配置平台BlueKing CMDBv3.13.1 版本的用户变更记录结合仓库源码全面解析本次版本在权限模型上的两项核心变更为“模型”“全文检索”“资源-主机”等六大场景新增细粒度查看权限以及为 7 个主机查询类 ESB 接口接入“业务访问”权限鉴权逻辑。读完本文你将清楚每个新权限对应的权限点 ID、适用场景与源码出处并掌握业务访问鉴权的实现机制及如何通过配置项控制其启用与否。一、版本变更总览v3.13.1发布日期 2023-12-27的用户变更记录分别维护在英文版与中文版两份文件中英文版docs/support-file/changelog_user/en/v3.13.1_2023-12-27.md中文版docs/support-file/changelog_user/ch/v3.13.1_2023-12-27.md本次变更集中在两个方向新增 6 个查看类权限覆盖模型、全文检索、主机池、管控区域、模型拓扑、项目六大功能场景进一步细化“能看/不能看”的控制粒度7 个主机查询接口新增“业务访问”权限鉴权逻辑防止未授权用户跨业务读取主机数据属于一次针对业务数据安全的关键加固。另外还包含若干前端显示问题的修复。二、新增的六个查看类权限详解本次新增的权限全部为View查看类型动作对应权限中心IAM中的独立权限点。以下逐一说明其业务场景并给出仓库中的源码出处。1. 模型查看与模型实例查看模型级别模型查看对应权限点ViewSysModel中文名“模型查看”面向“模型”资源允许用户查看模型定义。在 src/ac/iam/initial_actions.go 中该动作被定义为View类型关联资源类型为SysModel模型并挂载了SysModelSelection实例选择器用于权限中心选择具体模型实例。模型实例查看模型级别将模型实例的查看权限下沉到“模型级别”即权限可以精确到某一个模型下的实例数据而非笼统地按业务授权。从源码结构看这两个权限点共同构建了“模型—模型实例”两级查看控制链ViewSysModel控制模型本身模型级别实例查看权限控制某个模型下实例数据的可见范围。相关资源生成函数可在 src/ac/iam/gen_id.go 中找到模型类资源统一走genModelResource、genModelRelatedResource生成 IAM 资源 ID。2. 全文检索权限面向“全文检索”功能新增独立权限资源类型为FulltextSearch定义于 src/ac/meta/resource.go。全文检索接口为POST /api/v3/find/full_text其权限解析位于 src/ac/parser/topology.go 的fullTextSearch()方法。在本次变更后该接口由无权限控制升级为受“全文检索”权限点管控意味着用户必须拥有该权限才能跨模型全局搜索数据。3. 主机池主机查看面向“资源-主机”模块权限点中文名“主机池主机查看”对应权限点 ID 为ViewResourcePoolHost见 src/ac/iam/initial_actions.go。对应的主机池查询接口为POST /api/v3/hosts/list_resource_pool_hosts权限解析在 src/ac/parser/host.go请求被映射为meta.HostInstance资源上的FindMany动作。新增“主机池主机查看”权限后资源池主机池中主机的查看被单独授权与业务内主机查看权限解耦。4. 管控区域查看面向“资源-管控区域”云区域新增查看权限权限点中文名“管控区域查看”对应权限点 ID 为ViewCloudArea见 src/ac/iam/initial_actions.go。管控区域查询接口为POST /api/v3/findmany/cloudarea权限解析位于 src/ac/parser/topology.go 的cloudArea()方法映射为meta.CloudAreaInstance资源上的FindMany动作。该权限用于控制谁可以查看云区域列表及其下的资源分布。5. 模型拓扑查看面向“模型-模型拓扑”页面新增查看权限权限点中文名“模型拓扑查看”对应权限点 ID 为ViewModelTopo见 src/ac/iam/initial_actions.go。该权限点在 src/ac/iam/initial_actions.go 的genModelTopologyViewActions()中定义ViewModelTopo为View类型不关联具体资源模型拓扑为全局视图同时定义了关联动作EditModelTopologyView“模型拓扑视图编辑”编辑动作以ViewModelTopo为前置依赖RelatedActions: []ActionID{ViewModelTopo}即必须先拥有查看权限才能编辑拓扑视图。对应资源类型ModelTopologymodelTopologyView动作定义于 src/ac/meta/meta.go其 IAM 资源生成函数genModelTopologyViewResource注册于 src/ac/iam/gen_id.go。6. 项目查看面向“资源-项目”新增查看权限权限点中文名“项目查看”对应权限点 ID 为ViewProject见 src/ac/iam/initial_actions.go英文名为 “View Project”定义于 src/ac/iam/initial_actions.go。项目资源类型Projectproject定义于 src/ac/meta/resource.go资源生成函数genProjectResource注册于 src/ac/iam/gen_id.go。项目级权限让平台可以按“项目”维度管理资源可见性与业务Business、业务集BizSet形成多层级资源授权体系。新增权限小结功能场景权限点中文权限点 ID对应资源类型源码位置模型模型查看ViewSysModelSysModelsrc/ac/iam/initial_actions.go模型实例模型实例查看模型级别—模型实例src/ac/iam/gen_id.go全文检索全文检索—FulltextSearchsrc/ac/meta/resource.go资源-主机主机池主机查看ViewResourcePoolHostHostInstancesrc/ac/parser/host.go资源-管控区域管控区域查看ViewCloudAreaCloudAreaInstancesrc/ac/parser/topology.go模型-模型拓扑模型拓扑查看ViewModelTopoModelTopologysrc/ac/iam/initial_actions.go资源-项目项目查看ViewProjectProjectsrc/ac/iam/initial_actions.go说明表中“权限点 ID”以仓库src/ac/iam/initial_actions.go中的ActionIDNameMap定义为准未列出 ID 的权限点在仓库中未见独立 ActionID 常量定义以权限中心最终下发为准。三、7 个接口新增“业务访问”鉴权安全加固详解为保证业务数据安全v3.13.1 为以下 7 个主机查询类 ESB 接口新增了“业务访问”ViewBusinessResource中文名“业务访问”权限鉴权逻辑接口名接口功能实现位置find_module_host_relation按模块查询主机与模块的关联关系src/scene_server/host_server/service/findhost.gofind_host_by_service_template按服务模板查询主机src/scene_server/host_server/service/findhost.gofind_host_by_set_template按集群模板查询主机src/scene_server/host_server/service/findhost.golist_biz_hosts查询业务下主机列表src/scene_server/host_server/service/findhost.golist_biz_hosts_topo查询业务下主机及其拓扑信息src/scene_server/host_server/service/findhost.gofind_host_by_topo按拓扑节点集群/模块等查询主机src/scene_server/host_server/service/findhost.golist_host_total_mainline_topo查询主机在主线拓扑中的完整树src/scene_server/host_server/service/findhost.go1. 鉴权入口authHostUnderBiz上述 7 个接口的鉴权逻辑并非各自实现而是统一收敛到一个公共方法authHostUnderBiz中定义于 src/scene_server/host_server/service/findhost.go。其注释明确说明在空间级权限版本中这 7 个 ESB 接口可以通过配置变量决定是否鉴“业务访问”权限。核心逻辑分三步func (s *Service) authHostUnderBiz(kit *rest.Kit, bizID int64) (*meta.BaseResp, bool) { // 1. 若鉴权未启用AuthManager 未开启直接放行 if !s.AuthManager.Enabled() { return nil, true } // 2. 读取配置 authServer.skipViewBizAuth为 true 时跳过业务访问鉴权 config : authServer.skipViewBizAuth skipAuth, err : cc.Bool(config) if err ! nil { blog.Errorf(get config %s failed, err: %v, rid: %s, config, err, kit.Rid) } if skipAuth { return nil, true } // 3. 构造主机实例 Find 动作的资源属性按业务 ID 发起权限校验 authRes : acMeta.ResourceAttribute{Basic: acMeta.Basic{Type: acMeta.HostInstance, Action: acMeta.Find}, BusinessID: bizID} return s.AuthManager.Authorize(kit, authRes) }调用方式在各接口中保持一致例如FindModuleHostRelationfindhost.go// authorize if resp, authorized : s.authHostUnderBiz(ctx.Kit, bizID); !authorized { ctx.RespNoAuth(resp) return }即鉴权失败时接口直接返回RespNoAuth无权限响应不再继续查询数据。FindHostsByServiceTemplates、FindHostsBySetTemplates、ListBizHosts、ListBizHostsTopo、FindHostsByTopo、ListHostTotalMainlineTopo均在解析bk_biz_id路径参数后、正式查询前调用同一方法见 findhost.go、L319-L322、L396-L399、L549-L552、L702-L705、L1110-L1113。2. 鉴权资源模型authHostUnderBiz构造的资源属性为资源类型meta.HostInstance主机实例动作meta.Find查询业务维度BusinessID: bizID从 URL 路径参数解析而来这意味着校验发生在主机实例 × 查询动作 × 指定业务三个维度上权限中心据此判定调用者是否拥有该业务下的主机查询权限即“业务访问”权限ViewBusinessResource定义于 src/ac/iam/initial_actions.go。从权限解析链看这些 ESB 接口的 URL 在请求进入时会被src/ac/parser/host.go中的正则匹配list_biz_hosts→/api/v3/hosts/app/\d/list_hostsfindBizHostsRegexhost.golist_biz_hosts_topo→/api/v3/hosts/app/\d/list_hosts_topofindBizHostsTopoRegexhost.gofind_host_by_service_template→/api/v3/findmany/hosts/service_templatefindHostsServiceTemplatesPatternhost.gofind_host_by_set_template→/api/v3/findmany/hosts/by_set_templates/biz/\dhost.gofind_host_by_topo→/api/v3/findmany/hosts/by_topo/biz/\dhost.golist_host_total_mainline_topo→/api/v3/findmany/hosts/total_mainline_topo/biz/\dhost.go值得留意的是部分接口如list_biz_hosts、list_biz_hosts_topo在权限解析层被标记为meta.SkipAction跳过动作级校验见 host.go但业务访问鉴权在服务实现层通过authHostUnderBiz兜底完成两道防线共同保障了业务数据隔离。3. 开关配置authServer.skipViewBizAuth本次加固提供了一位可配置的“逃生开关”authServer.skipViewBizAuth。默认值false即默认启用业务访问鉴权配置位置docs/support-file/config/templates/server#conf#common.yamlauthServer 专属配置段L33-L59配置模板中的说明原文如下#auth_server专属配置 authServer: # 空间级权限版本中find_module_host_relation、find_host_by_service_template、find_host_by_set_template、 # list_biz_hosts、list_biz_hosts_topo、find_host_by_topo、list_host_total_mainline_topo这几个上esb接口, # 可以配置不进行业务访问鉴权 skipViewBizAuth: false其读取逻辑对应 findhost.go通过cc.Bool(authServer.skipViewBizAuth)读取若为true则authHostUnderBiz直接返回放行authorizedtrue跳过权限中心校验。配置建议在权限中心已为各业务正确授予“业务访问”权限的正常环境中应保持默认值false让业务数据安全校验完整生效。仅在迁移、灰度或联调阶段需要临时放开时才将其置为true关闭后 7 个接口将不再校验调用方的业务访问权限存在跨业务读数的安全风险。四、前端显示优化本次版本还优化了部分前端显示问题原变更记录描述为“优化了一些前端的显示问题”。该描述在仓库 changelog 中未列出具体条目属于 UI 层细节修复涉及 src/ui 目录下的前端页面。此类改动不影响接口行为与权限模型通常随版本升级自动生效无需额外配置。五、升级与落地建议权限初始化升级到 v3.13.1 后新增的 6 个权限点需要同步到权限中心。CMDB 的权限点初始化逻辑位于 src/ac/iam/initial_actions.go动作列表组装与 src/ac/iam/initial_action_groups.go动作分组升级流程会触发权限数据注册建议在升级后检查权限中心中是否已出现“模型查看”“主机池主机查看”“管控区域查看”“模型拓扑查看”“项目查看”“全文检索”等新权限点。业务访问鉴权验证升级后对list_biz_hosts等 7 个接口做回归测试确认无“业务访问”权限的账号会被拒绝返回无权限响应拥有权限的账号行为与升级前一致。权限授权梳理由于“模型实例查看模型级别”与“主机池主机查看”等权限将授权粒度进一步细化建议管理员按实际最小权限原则重新梳理角色授权避免权限过宽。六、相关源码与文档索引变更记录中文docs/support-file/changelog_user/ch/v3.13.1_2023-12-27.md变更记录英文docs/support-file/changelog_user/en/v3.13.1_2023-12-27.md7 个接口实现与authHostUnderBiz鉴权src/scene_server/host_server/service/findhost.go鉴权开关配置模板docs/support-file/config/templates/server#conf#common.yaml权限动作与权限点定义src/ac/iam/initial_actions.goIAM 资源生成函数注册表src/ac/iam/gen_id.go接口 URL 权限解析主机类src/ac/parser/host.go接口 URL 权限解析全文检索/云区域src/ac/parser/topology.go资源类型与动作类型定义src/ac/meta/resource.go、src/ac/meta/meta.go赞分享后端企业应用运维【免费下载链接】bk-cmdb蓝鲸智云配置平台(BlueKing CMDB)项目地址https://gitcode.com/gh_mirrors/bk/bk-cmdb点击查看免费下载相关推荐bk-cmdb v3.13.1 权限体系升级详解六项新增查看权限与 7 个 ESB 接口的业务访问鉴权bk cmdb v3.13.1 权限体系升级详解六项新增查看权限与 7 个 ESB 接口的业务访问鉴权 bk cmdb蓝鲸智云配置平台在 v3.13.1后端企业应用运维DooTask权限控制细粒度访问权限的配置与管理DooTask权限控制细粒度访问权限的配置与管理 DooTask作为一款开源在线项目任务管理工具提供了强大的权限控制功能让团队能够灵活配置不同层级的访问权后端前端协同办公即时通讯企业应用10分钟录音克隆一个音色RVC变声器训练与推理完整实战10分钟录音克隆一个音色RVC变声器训练与推理完整实战 RVCRetrieval based Voice Conversion WebUI是一个基于 VI人工智能AI 应用语音音频深度学习上一篇godot-blender-exporter核心功能解析从模型到场景一键导出下一篇Theatre构建工具性能优化缓存与并行处理创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询