Skip to content

Releases: TencentBlueKing/bk-cmdb

v3.13.6

30 Apr 10:16
1873716
Compare
Choose a tag to compare

新增功能

  • 新增“未分配”管控区域
  • 动态分组能力增强-新增“可变条件”能力
  • 新增校验登录态接口is_login
  • 用户快速选择器增加人员不存在提示

功能优化

  • 升级go版本到1.20并调整go mod依赖
  • 升级前端依赖包,解决安全风险及部分包未在顶层依赖出现not found的问题
  • 登录小窗修改为使用window.open
  • 当模板被模型绑定后,hover详情内的删除按钮时出现tooltips提示
  • 限制下发hostid文件大小
  • 业务(集)选择器排序优化
  • 实例详情页中hover字段名称展示字段摘要
  • 搜索时人员允许填入不存在的
  • 服务模板支持查看进程详情
  • 调整metrics指标
  • 校验导入文件的后缀名
  • 添加模型引用类型、字段组合模板功能测试用例
  • 优化了一些前端的显示问题
  • 主机内网IP更改为"内网ipv4"
  • 主机外网IP更改为"外网ipv4"
  • 通过接口下发hostid,超过文件大小限制返回错误

缺陷修复

  • 修复appHeight未兼容公告栏的问题
  • 修复权限中心查询实例时输入正则表达式中的部分特殊字符时报错问题
  • 修复query filter中value没有填时报错的问题

v3.13.5

29 Mar 04:22
e4d5628
Compare
Choose a tag to compare

新增功能

  • 添加按业务维度的pod label的key和value的缓存

功能优化

  • 批量创建集群设置最大限制数量为100
  • 当根据agentid消费采集器数据,查不到主机时,设置空字符串缓存
  • 优化当未启用鉴权时,依然频繁扫描zk中的auth节点导致记录大量日志的问题
  • 字段组合模板创建增加超过10000个的数量限制
  • 新建业务集后,有对应新建业务集的编辑、删除、查看权限(IAM SaaS >= 1.10.19)
  • 修改主机字段分组和字段的相关文案
  • excel相关文本优化
  • webserver统计请求量的metrics添加用户标签
  • 优化了一些前端的显示问题
  • apigw配置调整

缺陷修复

  • 修复部分接口在filter中设置时间条件不生效问题
  • 修复“集群”的动态分组预览时,出现重复的集群

v3.13.4

12 Mar 09:44
aa3229f
Compare
Choose a tag to compare

新增功能

  • 操作系统类型新增"MacOS"

v3.13.3

28 Feb 06:45
d8b451f
Compare
Choose a tag to compare

新增功能

  • 添加获取container以及对应拓扑信息接口
  • 添加获取容器业务拓扑缓存信息接口
  • 接入消息中心
  • 支持国密SM4算法

功能优化

  • 首页搜索优化-模糊IP搜索
  • 自动发现主机CPU架构字段
  • apiserver添加ingress
  • 修改‘业务集描述’字段为bk_biz_set_desc
  • 模型实例属性编辑时不使用默认值
  • 优化了一些前端的显示问题
  • 优化ESB文档

缺陷修复

  • 修复业务和项目时间类型查询问题及模型实例属性页面中字段默认值展示错误的问题
  • 修复业务不支持时间类型查询问题
  • 修复模型导入属性字段顺序错乱、字段所属分组错乱问题
  • 修复导入动态寻址方式的主机时显示导入成功但主机不存在的问题
  • 修复注册旧dataid失败问题
  • 修复模型实例插件接口不填写创建时间与更新时间的时报错的问题
  • 修复不开启鉴权的场景下获取模型关联失败的问题
  • 首页高级筛选相关问题修复
  • 修复业务集业务拓扑节点下,点击集群服务模板/模块服务模板跳转报错的问题

v3.13.2

29 Jan 03:48
e161e0f
Compare
Choose a tag to compare

新增功能

  • 首页主机搜索自动解析及样式优化

功能优化

  • gsecmdline迁移到监控的上报
  • 主机导出Excel时,管控区域字段带上ID
  • 导入没数据的excel提示「未检测到任何数据需要导入」
  • 校验主线模型实例的bk_parent_id类型
  • 未开启权限时不发起预鉴权调用
  • 优化了一些前端的显示问题

缺陷修复

  • 根据集群模板id查不到模块时返回业务所有服务实例
  • 根据创建时间查询业务集没有查询出对应的业务集数据
  • 修复不同业务下的自定义字段冲突问题
  • 业务有表格字段时,点击业务拓扑节点鉴权失败问题
  • 修复批量同步服务模板实例的属性时,只有一个成功的问题

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类型不一致导致索引重复创建的问题