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,还可以这么玩,长见识了!的更多相关文章

  1. Apache DolphinScheduler新一代分布式工作流任务调度平台实战-上

    概述 定义 dolphinscheduler 官网地址 https://dolphinscheduler.apache.org/ dolphinscheduler GitHub地址 https://g ...

  2. Apache DolphinScheduler 1.3.9 发布,新增 StandaloneServer

    点击上方 蓝字关注我们 2021 年 10 月 22 日,Apache DolphinScheduler 正式发布 1.3.9 版本.时隔一个半月,在社区贡献者的共同努力下,Apache Dolphi ...

  3. Apache DolphinScheduler 3.0.0 正式版发布!

    ​  点亮 ️ Star · 照亮开源之路 GitHub:https://github.com/apache/dolphinscheduler   ​ 版本发布 2022/8/10 2022 年 8 ...

  4. 感谢有你!Apache DolphinScheduler 项目 GitHub star 突破 8k

    本周伊始,Apache DolphinScheduler 项目在 GitHub 上的 Github Star 总数首次突破 8K.目前,Apache DolphinScheduler 社区已经拥有 C ...

  5. 大数据平台迁移实践 | Apache DolphinScheduler 在当贝大数据环境中的应用

    大家下午好,我是来自当贝网络科技大数据平台的基础开发工程师 王昱翔,感谢社区的邀请来参与这次分享,关于 Apache DolphinScheduler 在当贝网络科技大数据环境中的应用. 本次演讲主要 ...

  6. Apache DolphinScheduler&TiDB联合Meetup | 聚焦开源生态发展下的应用开发能力

    在软件开发领域有一个流行的原则:Don't Repeat Yourself(DRY),翻译过来就是:不要重复造轮子.而开源项目最基本的目的,其实就是为了不让大家重复造轮子. 尤其是在大数据这样一个高速 ...

  7. Apache DolphinScheduler 2.X保姆级源码解析,中国移动工程师揭秘服务调度启动全流程

    2022年1月,科学技术部高新技术司副司长梅建平在"第六届中国新金融高峰论坛"上表示,当前数据量已经大大超过了处理能力的上限,若信息技术仍然是渐进式发展,则数据处理能力的提升将远远 ...

  8. 中国联通改造 Apache DolphinScheduler 资源中心,实现计费环境跨集群调用与数据脚本一站式访问

    截止2022年,中国联通用户规模达到4.6亿,占据了全中国人口的30%,随着5G的推广普及,运营商IT系统普遍面临着海量用户.海量话单.多样化业务.组网模式等一系列变革的冲击. 当前,联通每天处理话单 ...

  9. 论语音社交视频直播平台与 Apache DolphinScheduler 的适配度有多高

    在 Apache DolphinScheduler& Apache ShenYu(Incubating) Meetup 上,YY 直播 软件工程师 袁丙泽 为我们分享了<YY直播基于Ap ...

随机推荐

  1. 【单片机】CH32V103C8T6 ——窗口看门狗

    本章教程通过串口调试助手打印显示程序运行状态,具体现象如下: 若计数器值在上窗口值和下窗口值0X40之间的时候,进行喂狗操作,计数器重新计数,程序正常运行,串口打印显示:The program run ...

  2. RabbitMQ 环境安装

    每日一句 Wisdom is knowing what to do next, skill is knowing how to do it, and virtue is doing it. 智慧是知道 ...

  3. 关于spring整合mybatis

    第一步导入依赖 <dependencies> <dependency> <groupId>org.mybatis</groupId> <artif ...

  4. Spring AOP快速使用教程

    ​ Spring是方法级别的AOP框架,我们主要也是以某个类的某个方法作为连接点,用动态代理的理论来说,就是要拦截哪个方法织入对应的AOP通知.为了更方便的测试我们首先创建一个接口 public in ...

  5. CabloyJS 4.12震撼发布,及新版教程尝鲜

    引言 凡是可以用 JavaScript 来写的应用,最终都会用 JavaScript 来写 | Atwood 定律 目前市面上出现的大多数与 NodeJS 相关的框架,基本都将 NodeJS 定位在工 ...

  6. conda cheat sheet可直接百度这个名字

  7. 使用AndroidKiller进行APK反编译

    安装环境 JDK 最好用JDK8,问就是坑太多了 Android Studio 官网安装即可,安装教程如下 https://www.runoob.com/android/android-studio- ...

  8. 你难道不知道Vue-cookie?

    install npm install vue-cookies --save main.js import VueCookies from 'vue-cookies'Vue.use(VueCookie ...

  9. CAD图在线Web测量工具代码实现(测量距离、面积、角度等)

    CAD如今在各个领域均得到了普遍的应用并大大提高了工程技术人员的工作效率.在桌面端,AutoCAD测量工具已经非常强大:然后在Web端,如何准确.快速的对CAD图在Web进行测量呢? 功能 能Web在 ...

  10. ShardingSphere-proxy-5.0.0容量范围分片的实现(五)

    一.修改配置文件config-sharding.yaml,并重启服务 # # Licensed to the Apache Software Foundation (ASF) under one or ...