操作教程|如何快速将数据迁移到JumpServer开源堡垒机?

Posted FIT2CLOUD飞致云

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了操作教程|如何快速将数据迁移到JumpServer开源堡垒机?相关的知识,希望对你有一定的参考价值。

随着JumpServer开源堡垒机的市场影响力和用户群体的不断扩大,越来越多的新用户选择使用JumpServer堡垒机来代替企业原有的运维审计系统。这样一来,管理员就需要对原有运维审计系统中的数据进行导入操作,将原有的运维审计环境迁移到JumpServer开源堡垒机中。

在资产和用户数比较少的场景下,用户可以参考JumpServer开源堡垒机的社区官方文档:https://docs.jumpserver.org/zh/master/admin-guide/quick_start/#_3,通过手动创建资产、系统用户、授权规则的方式,快速实现数据初始化,搭建运维管理平台。而面对资产和用户数较多的情况,手动创建的方式无法满足用户大规模数据初始化的需求,就需要对原有的运维审计系统做相应的数据迁移。

本文重点介绍如何快速将原有运维审计环境中的数据迁移到JumpServer平台中,从而开启JumpServer的运维审计管理之旅。JumpServer开源堡垒机遵循4A(包含认证Authentication 、授权Authorization、 账号Accounting和审计Auditing)规范,因此用户、资产、系统用户和授权规则这些基础数据是JumpServer初始化平台所必须拥有的。本文所介绍的JumpServer数据迁移工作也将重点围绕这四个部分的数据进行处理,并基于JumpServer v2.28.1版本进行操作演示。

一、用户数据源迁移

1.在JumpServer的“用户管理”菜单中选择“用户列表”→“导入创建”,下载用户数据模板。

▲ 图1 下载JumpServer用户数据模板

2.将所需导入的用户数据整理成JumpServer的数据表格格式(以某厂商的用户数据为例),需要注意以下字段:

■ 名称:不可以为空,可以重复;

■ 用户名:不可以为空,不可以重复且唯一;

■ 邮箱:不可以为空,不可以重复且唯一,不可以为中文;

■ 密码:如果通过表格导不出原厂商的明文密码,建议填写一个统一的密码;

■ 需要更新密码:如果密码字段没有设置统一密码,则这个值为False;如果为统一密码并且希望在用户第一次登录的时候重置密码,则这个值更改为True;

■ 用户组:默认为Default组织,如果需要自定义组织的话,则需要选择“用户管理”→“用户组”,创建组织后点击名称进入详情页,查看组织ID并填写对应的值;

■ 系统角色:选择“用户管理”→“角色列表”→“系统角色”,点击名称进入详情页,查看每个系统角色的ID并填写对应的值;

■ 组织角色:选择“用户管理”→“角色列表”→“组织角色”,点击名称进入详情页,查看每个组织角色的ID并填写对应的值;

■ 密码策略:需要填写Custom值,才可以保证所填写的密码生效;

■ 某厂商原平台数据和JumpServer字段的对应关系为:真实姓名→名称、用户名→用户名、密码→密码、Email→邮箱。

▲图2 某厂商原平台的用户数据表格

▲ 图3 整理后的JumpServer用户数据表格

3.通过“导入创建”功能,将整理后的用户数据表格导入JumpServer,导入成功后刷新用户列表。

▲ 图4 导入用户数据表格

▲ 图5 JumpServer用户列表

二、资产节点数据源迁移

  1. 处理原平台的资产节点数据(以某厂商原平台设备组数据为例);

某厂商的设备组对应JumpServer的资产节点,为了避免设备组有重复数据,首先需要对表格进行去重处理,并将数据表格名称重命名为“assetsNode.xlsx”。

▲ 图6 某厂商原平台设备组数据表格

2.处理JumpServer资产节点数据,由于JumpServer资产节点具有无限层级的特殊性,因此需要使用脚本导入的方式完成数据处理。由于某厂商原平台设备组数据表格只有一列数据,因此都作为一级节点导入JumpServer。

■ 使用Python脚本源码

使用时需要注意以下三个参数:

#需要添加节点数据的JumpServer平台地址(示例参数: jms_url = ‘http://192.168.1.2/api/v1/assets/nodes/’);

#private token按照其官网文档获取,地址为:https://docs.jumpserver.org/zh/master/dev/rest_api/#api_2
(示例参数:token = ‘ed0387512432cbbaff9fd4050be8d269b747f274’);

#需要添加到xxx组织下的资产节点数据的组织ID,可以在“组织列表”中点击组织名称获取,默认为“Defalut”组织下(示例参数:org = '00000000-0000-0000-0000-000000000002‘)。

■ 如何运行代码

① 登录部署JumpServer的服务器;

② 把处理后的数据表格用“docker cp assetsNode.xlsx jms_core:/opt”命令复制到指定的容器内;

③ 执行“docker exec -it jms_core bash”进入容器内;

④ 在容器内执行“cd /opt”进入opt目录,接着执行“vi importNode.py”创建一个文件,把上述代码复制到文件内,执行“wq“保存退出;

⑤ 执行“python importNode.py”命令即可,具体代码如下:

from openpyxl import load_workbook
  
def get_xlsx_content():
    # 打开一个workbook
    wb = load_workbook(filename="/opt/assetsNode.xlsx")
    # 获取当前活跃的worksheet,默认就是第一个worksheet
    # ws = wb.active
  
    # 当然也可以使用下面的方法
  
    # 获取所有表格(worksheet)的名字
    sheets = wb.get_sheet_names()
    # 第一个表格的名称
    sheet_first = sheets[0]
    # 获取特定的worksheet
    ws = wb.get_sheet_by_name(sheet_first)
  
    # 获取表格所有行和列,两者都是可迭代的
    rows = ws.rows
    lines = []
    # 迭代所有的行
    for row in rows:
        for col in row:
            item = 
                "value": col.value,
                "full_value": col.value
            
            lines.append(item)
    return lines
  
# 添加数据方法
def save_node_data(jms_url, data, token, org):
    import requests, json
    url = jms_url
    headers = 
        "Authorization": 'Token ' + token,
        'X-JMS-ORG': org
    
    response = requests.post(url, data, headers=headers)
    print(json.loads(response.text))
  
if __name__ == '__main__':
    nodes = get_xlsx_content()
    # 需要添加节点数据的jms平台地址
    jms_url= 'http://192.168.1.2/api/v1/assets/nodes/'
    token= 'ed0387512432cbbaff9fd4050be8d269b747f274'
    # 需要添加到那个组织下的资产节点数据的 组织Id
    org = '00000000-0000-0000-0000-000000000002'
    nodes.pop(0)
    for node in nodes:
        save_node_data(jms_url, node, token, org)

▲ 图7 资产节点导入后的执行结果

▲ 图8 JumpServer资产节点列表

三、资产数据源迁移步骤

  1. 处理原平台的资产数据(以某厂商原平台设备权限数据为例);

由于某厂商在设备管理界面无法直接导入设备和设备组的关联关系,因此可以通过设备的授权关系导入设备和设备组的关联关系,或者可以通过数据库表关联查询得到关联关系的数据表。某厂商的设备即对应JumpServer资产,JumpServer中资产名称和IP是不可以重复的,因此为了避免设备有重复数据,首先需要对表格进行去重处理。

▲ 图9 某厂商原平台设备权限数据表格

2.在JumpServer的“资产管理”菜单中选择“资产列表”→“导入创建”,下载资产数据模板;

如果是初始平台没有任何数据,那么导出来的模板是空的,因此我们需要创建一条资产以方便查看数据格式。

▲ 图10 创建资产以方便查看数据格式

▲ 图11 下载JumpServer资产数据模板

3.将所需导入的资产数据整理成JumpServer的资产数据表格格式,注意事项包括:

■ 某厂商原平台表格所需的字段为:设备名、设备IP、设备组、应用名称、端口;

■ JumpServer资产列表表格所需的必填字段为:主机名、IP、系统平台、协议组、节点名称;

■ 某厂商数据和JumpServer字段对应关系为:设备名→主机名、设备IP→IP、设备组→节点名称、应用名称→系统平台、端口→协议组;

▲ 图12 整理后的JumpServer资产表格

4.通过“导入创建”功能,将整理后的资产数据表格导入JumpServer,导入成功后刷新资产列表。

▲ 图13 导入资产数据表格

▲ 图14 JumpServer资产列表

四、系统用户数据源迁移

1.在JumpServer的“资产管理”菜单中选择“系统用户”→“导入创建”,下载系统用户数据模板;

如果是初始平台没有任何数据,那么导出来的模板是空的,因此需要先创建两条SSH协议以及RDP协议的系统用户,以方便查看数据格式。

▲ 图15 创建系统用户以方便查看数据格式

▲ 图16 下载JumpServer系统用户模板

2.将所需导入的系统用户数据整理成JumpServer的系统用户数据表格格式,首先删除JumpServer数据表格中的“ID”列,并注意以下几个重要字段(以某厂商设备账号数据为例):

■ 名称:指这条记录的名称(并非指这台服务器的登录名称);

■ 用户名:指服务器登录账号;

■ 类型:取值Common(普通用户) 和Admin(特权用户),不填写默认为普通用户。如果填入特权用户,密码字段必填,若不填,导入时不会报错,但是用户无法正常使用;

■ 认证方式:取值Auto(托管密码)和Manual(手动输入),不填写默认为托管密码。手动输入时密码字段可以不必填写,托管密码时,密码字段必填,若不填,导入时不会报错,但是用户无法正常使用;

■ 某厂商数据和JumpServer字段对应关系为:账户名称→名称、账户名称→用户名、账号密码→密码、账号应用→协议。

▲ 图17 某厂商设备账号数据表格

▲ 图18 整理后的JumpServer系统用户表格

3.通过“导入创建”功能,将整理后的系统用户数据表格导入JumpServer,导入成功后刷新用户列表。

▲ 图19 导入系统用户数据表格

▲ 图20 JumpServer系统用户列表

五、授权规则迁移

1.在JumpServer权限管理菜单中选择“资产授权”→“导入创建”,下载资产授权规则数据模板;

由于每个用户场景的授权关系都不一样,此处以JumpServer平台授权规则表格模板为例,说明以下重要字段的取值:

■ 名称:这条授权关系的描述(必填项);

■ 动作:拥有这条授权关系的用户支持的动作值(上传下载文件/复制粘贴,默认全有,导入文件时这列保持为空即可);

■ 用户名称:用户的用户名(格式:[‘zhnagsan’,‘lisi’]);

■ 用户组名称:用户组列表的名称(格式:[‘Defalut’,‘Defalut2’]);

■ 资产名称:资产列表的主机名(格式:[‘10.1.14.178’,‘10.1.14.179’]);

■ 节点名称:导入资产时的节点名称(比如要授权的资产在“Default”→“ABC”下面,那么这个字段取值则为[‘/Default/ABC/’]);

■ 用户名称:资产管理中系统用户列表的名称字段(格式:[‘admin’,‘root’])。

▲ 图21 JumpServer资产授权规则表格模板

2.以某厂商原平台的资产授权数据为例,将数据整理成JumpServer的授权规则表格格式,注意事项包括:

■ 按照用户和资产授权:指用户名为admin的用户,拥有10.1.14.178这台资产的Dev系统用户的连接权限;

■ 按照用户组和资产节点授权:指在Default用户组下面的所有用户,都拥有资产节点为黑龙江省下所有资产的admin系统用户的连接权限;

■ 若既要填写资产又要填写资产节点,则两个值取并集,用户和用户组同理;

■ 在进行规则授权之前,需要把前面的数据导入完成,填写的用户名称、用户组名称、资产名称、节点名称、系统用户名称等都需要在平台内存在才可以完成规则授权。

▲ 图22 整理后的JumpServer授权规则表格

3.通过“导入创建”功能,将整理后的授权规则表格导入JumpServer,导入成功后刷新资产授权列表即可。

▲ 图23 导入授权规则表格

▲ 图24 JumpServer授权规则列表

以上是关于操作教程|如何快速将数据迁移到JumpServer开源堡垒机?的主要内容,如果未能解决你的问题,请参考以下文章

Jumpserver介绍

操作指南|JumpServer用户权限体系的使用实践

操作指南|JumpServer用户权限体系的使用实践

操作指南|通过JumpServer实现Kubernetes运维安全审计

如何实现数据迁移?

操作指南|在Kubernetes集群上快速部署JumpServer开源堡垒机