Skip to content

Releases: TencentBlueKing/bk-cmdb

v3.13.1

28 Dec 01:41
16fb132
Compare
Choose a tag to compare

新增功能

  • 新增空间级查看权限控制能力(请注意版本依赖:IAM SaaS >= 1.10.17)

功能优化

  • 优化了一些前端的显示问题

cmdb - 模型级别权限(空间级权限)

一、 概述

在过去的版本中,为了让用户能够更方便、快捷地使用CMDB产品,尽可能地减少了操作的复杂性,提高企业团队间的信息沟通效率,我们对资源并未设计查看权限功能,这可以让用户在使用过程中更加轻松,不需要经过繁琐的权限申请与审批流程。但随着企业信息安全需求的不断提升,我们的CMDB产品也需要不断改进和升级,以满足客户在资源管理和信息安全方面的需求。为了更好地保护企业信息,我们决定在新版本的CMDB产品中增强对资源、模型的权限控制功能。
在模型级别权限新版本(后称空间级权限)的CMDB中,我们对资源、模型增加了若干权限,用户需要申请对应的资源列表查看权限才能查看具体的资源实例、模型详情。这将有助于确保敏感数据只能被授权的用户访问,从而降低企业信息泄露的风险。为了帮助大家顺利地完成版本升级,我们将在这份版本升级指引,详细介绍了升级过程中需要注意的事项和操作步骤。我们希望通过这次升级,能够满足大家对于权限方面的需求,保证数据安全。

二、风险

  • 风险一:新增的操作权限
    空间级权限版本(v3.13.1)增加了若干个操作权限,分别是:
    • 全文检索
    • 主机池主机查看
    • 管控区域查看
    • 模型拓扑查看
    • 项目查看
    • 模型查看
    • 自定义模型实例查看
      这些操作权限的详细可在第四章节查看。空间级权限版本前以上对应的操作均是无需鉴权的,升级后用户需要拥有对应的操作权限才能正常使用对应的功能。所以您需要评估你的企业中哪些人员应该需要具备哪些权限更为合理。
  • 风险二:部分API增加了“业务访问”鉴权逻辑
    空间级权限版本(v3.13.1)对部分API增加了“业务访问”鉴权逻辑,这些API分别是:
    • 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
      这些增加“业务访问”鉴权逻辑的API的详细可在第五章节查看。涉及到的接口之前不需要权限即可获取到数据。本次版本升级后,接口需要有“业务访问”才可进行调用。所以您需要梳理哪些第三方平台或者用户调用的这些接口,及时给他们赋予权限,若梳理有误或者缺少这个步骤,在更新这个版本后,第三方平台可能会由于没有权限调用失败,进而引发线上故障!
      这里特别强调一下,用户在使用这些接口时可能存在两种场景:
    • 场景一:第三方平台以平台身份调用这些API,您需要关注的也主要是这个场景。比如:一个负责主机状态巡检的SA应用,它在后台定时任务中以平台身份获取CMDB中所有业务下的主机。这种场景以某个真实用户的身份调用API是不合适的,因为这个人员可能存在有工作职责变动的可能性。所以针对这一场景,我们建议您在用户管理中创建一个“虚拟账户”,并在权限中心中为这个虚拟账户赋予“所需的业务访问”权限。
    • 场景二:第三方平台的用户以用户身份调用了这些API。比如:一个负责主机状态巡检的SA应用,一个业务的运维人员需要在应用中对自己业务下的主机进行操作。这种场景需要以这个真实用户的身份调用API。针对这一场景,如果升级后用户发现没有相应的操作权限,我们建议让用户在权限中心申请“配置平台-业务访问-{负责的业务}”权限,从而保证这个人员的权限是可被管理的。

三、升级相关的权限处理方案

  1. 建议提前2~3个月,扫描esb日志,梳理出本次迭代加了权限的接口的调用方有哪些。通过本步骤确认出风险影响方,由影响方评估其是否需要“使用虚拟账户来调用”。扫描esb日志工具请参考第七章节
  2. 对于新增的操作权限,如您需让用户保持原有的体验,可采用以下两种方式:
    • 方式一(推荐):在权限中心创建管理空间和用户组,将本次版本新增的权限通过用户组方式授予用户。操作方式请参考第八章节
    • 方式二:对于新增的权限点,通过权限工具(见附件),给调用方赋予本次新增的全部权限点。
  3. 对于部分API增加了“业务访问”鉴权逻辑,您需要采取以下措施:
    3.1 根据风险一影响方,让调用者评估出行为是“平台调用”还是“个人调用”
    3.2 “平台调用”请采用“创建虚拟账户”方式解决,“创建虚拟账户”方式如下:
    - 在用户管理中,创建“虚拟账户”;
    - 在权限中心中,为“虚拟账户”授予“配置平台-业务访问-{负责的业务}”;
    - 为app_code和接口开启“免用户认证应用白名单”(参考:https://bk.tencent.com/s-mart/community/question/11338?type=answer);
    - 在调用API时,payload中bk_username填写为“虚拟账户”;
    3.3 “用户调用”场景,需用户自行在权限中申请“配置平台-业务访问-{负责的业务}”权限

四、新增的权限

权限名称
全文检索
主机池主机查看
项目查看
管控区域查看
模型拓扑查看
模型查看
自定义模型实例查看

五、涉及修改的API

ESB接口名
find_module_host_relation
find_host_by_service_template
find_host_by_set_template
list_resource_pool_hosts
list_biz_hosts
list_biz_hosts_topo
find_host_by_topo
list_host_total_mainline_topo
list_hosts_without_biz
list_host_detail_topology
find_host_relations_with_topo
find_host_service_template
search_cloud_area
find_host_topo_relation
search_objects
search_object_attribute
find_object_association
find_instance_association
search_related_inst_asso
search_instance_associations
search_object_instances
list_project
list_quoted_inst

六、回滚方案

二进制环境

  1. 替换为之前不带「空间级权限」的二进制

  2. 调用cmdb注册权限的接口进行重新注册权限点,如下操作:

curl -X POST -H 'Content-Type:application/json' -H 'BK_USER:migrate' -H 'HTTP_BLUEKING_SUPPLIER_ID:0'  --data '{"host": "http://"authserver ip":"authserver port"}' http://"adminserver ip":"adminserver port"/migrate/v3/authcenter/init

容器化环境

替换为之前不带「空间级权限」的helm chart,正常情况会默认跑job进行重新注册权限点的操作

注意点

如果用户申请了本次空间级权限新加的查看权限,那么回滚完之后,这些权限会消失,后续再更新到空间级权限版本,用户需要重新申请权限

七、配置日志采集器收集 ESB 调用记录

二进制环境

  1. 配置日志采集
    • 新建日志采集,文件路径为:/data/bkce/logs/open_paas/esb_api.log*
      image
    • 采集目标可以选择动态拓扑
      image
    • 字段清洗选择“JSON”,然后点击“调试”
      image
    • 类型为空的字段,请补充设置,如:
      image
    • 过期时间:180天(按需选择)
    • [可选]调整 ES 集群的最大过期时间
      image
      image
  2. 数据检索
  • 导入仪表盘,通过 json 导入
    image
    • 观察调用记录,推动对应调用方适配
      image
  • 仪表盘 json
{
  "annotations": {
    "list": [
      {
        "builtIn": 1,
        "datasource": "-- Grafana --",
        "enable": true,
        "hide": true,
        "iconColor": "rgba(0, 211, 255, 1)",
        "name": "Annotations & Alerts",
        "target": {
          "limit": 100,
          "matchAny": false,
          "tags": [],
          "type": "dashboard"
        },
        "type": "dashboard"
      }
    ]
  },
  "editable": true,
  "gnetId": null,
  "graphTooltip": 0,
  "id": 5,
  "links": [],
  "panels": [
    {
      "datasource": null,
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "palette-classic"
          },
          "custom": {
            "axisLabel": "",
            "axisPlacement": "auto",
            "barAlignment": 0,
            "drawStyle": "line",
            "fillOpacity": 0,
            "gradientMode": "none",
            "hideFrom": {
              "legend": false,
              "tooltip": false,
              "viz": false
            },
            "lineInterpolation": "smooth",
            "lineWidth": 1,
            "pointSize": 10,
            "scaleDistribution": {
              "type": "linear"
            },
            "showPoints": "always",
            "spanNulls": true,
            "stacking": {
              "group": "A",
              "mode": "none"
            },
            "thresholdsStyle": {
              "mode": "off"
            }
          },
          "mappings": [],
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "green",
                "value": null
              },
              {
                "color": "red",
                "value": 80
              }
            ]
          }
        },
        "overrides": []
      },
      "gridPos": {
        "h": 18,
        "w": 24,
        "x": 0,
        "y": 0
      },
      "id": 2,
      "interval": null,
      "options": {
        "legend": {
          "calcs": [],
          "displayMode": "list",
          "placement": "bottom"
        },
        "tooltip": {
          "mode": "multi"
        }
      },
      "targets": [
        {
          "data": {
            "alias": "list_biz_hosts(调用者:$tag_req_app_code)",
            "conditions": [],
            "dimensions": [
              "req_app_code"
            ],
            "index": {
              "id": [
                "host_process",
                33
              ],
              "labels": [
                "进程",
                "[采集项]bkapigateway_esb_container_container"
              ]
            },
            "method": "value_count",
            "metric": "req_status",
            "period": 86400,
            "periodUnitSet": {
              "periodUnit": "min",
              "timeNum": 1440
            },
            "queryString": "req_component_name: list_biz_hosts",
            "size": 50,
            "target": {
              "expandKeys": [],
              "realValues...
Read more

v3.12.4

19 Dec 11:40
bba9c50
Compare
Choose a tag to compare

功能优化

  • 优化了一些前端的显示问题
  • 修改文档中心默认首页的地址
  • 采用认证信息标准化方案调用esb API
  • 更新bkDesktopUrl配置为bkComponentApiUrl配置

缺陷修复

  • 修复设置agentID缓存数据错误问题
  • 添加job资源限制
  • 修复add_host_to_business_idle接口鉴权问题

v3.11.3

19 Dec 09:58
75d6087
Compare
Choose a tag to compare

功能优化

  • 优化了一些前端的显示问题
  • 调整job消失时间和运行时机
  • 表格字段模型不注册到权限中心
  • 调整主机磁盘容量计算方式
  • 寻址方式国际化处理

缺陷修复

  • 修复设置agentID缓存数据错误问题
  • 修复map类型不一致导致索引重复创建的问题
  • 修复删除redis数据失败导致数据积压的问题
  • 修复创建模型时偶现的注册权限中心重复的问题
  • 修复导入实例超过100条时报错导入重复的问题
  • 修复导出数据相关问题
  • 修复某些审计记录和查询失败的问题
  • 修复模型属性字段excel导入时报错信息不规范问题
  • 修复模型属性字段excel中日期/时间/用户/时区/列表这四个字段没做任何变动导入时报错问题
  • 修复add_host_to_business_idle接口鉴权问题

v3.12.2

30 Oct 07:27
4bcd131
Compare
Choose a tag to compare

功能优化

  • 优化了一些前端的显示问题
  • 容器节点字段名称补充
  • pod添加负责人字段
  • 调整job消失时间和运行时机

缺陷修复

  • 修复导入实例超过100条时报错导入重复的问题
  • 修复删除redis数据失败导致数据积压的问题
  • 修复容器接口鉴权问题

v3.12.1

10 Oct 07:03
d7c4d4d
Compare
Choose a tag to compare

新增功能

  • 容器数据纳管功能

缺陷修复

  • 修复map类型不一致导致索引重复创建的问题

v3.11.2

20 Sep 09:37
f530976
Compare
Choose a tag to compare

功能优化

  • 优化了一些前端的显示问题
  • excel导入导出重构
  • 代码复杂度优化
  • 将后端代码模型option的解析和校验逻辑统一为一套
  • 删除模块和服务模板时,自动删除模块和模版上的主机自动应用
  • 调整chart探针默认配置
  • 主机身份下发时,对安装1.0agent的window机器的文件owner特殊处理

v3.11.1

04 Aug 14:12
7581141
Compare
Choose a tag to compare

新增功能

  • 支持登录应用访问限制功能
  • 新增字段组合模版功能
  • 新增支持ipv6特性功能
  • 新增支持表格字段功能
  • 新增模型属性字段支持添加默认值的功能
  • 模型字段新增枚举多选
  • 新增对于云区域资源的watch功能
  • 导航中添加语言切换功能
  • 新增获取推送主机身份结果接口
  • 新增项目模型功能

功能优化

  • 优化了一些前端的显示问题
  • 云区域专有名词优化
  • 调整调用gse的thrift接口证书
  • 组织类型字段支持多选
  • 新增首页展示版本日志功能
  • 创建数据库索引时兼容已经创建过的重复索引
  • 优化主机磁盘容量的计算方式
  • 云主机接口支持根据云供应商+云主机ID判断主机是否需要更新

缺陷修复

  • 修复集群模版实例展示列表总数错误的问题
  • 修复当不传模块ID时,服务实例查询接口查询失败的问题
  • 修复无法通过excel导入模型的问题
  • 修复当组织字段存在场景下,提示数据不存在的问题
  • 修复新旧dataid向gse注册streamTo时互相影响的问题
  • 修复删除模型属性字段场景下错误的获取主机自动应用规则的问题
  • 修复更新服务模板接口校验名称按之前的名称校验的问题
  • 修复调整模型字段接口业务自定义字段未按照业务判断的问题
  • 修复导出用户数据时,临界数据丢失问题
  • 修复创建字段分组不存在时没有创建默认分组的问题
  • 修复excel导入关联关系时,未对关联关系映射进行校验的问题
  • 修复用自定义拓扑的实例id查询主机时, 如果没有查到自定义拓扑实例导致查询死循环的问题
  • 修复cmdb多环境场景下会概率性出现循环登陆问题
  • 修复全文检索场景极小概率panic问题
  • 修复进程模版相关接口鉴权时,查不到服务模版导致的鉴权问题
  • 修复操作审计详情是否使用表格展示的问题
  • 修复无法导入模型字段的问题
  • 修复资源目录搜索时实例数量异常的问题
  • 修复业务拓扑三级路由(主机详情)未正确展示无权限页面的问题
  • 修复自定义字段页面获取唯一校验接口报错的问题
  • 修复编辑服务模板时删除属性设置保存按钮不可用的问题
  • 修复导出模型文件加密选项未生效的问题
  • 自定义字段下编辑集群/模块/主机下的字段信息后会报错,但实际字段信息上已经修改成功

v3.10.41

31 Jul 08:20
f0a28e4
Compare
Choose a tag to compare

用户须知

尊敬的GitHub社区用户:

我们非常感谢您一直以来对我们项目的支持与关注。经过深入的讨论与评估,我们团队决定对项目的版本进行一次调整。具体内容如下:

经过慎重考虑,我们决定废弃v3.10.23至v3.10.31之间的所有版本。对于在这些版本中所包含的功能和修复,我们已将它们完全整合到v3.11.1版本中。从现在开始,我们将全力投入到v3.11的维护和更新中,为您带来更稳定、高效的使用体验。

此外,我们将在v3.10.41版本中继续基于v3.10.22进行维护。需要特别说明并重点强调的是,v3.10.41版本及其后续版本不包含v3.10.23至v3.10.31之间的任何功能。因此,对于正在使用v3.10.23至v3.10.31之间版本的用户,请千万不要尝试升级至v3.10.41及其后续3.10的版本,请一定使用v3.11.1及其v3.11后续版本进行更新,避免功能或数据造成损失。在v3.11.1中,您将获得所有先前版本的功能,同时还能享受到更多改进和优化。

我们深知这次版本调整可能会给您带来一定的困扰,对此我们深感抱歉。然而,这次调整是为了让我们的项目能够更好地发展,为您提供更优质的服务。我们希望您能理解并支持我们的决定。

如您在升级过程中遇到任何问题,欢迎随时通过GitHub Issues与我们联系。我们将竭诚为您提供帮助。再次感谢您对我们项目的支持,期待在v3.11版本中与您共同进步!

祝您使用愉快!

缺陷修复

  • 解决模型字段批量导入失败问题
  • 解决导出实例数据,临界用户丢失问题
  • 解决实例名唯一索引丢失问题

v3.10.22

14 Aug 07:37
release-v3.10.22
57afc0c
Compare
Choose a tag to compare

新增功能

  • 主机操作系统增加hp-unix类型

功能优化

  • 对一些UI的体验问题进行了优化
  • 对taskserver服务异步任务相关逻辑进行了优化
  • 编译cmdb依赖的golang版本升级到1.17
  • 新增云主机时,如果有内网IP+云区域和业务均相同的主机,则更新该主机

缺陷修复

  • 修复设置平台信息处的xss问题
  • 并发获取用户数据时,出现并发读写map导致webserver服务panic
  • 修复当supplierAccount不为0时,在内置模型分组下创建模型失败问题
  • 修复excel导入主机关联数据时,勾选部分模型出现报错问题
  • 批量创建关联关系接口缺少相关参数,导致创建成功后,cmdb页面无法展示
  • 修复当没有自定义层级时,调用查询主机及其对应topo接口报错问题

v3.10.18

08 Sep 04:13
release-v3.10.18
857950d
Compare
Choose a tag to compare

新增功能

  • 集群模板添加服务模板支持按分类进行筛选
  • 添加推送主机身份接口
  • 增加支持服务模板和集群模板配置属性字段能力

功能优化

  • 主机导出单个文件上限调整为3万条
  • 兼容新版数字输入组件及数值类型字段配置修改时的保存事件优化
  • 模板配置字段变更对比兼容数组等更多数据类型和升级vue-i18n兼容新的语法
  • 优化权限注册逻辑

缺陷修复

  • 修复服务模板配置主机自动应用场景下,通过api接口转移主机未能实现主机自动应用
  • 模型导出步骤文案修复
  • 修复自动应用当模块所属模板已配置规则时跳转查看的模板规则数据未更新问题
  • 修复在新版组件库下业务拓扑树的缩进问题
  • 修复模型导入关联关系选中异常和高级筛选收藏条件弹层被遮挡问题
  • 修复侧滑在内嵌窗口中可能导致页面位移的问题
  • 升级magicbox和login组件解决小窗登录展示异常问题
  • 修复查询模型关联实例分页数据id超出上限的问题
  • 动态分组的模块与集群名称模糊搜索支持直接输入字符
  • 修改monstache默认镜像版本为v2.0.0
  • 服务模板进程绑定IP允许为空