Apache DolphinScheduler 需要的sudo,还可以这么玩,长见识了!
Apache DolphinScheduler(incubator)需要的sudo,还可以这么玩,长见识了!
在新一代大数据任务调度 - Apache DolphinScheduler(以下简称dolphin) 官网中部署安装需要对部署OS用户配置sudo且免密
echo 'dolphinscheduler ALL=(ALL) NOPASSWD: NOPASSWD: ALL' >> /etc/sudoers
看到这的时候,你是否也对此处产生一点疑问?dolphin部署OS用户需配置可免密操作所有用户的权限?dolphin部署OS用户需拥有和root一样的权限?dolphin部署OS用户使用root权限操作什么?...
DolphinScheduler简介
Apache DolphinScheduler是一个分布式去中心化,易扩展的可视化DAG工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用,目前已累计有 400+ 公司在生产上使用。
特点
高可靠性
去中心化的多Master和多Worker, 自身支持HA功能, 采用任务队列来避免过载,不会造成机器卡死;
简单易用
DAG监控界面,所有流程定义都是可视化,通过拖拽任务定制DAG,通过API方式与第三方系统对接, 一键部署;
丰富的使用场景
支持暂停恢复操作. 支持多租户,更好的应对大数据的使用场景. 支持更多的任务类型,如 spark, hive, mr, python, sub_process, shell;
高扩展性
支持自定义任务类型,调度器使用分布式调度,调度能力随集群线性增长,Master和Worker支持动态上下线;
主要能力
Task以DAG形式关联,实时监控任务的状态;
支持Shell、MR、Spark、SQL、依赖等10多种任务类型;
工作流优先级、任务优先级,全局参数及局部自定义参数;
工作流可定时、依赖、手动、暂停/停止/恢复;
支持补数、多租户、日志在线查看及资源在线管理;
完善的系统服务监控,任务超时告警/失败;
去中心化设计确保系统的稳定、高可用;
支持每日十万数据量级任务稳定运行;
我非常看好dolphin,但在实施中遇到公司要求不允许开通root权限,那还怎么搞下去?
如果能想怎么玩就怎么玩的大佬请忽略此文章,跪求带带小弟,我会喊666~
问题场景
说一个我在公司遇到的场景,基础设施运营和应用组件归属不同团队,运营团队要求应用层不允许拥有root权限,但dolphin使用需要配置sudo且免密,从官网配置要求看,此时的dolphin部署OS用户是和root账号一样拥有整个系统的最高权限。在运营安全角度来看,很危险。但你还想要玩,运营给了两条路,1.向上级领导审批,特事特办;2.申请机器,独自运营;哪条路都不好走,只能另寻出路。
调度选的好,下班回家早;调度选的对,半夜安心睡;选择dolphin,干就完了。
dolphin引用sudo用途
sudo描述
sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,sudo的权限控制可以在/etc/sudoers文件中查看到。
dolphin配置sudo且免密做什么?
官网解释:以 sudo -u {linux-user} 切换不同linux用户的方式来实现多租户运行作业,所以部署用户需要有 sudo 权限,而且是免密的。
源码分析
dolphin使用sudo工具干了哪些事情
一键部署/执行任务脚本类命令/kill命令
解决方案
自己冥思苦想几种方案,效果都不理想
1.将dolphin部署OS用户配置可以向大数据集群所有租户下提交作业,通过指定队列来区分。缺点:dolphin部署OS用户在大数据集群权限非常大,对不同租户下的作业都有操作权限。
2.修改dolphin源码,移除sudo命令,在每个OS用户下安装一个worker节点,通过worker分组来实现多租户提交作业。缺点:worker节点过多,占有大量系统资源。
这个问题跟sudo配置有关,还得从sudo方面下手,发现sudo在配置的时候可以指定只允许部分OS用户账号。这样dolphin部署OS用户账号只有指定部分OS用户账号的操作权限,完全满足dolphin 使用sudo -u {linux-user}命令来解决实现多租户运行作业问题,也满足dolphin部署OS用户的权限只有普通用户权限和可以操作指定OS用户权限。
开搞
sudo的权限控制在文件/etc/sudoers内配置
root ALL=(ALL:ALL) ALL%wheel ALL=(ALL) ALL
%sudo ALL=(ALL:ALL) ALL
对/etc/sudoers文件进行编辑的代码公式可以概括为:
授权用户/组 主机=[(切换到哪些用户或组)] [是否需要输入密码验证] 命令1,命令2,...
解释
'授权用户/组':
以%号开头的表示"将要授权的组";
不以%号开头的表示"将要授权的用户";
'主机':允许登录的主机,
ALL表示所有;
如果该字段不为ALL,表示授权用户只能在某些机器上登录本服务器来执行sudo命令.
'[(切换到哪些用户或组)]':
为(ALL)或者(ALL:ALL), 表示能够提权到(任意用户:任意用户组);
为(),代表省略, 相当于(root:root),表示可以通过sudo提权到root;
'[是否需要输入密码验证] ':
为NOPASSWD: 代表执行sudo时可以不需要输入密码
'命令1,命令2,...':
多个命令使用逗号分隔,这些命令是授权给用户的操作; 命令都是使用绝对路径,避免目录下同名命令情况;
ALL表示允许所有操作
[ ]中的内容, 都能省略
按照上文修改如下
echo 'dolphinscheduler ALL=(userA,userB,userC) NOPASSWD: NOPASSWD: ALL' >> /etc/sudoers
其中userA,userB,userC代表是linux OS用户,用于多租户向大数据集群提交作业。
后面有新增租户,提交运营申请dolphin worker节点所在机器新增sudo配置权限控制,也实现了机器OS用户使用权限控制。
注:我是按用户userA,userB,userC去申请sudo控制权限,此处使用用户组去申请sudo控制权限是不是会更好,有待其他小伙伴去探索。
解决了sudo问题,dolphin完全可以使用普通OS用户普通权限运行。
你是否有更好的想法,欢迎留言讨论!
您知道么?
为什么要参与开源?
这里汇总了以下对个人来说比较重要的几点:
参与开源的方式?
参与 DolphinScheduler 社区有非常多的参与贡献的方式,包括文档、翻译、答疑、测试、代码、会议分享等,此外也极其欢迎各种实践文章,DolphinScheduler开源社区非常期待您的参与。
贡献第一个PR(文档、代码) 我们也希望是简单的,用第 1 个 PR 来熟悉社区的流程和友好度,也判断一下这是不是我想参与贡献的社区呐
文档github地址:https://github.com/apache/incubator-dolphinscheduler-website
当然如果您酷爱coding,社区也是非常欢迎“show me the code"的。
戳原文,立刻奔向
DolphinScheduler
的 github 仓库一起玩耍,来个 star 先收藏也是好的
Apache DolphinScheduler 需要的sudo,还可以这么玩,长见识了!的更多相关文章
- Apache DolphinScheduler新一代分布式工作流任务调度平台实战-上
概述 定义 dolphinscheduler 官网地址 https://dolphinscheduler.apache.org/ dolphinscheduler GitHub地址 https://g ...
- Apache DolphinScheduler 1.3.9 发布,新增 StandaloneServer
点击上方 蓝字关注我们 2021 年 10 月 22 日,Apache DolphinScheduler 正式发布 1.3.9 版本.时隔一个半月,在社区贡献者的共同努力下,Apache Dolphi ...
- Apache DolphinScheduler 3.0.0 正式版发布!
点亮 ️ Star · 照亮开源之路 GitHub:https://github.com/apache/dolphinscheduler 版本发布 2022/8/10 2022 年 8 ...
- 感谢有你!Apache DolphinScheduler 项目 GitHub star 突破 8k
本周伊始,Apache DolphinScheduler 项目在 GitHub 上的 Github Star 总数首次突破 8K.目前,Apache DolphinScheduler 社区已经拥有 C ...
- 大数据平台迁移实践 | Apache DolphinScheduler 在当贝大数据环境中的应用
大家下午好,我是来自当贝网络科技大数据平台的基础开发工程师 王昱翔,感谢社区的邀请来参与这次分享,关于 Apache DolphinScheduler 在当贝网络科技大数据环境中的应用. 本次演讲主要 ...
- Apache DolphinScheduler&TiDB联合Meetup | 聚焦开源生态发展下的应用开发能力
在软件开发领域有一个流行的原则:Don't Repeat Yourself(DRY),翻译过来就是:不要重复造轮子.而开源项目最基本的目的,其实就是为了不让大家重复造轮子. 尤其是在大数据这样一个高速 ...
- Apache DolphinScheduler 2.X保姆级源码解析,中国移动工程师揭秘服务调度启动全流程
2022年1月,科学技术部高新技术司副司长梅建平在"第六届中国新金融高峰论坛"上表示,当前数据量已经大大超过了处理能力的上限,若信息技术仍然是渐进式发展,则数据处理能力的提升将远远 ...
- 中国联通改造 Apache DolphinScheduler 资源中心,实现计费环境跨集群调用与数据脚本一站式访问
截止2022年,中国联通用户规模达到4.6亿,占据了全中国人口的30%,随着5G的推广普及,运营商IT系统普遍面临着海量用户.海量话单.多样化业务.组网模式等一系列变革的冲击. 当前,联通每天处理话单 ...
- 论语音社交视频直播平台与 Apache DolphinScheduler 的适配度有多高
在 Apache DolphinScheduler& Apache ShenYu(Incubating) Meetup 上,YY 直播 软件工程师 袁丙泽 为我们分享了<YY直播基于Ap ...
随机推荐
- [codeforces] 暑期训练之打卡题(一)
每个标题都做了题目原网址的超链接 Day1<Vanya and Lanterns> 题意: 一条长度为 l 的街道,在这条街道上放置了n个相同的灯,街道一端位置记为0,每个灯的位置在ai处 ...
- 手动搭建简易web框架与django框架简介
目录 纯手写简易web框架 基于wsgiref模块 动静态网页 简单了解jinja2模块 框架请求流程 python主流web框架 django框架 简介 应用app 命令操作django pycha ...
- Meaven静态资源过滤
` 点击查看代码 <build> <resources> <resource> <directory>src/main/java</directo ...
- vue大型电商项目尚品汇(前台篇)day05
紧急更新第二弹,然后就剩下最后一弹,也就是整个前台的项目 一.购物车 1.加入购物车(新知识点) 加入到购物车是需要接口操作的,因为我们需要将用户的加入到购物车的保存到服务器数据库,你的账号后面才会在 ...
- Linux版本的项目环境搭建
项目环境docker及docker-compose文档 1.Linux环境介绍 centos7.6 16G以上内存空间(至少8G) 2.静态IP设置 1.找到配置文件 cd /etc/sysconfi ...
- 基于Kubernetes v1.24.0的集群搭建(三)
1 使用kubeadm部署Kubernetes 如无特殊说明,以下操作可以在所有节点上进行. 1.1 首先我们需要配置一下阿里源 cat <<EOF > /etc/yum.repos ...
- 29.MySQL高级SQL语句
MySQL高级SQL语句 目录 MySQL高级SQL语句 创建两个表 SELECT DISTINCT WHERE AND OR IN BETWEEN 通配符 LIKE ORDER BY 函数 数学函数 ...
- C语言 C++1X STL QT免费视频课程 QT5界面开发美化 式样表 QML
C/C++/QT界面开发界面美化视频课程系列 课程1 C语言 C++1X STL QT免费视频课程 QT5界面开发美化 式样表 QML 返回顶部 课程1 C语言 C++1X STL QT免费视 ...
- java反射之-Javabean与Map的互转
1.BeanUntils工具类的准备 /** * @ClassName: BeanUtils * @Description: * @Author: songwp * @Date: 9:02 2022/ ...
- 期末人福音——用Python写个自动批改作业系统
一.亮出效果 最近一些软件的搜题.智能批改类的功能要下线. 退1024步讲,要不要自己做一个自动批改的功能啊?万一哪天孩子要用呢! 昨晚我做了一个梦,梦见我实现了这个功能,如下图所示:功能简介:作对了 ...