写点什么

JumpServer 用户权限体系的使用实践

作者:coxi_vv
  • 2023-02-01
    北京
  • 本文字数:2754 字

    阅读完需:约 9 分钟

概述

本文重点讲述 JumpServer 开源堡垒机的用户、角色、系统用户与资产之间的关系,分享如何快速健全 JumpServer 的用户体系,实现用户权限的划分,帮助企业快速实现从无到有的 JumpServer 用户及权限体系建设。

JumpServer 开源堡垒机采用 RBAC( Role-Based Access Control,基于角色的访问控制)权限管理模型。通过角色定义权限,并进一步关联用户的方式间接赋予用户权限。权限指代具体的操作,它与角色和用户之间犹如从点到线,再到面的关系。

概括地说,权限定义了软件中整个用户体系的操作行为,而角色是在现实世界中对权限的抽象,是一组特定操作行为的集合。软件又进一步通过角色与用户的绑定关系,约定了用户所具有的操作权限,并由此形成了灵活的映射机制。通过“权限-角色-用户”这样的 RBAC 模型,JumpServer 支持了用户权限体系建设中的“最小化原则”,实现了精细化权限控制与灵活赋权之间的管理平衡。


图片-1662621154907


一、用户和角色的关系

在创建用户和划分角色时,一定要权衡用户和角色之间的关系,遵循权限最小化原则,这样才能防患于未然,规避生产环境中的运维风险。

JumpServer 支持 RBAC 用户管理模型,通过自定义角色权限,对用户授予某个角色,从而控制用户的权限,实现用户和权限的逻辑分离(区别于 ACL,即访问控制列表 Access Control Lists 模型),极大地方便了权限的管理。


图片-1662621219533


二、创建用户及角色划分

对于一些初次使用 JumpServer 开源堡垒机的用户而言,用户的创建更多的是依赖手动创建的方式。这种方式效率比较低下,而且维护成本较高。因此,在这里推荐几种快速批量创建用户的方法,以提高运维工作的效率。

1、创建用户

  • 模板创建用户


    JumpServer 开源堡垒机支持批量创建用户,系统提供创建用户的模板,在下载的模板中填写用户的信息即可完成用户的批量创建。


    在批量创建用户时,用户密码的设置有两种方法:


    方法一:如果在创建用户时需要自定义密码,在导出模板的“密码策略”字段下,填写“custom”,然后在密码字段下填写用户密码即可;


    具体操作步骤如下:


    第一步:选择“用户管理”→“用户列表”,点击“导入”按钮,下载创建模板( CSV 或者 XLSX 格式 );



    第二步:在下载的模板中填写用户信息,然后点击“导入”按钮,选择创建好的模板即可完成用户创建。



    方法二:可以在导入用户模板前(用户信息必须填写真实的用户邮箱地址)配置好公司邮箱,在创建好用户后,用户自行点击“生成重置密码链接”,由用户自行设置密码。


    具体操作步骤如下:


    第一步:用户自定义密码时,选择“设置”→“邮箱设置”,配置好邮箱;



    第二步:在创建好用户后,用户自行点击“点击这里设置密码”链接,由用户自行设置密码,然后在导出的模板中填写相应的信息完成导入即可。

  • 接口批量创建用户


    JumpServer 本身提供标准的 API 接口,用户可以通过 API 接口批量创建用户,创建用户接口:​​http://堡垒机访问地址​​:端口/api/v1/users/users/。


    注意:执行 POST 请求调用上述 API 接口,请求的 body 参数可以参考:​​http://堡垒机访问地址​​:端口/api/docs 进行查看。

  • shell 脚本批量创建用户


    第一步:编辑创建用户信息,依次为用户名称、用户名、邮箱、密码;



    第二步:编写创建用户脚本,修改脚本中 JumpServer 访问地址、JumpServer 登录用户、JumpServer 用户登录密码(以实际为准),编写完成执行脚本即可。


    脚本如下:


#!/bin/bash #jumpserver访问地址HTTP_URL="http://192.168.100.100"#jumpserver登录用户 USERNAME="admin"#jumpserver用户登录密码PASSWORD="fit2cloud"TOKEN=`curl -s -X POST -H 'Content-Type: application/json' -d '{"username":"'"$USERNAME"'","password":"'"$PASSWORD"'"}' ${HTTP_URL}/api/v1/authentication/auth/ |awk  -F ',' '{print $1"}"}'|awk -F '[{ " :]' '{print $6}'`while read name username email passworddo        curl -X POST -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json'  -d '{"name":"'"$name"'","username":"'"$username"'","email":"'"$email"'","password":"'"$password"'","is_active":"true","password_strategy":"custom","system_roles":["00000000-0000-0000-0000-000000000003"],"org_roles":["00000000-0000-0000-0000-000000000007"]}' ${HTTP_URL}/api/v1/users/users/done <name.txt
复制代码


图片-1662625570571


注意:如果是自定义的角色,自行修改脚本中对应的 system_roles 和 org_roles 的 id 即可。

2、角色关系及角色划分

创建用户时默认为普通用户,当然在创建用户时也可以指定用户角色。JumpServer 默认自带系统管理员、系统审计员、用户等多种角色,每一种角色关联的权限也不一样。作为管理员,可以根据实际需求自定义用户角色,并对用户角色权限进行自定义编辑。普通用户:普通用户拥有正常操作和资产登录的权限,但不能对配置进行修改;

审计员:审计员可以查看当前用户的操作行为、用户权限、用户信息、文件传输记录、用户操作日志等信息。当用户触发危险命令时,作为审计员可以对用户操作进⾏实时监控,发现违规操作,⽴即中止用户操作行为;

管理员:管理员是指拥有堡垒机所有权限的用户。作为管理员需要完成工单的审批、用户授权申请、用户权限变更、用户锁定等行为操作,同时针对员工职位的变化对员工的角色和权限做出相应的权限变更。


图片-1662625750441


图片-1662625770228


三、用户、系统用户和资产之间的关系

在 JumpServer 中,用户对资产的操作权限是由授权规则中授权的系统用户决定的。一般会通过系统用户来实现业务权限的区分,分为可读系统用户、可写系统用户和最高权限系统用户三大类。

然后,根据用户的角色和需求来授权相对应的系统用户。用户可以通过授权的系统用户登录授权的资产,其关系如下:


图片-1662625805946


四、系统用户权限划分

系统用户的权限也是至关重要的,其往往决定了用户对于服务器的实际操作权限。以下方法对系统用户权限的划分提供了两种思路:

  • 方法一:白名单——拒绝所有,开放某些命令;


    第一步:选择“资产管理”→“命令过滤”,创建命令过滤规则;



    第二步:编辑命令过滤规则,拒绝所有命令,在“正则表达式”内容里面填写 .* 参数;



    第三步:允许某些可执行的命令,继续添加第二条命令过滤规则,其优先级一定要小于第一条命令过滤规则的优先级。

  • 方法二:黑名单——允许所有,拒绝某些命令。


    第一步:选择“资产管理”→“命令过滤”,创建命令过滤规则;



    第二步:点击命令过滤规则的名称,然后点击“创建”,添加需要禁用的命令;



    第三步:直接添加需要禁用的命令即可,其他命令默认都允许,可以通过正则添加或者使用“|”符号来分隔多条命令。

五、总结

良好的用户权限体系是 JumpServer 开源堡垒机在企业最佳实践中的重要保障。作为管理员,我们需要对开发、测试、运维等人员的权限做好规划,统筹大局,搭建一套完整的用户权限体系。权限的灵活运用能够为企业 IT 系统的安全运维保驾护航。

用户头像

coxi_vv

关注

还未添加个人签名 2023-01-31 加入

还未添加个人简介

评论

发布
暂无评论
JumpServer 用户权限体系的使用实践_coxi_vv_InfoQ写作社区