蓝鲸智云配置平台(BlueKing CMDB)

本文在蓝鲸cmdbv3.9.5上验证通过。

安装

目录和架构

bkcmdb_dir

Docker一键安装

docker run -d \
    --name=cmdb \
    --restart=always \
  -v /Users/jeffchen/bak:/tmp/export \
    -p 8090:8090 \
  -p 18080:8080 \
    ccr.ccs.tencentyun.com/bk.io/cmdb-standalone:v3.9.5

默认配置:

webui

使用

业务建模

常见名词解释:

建模顺序:

  1. 部门-员工,基础字典,是其他模型中人员相关属性的选择列表数据源,由于开源版阉割了用户管理的功能,考虑用关联关系代替。
  2. 导入主机进资源池
  3. 新建模块,有负责人,自研服务有对应的git地址
  4. 业务,公司的产品,所属部门、对应的负责人、当前生命周期(默认:上线)
  5. 业务拓扑界面,每个业务下建立对应的集群-模块

权限认证

Docker版服务默认不开启权限,直接以admin操作,非常不安全,解决方案有2种:

  1. 使用原生服务:蓝鲸“全家桶”中的PaaS平台,请看官方文档
  2. 用自己的服务封装一层,大致思路如下:
    1. cmdb实例和其他DB一样,部署在内部安全网络中,不允许外部直接访问
    2. 只信任从指定网关地址过来的访问,实质是把权限解耦,托管给上游,参考这一篇文章详细介绍

接口调用

注意事项:

# 查询主机列表,默认空库
curl --location --request POST 'http://0.0.0.0:18080/api/v3/hosts/search' \
--header 'HTTP_BLUEKING_SUPPLIER_ID: 0' \
--header 'BK_USER: admin'

反馈:

{
    "result": true,
    "bk_error_code": 0,
    "bk_error_msg": "success",
    "permission": null,
    "data": {
        "count": 0,
        "info": []
    }
}

数据备份和恢复

mongo备份cmdb:

  1. docker exec -it cmdb /data/sidecar/mongodb/bin/mongodump --host 127.0.0.1 --port 27017 --out /tmp/export --db cmdb
  2. 打包压缩tar -czvf cmdb.tar.gz /tmp/export/cmdb/

从备份恢复(在mongo/bin目录): 1. docker exec -it cmdb /data/sidecar/mongodb/bin/mongorestore -h 127.0.0.1:27017 -d cmdb /tmp/export/cmdb/

坑:

对接密码管理

由于cmdb有对接外部系统的需求,一些ci的账号信息不适合直接明文存储,这里提供一种解决思路,供参考:

KeePassXC 一种安全开源\跨平台的密码加密、存管工具

  1. ci记录的密码属性信息存入KeePassXC管理的.kdbx加密库中
  2. 基于py库pykeepass构建密码查询接口,入参(ci分类, ci.id, [属性kv]),反馈解密后的报文(如:密码)
  3. 在业务流程开发时,通过上面的接口,读取密码

TODO

参考