世界视点!jumpserver的简单安装使用
2023-03-23 12:04:35 来源:腾讯云
背景:
服务器的管理停留在xshell 登陆管理的时代,主机设备数量少,单人操作的时候还能满足使用。现在的主机数量不多不少也有大几十台。然后就面临的多人的登陆与管理。过去都是直接给账户密码。但这样就会面临操作审计的问题。虽然给的机器都是测试环境的,但是追溯操作人,审计也还是大问题。另外就是数据库的远程操作。小伙伴都使用navicat操作。也会面临很多的问题: 首位还是操作审计,其次就是远程IP的信任,添加安全组这中操作就很烦人。迫切的需要一个中间操作的设备,就是堡垒机。jumpserser是一款优秀的堡垒机。很早之前就尝试使用过。比如当时疫情开始的时候远程办公。由于一些公司保密原因,只允许远程操作公司电脑进行工作,不允许用户上传下载,当时就使用了jumpserver管理(windows环境)。最近又看了一眼jumpserver的文档,发现支持了kubernetes and mysql的管理。正好体验一下呢!
jumpserver的简单安装
前提准备:
参照官方文档:https://docs.jumpserver.org/zh/v3/
(资料图)
腾讯云cvm rocky9操作系统为例:
关于操作系统 rocky9 腾讯云服务器:
数据库的创建and授权:
早些时候创建的TDSQL-C数据库,创建了数据库and 用户,并授权,如下:
创建用户设置密码并授权:
创建redis 数据库 and设置密码:
在线安装:
自定义主机名:
首先先自定义一下主机名,个人习惯。也可以忽略
hostnamectl set-hostname jumpserver
执行一键安装脚本
主线版本现在是v2 v3。这里直接安装了V3.10版本(latest,当前最新吧).当然了可以自定义初始化先把mysql, redis设置为咱们前面开通的。这里偷懒了。先一键安装,后面再去修改!
https://docs.jumpserver.org/zh/v3/installation/setup_linux_standalone/online_install/
curl -sSL https://resource.fit2cloud.com/jumpserver/jumpserver/releases/latest/download/quick_start.sh | bash
等待安装配置docker.下载docker 镜像,初始化数据库并启动容器:
等待容器running:
docker psjmsctl status
这个时候已经默认可以web登陆了(当然了dns默认解析到了此CVM,域名方式访问)。不先进入系统,先做一下自定义配置再进入系统........
自定义配置:
mysql and redis使用外部配置:
自定义修改config.txt中mysql redis配置:
vim /opt/jumpserver/config/config.txt
重启所有服务:
jmsctl命令拿来用了:
jmsctl restart
jmsctl status
有强迫症不想看到jms_mysql jms_redis服务?
jmsctl statusdocker stop jms_mysql jms_redis
web访问并修改默认密码:
浏览器访问自定义域名,默认用户名密码应该是admin admin?
修改自定义密码:
重新登陆控制台:
登陆页面显示不安全.......继续强迫症https!
https证书配置:
参照:https://kb.fit2cloud.com/?p=152
先上传证书到 /opt/jumpserver/config/nginx/cert/目录下:
修改/opt/jumpserver3/config/config.txt 开启https访问:
jmsctl restartjmsctl status
https方式访问web地址:
控制台基本是如下这样(图后截的忽略):
jumpserver的简单使用:
比较关心常用的资产管理:
尝试一下主机and数据库and 云服务(kubernetes)的管理!
主机为例:
创建资产
创建-选择平台Linux(资产IP为10.0.4.18):
输入名称 IP/主机 节点选择默认的/Default
添加账号,密码方式选择了ssh密钥:
资产授权:
点击权限管理-资产授权,对10.0.4.18资源进行授权
点击提交:
切换到工作台验证:
左侧边栏,点击工作台切换:
web终端登陆验证:
继续添加一个node
开始以为一个账户可以用于多个资产尝试了一下失败了.....创建资产的时候还看到了模板,就想创建一个模板尝试一下:
首先创建一个账号模板:
创建10.0.4.68的资产选择账号模板:
web cli登陆验证:
普通用户权限忽略了就先
数据库的添加管理:
创建数据库资产与用户
资产管理-资产列表-数据库:
创建数据库资产,mysql为例(资源IP10.0.4.39):
添加资源,添加用户,提交:
测试数据库连接
点击更多-测试。可以看到jumpserver与数据库正常连接:
资产授权这里你也可能会有跟我一样的疑惑:
特意尝试了一下不添加资产but选定defult节点:
但是其实也是可以访问的,左侧边栏-工作台-web终端:
web-cli or navicat操作数据库:
通过web-cli操作数据库:
mysql的后台针对的是web-cli还是。当然了navicat可以生成一个5分钟的临时用户!
随便用navicat登陆临时账户,操作几条命令看看:
当然了一直连着还好,断开超时后,就无法登陆了!
会话审计
控制台左侧边栏-审计台
会话审计-会话记录and命令记录:
命令可以追溯:
当然了 如果能有web版的navicat这样的页面就更好了!能追溯到命令与操作人不用去每次给用户开安全组添加信任IP,这样我已经很知足了.......唯一不满的是命令记录不能按照资产进行分类!
云服务的添加管理:
参照:https://baijiahao.baidu.com/s?id=1752070936393562982&wfr=spider&for=pc
确定集群连接url
根据集群config文件 获取连接url:
K8S集群管理权限的SA,并且绑定cluster-admin角色
参照: https://www.i7ti.cn/1410.html
cat jumpserver-admin.yaml
apiVersion: v1kind: ServiceAccountmetadata: name: jumpserver-admin namespace: kube-system---kind: ClusterRoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata: name: jumpserver-adminsubjects: - kind: ServiceAccount name: jumpserver-admin namespace: kube-systemroleRef: kind: ClusterRole name: cluster-admin #此处绑定集群管理员权限,请根据自身需求绑定权限,这里只是举个例子 apiGroup: rbac.authorization.k8s.io
kubectl apply -f jumpserver-admin.yaml
获取token令牌:
kubectl get secret -n kube-system |grep "jumpserver-admin"kubectl describe secret jumpserver-admin-token-zb8vm -n kube-system
注:以上操作在kubernetes控制台节点操作!
创建云服务资产
jumpserver控制台操作
资产管理-资产列表-云服务-新建-选择平台-kubernetes
输入自定义名称 URL 节点等配置
添加账号,输入上一步获取的token,提交:
这里是没有测试的提交资源后:
资产授权:
输入相关配置,提交:
web cli终端测试连接:
切换控制台到工作台:
web终端:
连接名为develop的kubernetes集群:
随便选择一个clusternet-system namespace下pod 连接一下:
普通用户的测试:
注:以kubernetes云服务为例!
创建普通用户
上面的步骤都是超级用户admin操作的,现在创建一个普通用户:
控制台-用户管理-用户列表-创建用户:
普通用户-zhangpeng创建-提交
创建用户组develop,将zhangpeng用户加入用户组:
注意:将zhangpeng用户在default用户组中剔除(前面好多授权针对的是用户组,创建新的组方便区分)
kubernetes相关资源创建:
网上所有的文章基本都是错的,关于普通用户的,比如:JumpServer:提升Kubernetes集群管理安全。但是普通用户的方式是不完整的。下面操作一下,请参照:k8s结合jumpserver做kubectl权限控制 用户在多个namespaces的访问权限 rbac权限控制 !
创建serviceaccountkubectl create sa develop-zhangpeng -n develop-xxxkubectl get sa -n develop-xxxxkubectl describe secrets/develop-zhangpeng-token-cddqx -n develop-xxxx网上很多的文章都是只绑定了namespace级别的资源,but jumpserver不能直接到namespace级别。故需要绑定一下集群级别的资源权限:
cat jumpserver-admin-get-auth.yaml
其实这里就是设置对k8s集群的一些权限的apiVersion: rbac.authorization.k8s.io/v1 # apikind: ClusterRole # 资源类型metadata: # 元数据 ClusterRole 不受ns的限制,所以不用写ns name: jumpserver-admin-get-auth # ClusterRole 的名称,能区分就行rules:- apiGroups: # apiGroups 就是api资源组,你kubectl get apiservice 就可以看到集群所有的api组 - "" # 我这里代表为空,就是api组里面有一个v1. 这样的 resources: # 就是k8s资源的名称。kubectl api-resources 这个命令可以查看到,第一列是资源名称,就是可以写在这里的。 # 第二列是简写,kubectl get 后面的可以简写。 # 第三列是APIGROUP组 # 第四列是是否属于NAMESPACED资源,就是你可以在ns下面看到的资源 # 第五列是kind的时候写的名称 # 资源还分子资源,后期会写一篇专门的文章介绍 - namespaces/status # 这个是ns状态 - namespaces # 这个是ns - persistentvolumes # pv verbs: # verbs是定义动作的 - get # 就是可以查看ns的权限 - list - watch- apiGroups: - "" resources: # 这里定义的是可以查看node的权限,更新node的权限。 - nodes - nodes/status verbs: - get - list - watch - patch - update- apiGroups: - "storage.k8s.io" resources: # 这里定义的是可以查看sc的权限,因为我们有后端的存储集群,他们可以对sc的所有权限 - storageclasses - storageclasses/status resourceNames: # 因为sc属于集群资源,不同的业务方需要对自己的sc才有 全部权限。 - axersc # 所有这里可以指定对哪一个sc有全部权限 verbs: - create - delete - deletecollection - get - list - patch - update - watch
创建clusterrole apply yaml文件:
kubectl apply -f jumpserver-admin-get-auth.yaml
把上面定义的集群权限ClusterRole绑定给sa develop-zhangpeng:
cat jumpserver-admin-get-auth-clusterrolebinding.yaml
apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRoleBinding # ClusterRoleBinding 用于绑定集群权限的metadata: name: jumpserver-admin-get-auth # 名称 ClusterRoleBinding 不受ns的限制,所以没有nsroleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole # 上面定义的ClusterRole名称 name: jumpserver-admin-get-authsubjects:- kind: ServiceAccount # 上面定义的sa名称 name: develop-zhangpeng namespace: develop-xxxx
kubectl apply -f jumpserver-admin-get-auth-clusterrolebinding.yaml
namespace资源的绑定cat jumpserver-admin-auth.yaml
apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRolemetadata: name: jumpserver-admin-authrules:- apiGroups: - "" resources: # 对pod的一些权限。 - pods/attach - pods/exec # exec pod - pods/portforward # 设置pod的转发 - pods/proxy - secrets # secrets的权限 - services/proxy verbs: - get - list - watch- apiGroups: - "" resources: - serviceaccounts # sa的权限 verbs: - impersonate- apiGroups: - "" resources: - pods - pods/attach - pods/exec - pods/portforward - pods/proxy verbs: - create - delete - deletecollection - patch - update- apiGroups: - "" resources: - configmaps - endpoints - persistentvolumeclaims - replicationcontrollers - replicationcontrollers/scale - secrets - serviceaccounts - services - services/proxy verbs: - create - delete - deletecollection - patch - update- apiGroups: - apps resources: - daemonsets - deployments - deployments/rollback - deployments/scale - replicasets - replicasets/scale - statefulsets - statefulsets/scale verbs: - create - delete - deletecollection - patch - update- apiGroups: - autoscaling resources: - horizontalpodautoscalers verbs: - create - delete - deletecollection - patch - update- apiGroups: - batch resources: - cronjobs - jobs verbs: - create - delete - deletecollection - patch - update- apiGroups: - extensions resources: - daemonsets - deployments - deployments/rollback - deployments/scale - ingresses - networkpolicies - replicasets - replicasets/scale - replicationcontrollers/scale verbs: - create - delete - deletecollection - patch - update- apiGroups: - policy resources: - poddisruptionbudgets verbs: - create - delete - deletecollection - patch - update- apiGroups: - networking.k8s.io resources: - ingresses - networkpolicies verbs: - create - delete - deletecollection - patch - update- apiGroups: - metrics.k8s.io resources: - pods verbs: - get - list - watch- apiGroups: - "" resources: - configmaps - endpoints - persistentvolumeclaims - pods - replicationcontrollers - replicationcontrollers/scale - serviceaccounts - services verbs: - get - list - watch- apiGroups: - "" resources: - bindings - events - limitranges - pods/log - pods/status - replicationcontrollers/status - resourcequotas - resourcequotas/status verbs: - get - list - watch- apiGroups: - apps resources: - controllerrevisions - daemonsets - deployments - deployments/scale - replicasets - replicasets/scale - statefulsets - statefulsets/scale verbs: - get - list - watch- apiGroups: - autoscaling resources: - horizontalpodautoscalers verbs: - get - list - watch- apiGroups: - batch resources: - cronjobs - jobs verbs: - get - list - watch- apiGroups: - extensions resources: - daemonsets - deployments - deployments/scale - ingresses - networkpolicies - replicasets - replicasets/scale - replicationcontrollers/scale verbs: - get - list - watch- apiGroups: - policy resources: - poddisruptionbudgets verbs: - get - list - watch- apiGroups: - networking.k8s.io resources: - ingresses - networkpolicies verbs: - get - list - watch- apiGroups: - authorization.k8s.io resources: - localsubjectaccessreviews verbs: - create- apiGroups: - rbac.authorization.k8s.io resources: - rolebindings - roles verbs: - create - delete - deletecollection - get - list - patch - update - watch
kubectl apply -f jumpserver-admin-auth.yaml
rolebingding 绑定sa:
cat jumpserver-admin-auth-rolebinding.yaml
apiVersion: rbac.authorization.k8s.io/v1kind: RoleBindingmetadata: name: jumpserver-admin-auth namespace: develop-xxxxroleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: jumpserver-admin-authsubjects:- kind: ServiceAccount name: develop-zhangpeng namespace: develop-xxxxx
kubectl apply -f jumpserver-admin-auth-rolebinding.yaml
创建普通账号
账户管理-账号列表-添加账号develop-zhangpeng。密码方式令牌方式,复制kubernetes集群中刚创建的develop-zhangpeng的token!
资产授权:
权限管理-资产授权-创建资产授权规则:
注意授权这里的用户组!
登陆普通用户测试:
开了一个火狐浏览器登陆了普通用户zhangpeng(看设置的密码策略,可能第一次要修改密码!这里就直接忽略了)
切换到工作台:
出现资源列表default资源树:
可以点击一下其他资产,默认是没有账户,无权限的:
点击develop kubernetes资源,点击连接:
进入集群验证一下权限:
点击clusternet-system namespace or其他命名空间默认应该都是无权限的!只能打开develop-xxxx空间下的pod的shell:
这里和普通的namespace的授权是不一样的。一般的创建了用户权限绑定namespace就好了。但是在jumpserver这里一定要记得集群的权限!
强调的:
用户 用户组的创建区分账户模板的使用kubernetes普通用户的授权资产后面进行更详细的划分其他的:ldap集成,存储使用对象存储。至于邮件的修改就忽略了。远程应用都是企业版的功能也忽略了kubernetes的纳管有点意犹未尽:是纳管了,可是用户还需要实时看日志阿?我觉得我还是不会用jumpserver纳管kubernetes......关键词:
为你推荐
陕西两万五千吨市政桥梁完成“转身”
兰州40家A级旅游景区暂时关闭 开放时间暂定
北京丰台初步排查确诊病例密接、次密接258人 组织3万余
四川95岁战斗英雄何开仲有个心愿:想见见山东老战友
增产快!电力生产加速 能源供应偏紧将得到缓解
夏粮和早稻实现双增产 前三季度农林牧渔业增加值同比增
云南瑞丽江桥“守门员”:疫情防控不漏一人
“久病床前真孝子” 浙江男子照顾瘫痪母亲十载
黑龙江:儿童福利机构养育儿童保障标准提至1750元
山西新绛南关村民:因洪水离开家的日子
“十年磨一剑” 黑色矸石山终闻花果香
国家一级保护动物猎隼受伤 内蒙古警方送医救治
一罪犯强行脱逃下落不明 吉林省吉林监狱发布悬赏通告
涉案金额逾3000万 广西一“洗钱”团伙受审
青藏高原有雨雪天气 西南地区江南华南等地有明显降雨
湖南长沙县发现1例外省输入新冠肺炎确诊病例
青海互助:打造全国最大高原草莓种苗繁育中心
照片修复师:每修复一张照片越珍惜与亲人相处的时光
贵州率先在中国实现地质矿产勘查全过程数字化
浙江岱山通报一船沉没 2人获救11人失联
推荐内容
- 陕西两万五千吨市政桥梁完成“转身”
- 河北邯郸发生天然气泄漏事故致3人死亡
- 兰州40家A级旅游景区暂时关闭 开放时间暂定
- 湖北警方打掉两跨省“跑分”洗钱犯罪团伙
- 新冠肺炎疫情下如何保护孩子?张文宏建议设儿童专
- 海南儋州出现1例治愈后的境外输入病例复阳人员
- 男童脊柱侧弯压迫心肺 医生耗时7小时矫正
- 宁夏将开展18岁以上重点人群加强免疫接种工作
- 北京新增1例京外关联本地确诊病例 病例所在街道
- 北京丰台初步排查确诊病例密接、次密接258人 组
- 四川95岁战斗英雄何开仲有个心愿:想见见山东老战
- 增产快!电力生产加速 能源供应偏紧将得到缓解
- 夏粮和早稻实现双增产 前三季度农林牧渔业增加值
- 云南瑞丽江桥“守门员”:疫情防控不漏一人
- 宁夏吴忠核酸阳性者已确诊
- 宁夏吴忠市发现一例外省来吴核酸检测阳性人员
- “久病床前真孝子” 浙江男子照顾瘫痪母亲十载
- 内蒙古额济纳旗5名确诊病例行动轨迹:在同一饭店
- 北京疾控:近期去过这些地方的相关人员请主动报备
- 北京新增1例京外关联输入本地确诊病例
- 增强为民服务能力——做群众最盼事 解群众最难题
- 魏复盛:干一些平凡的实事
- 中缅边境畹町海关查获涉嫌走私海马干4381尾
- 黑龙江:儿童福利机构养育儿童保障标准提至1750元
- 山西新绛南关村民:因洪水离开家的日子
- “十年磨一剑” 黑色矸石山终闻花果香
- 适老化的游戏准备好了吗?电子游戏别忽视老年人
- 国家一级保护动物猎隼受伤 内蒙古警方送医救治
- 西安鄠邑发布2名密接者活动轨迹
- 宁夏吴忠发现一例外省来吴核酸检测阳性人员
- 上海籍阳性夫妻内蒙古行程涉及3个景区、1个民宿、
- 内蒙古额济纳旗启动IV级应急响应 排查出密接者197人
- 内蒙古二连浩特市两地调整为中风险地区
- 泥若二审宣判来了 知名游戏主播山泥若被判刑3年
- 河北邯郸发生天然气泄漏 3人窒息死亡
- 北京丰台报告1例甘肃来京人员新冠病毒核酸检测阳性
- 内蒙古二连浩特两个社区调整为中风险地区
- 一罪犯强行脱逃下落不明 吉林省吉林监狱发布悬赏
- 兰州6人核酸检测呈阳性 主城区局地调整为中风险区
- 涉案金额逾3000万 广西一“洗钱”团伙受审
油气
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
经济
-
服务器的管理停留在xshell登陆管理的时代,主机设备数量少,单人操作的时候还能满足使用。现在的主机数量不多不少也有大几十台。然后就面临的
-
1、没有大整,也就是做过鼻子整形和开眼角,这在韩国司空见惯,都不算是整容了,做的不错找的大概是韩国韩国的整形专家金炫澈,
-
1、经济学与经济学门类有四点区别:专业不同、关系不同、学科不同、招生方向不同。2、以下我展开进行说明:【资料拓展】一、专
-
为什么说海外银行业风波是一个广泛的资产负债表收缩的风险?除了中国外,其他国家信用收缩都进入了对资产价格产生抑制的区间?又会带来大类资
-
自制电容屏手写笔方法如下:1、准备必要物品,锡纸、棍棒、吸管、胶;2、棍棒截取3厘米长度。剪下小段吸管,胶黏到棍棒一端。使吸管圆弧面作为