安全中心(权限系统)

  • 安全中心只有管理员账户才有权限操作,分别有队列管理、租户管理、用户管理、告警组管理、worker分组管理、令牌管理等功能,在用户管理模块可以对资源、数据源、项目等授权
  • 管理员登录,默认用户名密码:admin/dolphinscheduler123

创建队列

  • 队列是在执行spark、mapreduce等程序,需要用到“队列”参数时使用的。
  • 管理员进入安全中心->队列管理页面,点击“创建队列”按钮,创建队列。

安全中心 - 图1

添加租户

  • 租户对应的是Linux的用户,用于worker提交作业所使用的用户。如果linux没有这个用户,则会导致任务运行失败。你可以通过修改 worker.properties 配置文件中参数 worker.tenant.auto.create=true 实现当 linux 用户不存在时自动创建该用户。worker.tenant.auto.create=true 参数会要求 worker 可以免密运行 sudo 命令。
  • 租户编码:租户编码是Linux上的用户,唯一,不能重复
  • 管理员进入安全中心->租户管理页面,点击“创建租户”按钮,创建租户。

安全中心 - 图2

创建普通用户

  • 用户分为管理员用户普通用户

    • 管理员有授权和用户管理等权限,没有创建项目和工作流定义的操作的权限。
    • 普通用户可以创建项目和对工作流定义的创建,编辑,执行等操作。
    • 注意:如果该用户切换了租户,则该用户所在租户下所有资源将复制到切换的新租户下。
  • 进入安全中心->用户管理页面,点击“创建用户”按钮,创建用户。

安全中心 - 图3

编辑用户信息

  • 管理员进入安全中心->用户管理页面,点击”编辑”按钮,编辑用户信息。
  • 普通用户登录后,点击用户名下拉框中的用户信息,进入用户信息页面,点击”编辑”按钮,编辑用户信息。

修改用户密码

  • 管理员进入安全中心->用户管理页面,点击”编辑”按钮,编辑用户信息时,输入新密码修改用户密码。
  • 普通用户登录后,点击用户名下拉框中的用户信息,进入修改密码页面,输入密码并确认密码后点击”编辑”按钮,则修改密码成功。

创建告警组

  • 告警组是在启动时设置的参数,在流程结束以后会将流程的状态和其他信息以邮件形式发送给告警组。

  • 管理员进入安全中心->告警组管理页面,点击“创建告警组”按钮,创建告警组。

    安全中心 - 图4

令牌管理

由于后端接口有登录检查,令牌管理提供了一种可以通过调用接口的方式对系统进行各种操作。

  • 管理员进入安全中心->令牌管理页面,点击“创建令牌”按钮,选择失效时间与用户,点击”生成令牌”按钮,点击”提交”按钮,则选择用户的token创建成功。

    安全中心 - 图5

  • 普通用户登录后,点击用户名下拉框中的用户信息,进入令牌管理页面,选择失效时间,点击”生成令牌”按钮,点击”提交”按钮,则该用户创建token成功。

  • 调用示例:

  1. /**
  2. * test token
  3. */
  4. public void doPOSTParam()throws Exception{
  5. // create HttpClient
  6. CloseableHttpClient httpclient = HttpClients.createDefault();
  7. // create http post request
  8. HttpPost httpPost = new HttpPost("http://127.0.0.1:12345/escheduler/projects/create");
  9. httpPost.setHeader("token", "123");
  10. // set parameters
  11. List<NameValuePair> parameters = new ArrayList<NameValuePair>();
  12. parameters.add(new BasicNameValuePair("projectName", "qzw"));
  13. parameters.add(new BasicNameValuePair("desc", "qzw"));
  14. UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(parameters);
  15. httpPost.setEntity(formEntity);
  16. CloseableHttpResponse response = null;
  17. try {
  18. // execute
  19. response = httpclient.execute(httpPost);
  20. // response status code 200
  21. if (response.getStatusLine().getStatusCode() == 200) {
  22. String content = EntityUtils.toString(response.getEntity(), "UTF-8");
  23. System.out.println(content);
  24. }
  25. } finally {
  26. if (response != null) {
  27. response.close();
  28. }
  29. httpclient.close();
  30. }
  31. }

授予权限

  • 授予权限包括项目权限,资源权限,数据源权限,UDF函数权限。
  • 管理员可以对普通用户进行非其创建的项目、资源、数据源和UDF函数进行授权。因为项目、资源、数据源和UDF函数授权方式都是一样的,所以以项目授权为例介绍。
  • 注意:对于用户自己创建的项目,该用户拥有所有的权限。则项目列表和已选项目列表中不会显示。

  • 管理员进入安全中心->用户管理页面,点击需授权用户的“授权”按钮,如下图所示:

    安全中心 - 图6

  • 选择项目,进行项目授权。

安全中心 - 图7

  • 资源、数据源、UDF函数授权同项目授权。

Worker分组

每个worker节点都会归属于自己的Worker分组,默认分组为default.

在任务执行时,可以将任务分配给指定worker分组,最终由该组中的worker节点执行该任务.

新增/更新 worker分组

  • 打开要设置分组的worker节点上的”conf/worker.properties”配置文件. 修改worker.groups参数.
  • worker.groups参数后面对应的为该worker节点对应的分组名称,默认为default.
  • 如果该worker节点对应多个分组,则以逗号隔开.
  1. 示例:
  2. worker.groups=default,test
  • 也可以在运行中修改worker所属的worker分组,如果修改成功,worker就会使用这个新建的分组,忽略worker.properties中的配置。修改步骤为”安全中心 -> worker分组管理 -> 点击 ‘新建worker分组’ -> 输入’组名称’ -> 选择已有worker -> 点击’提交’”

环境管理

  • 在线配置Worker运行环境,一个Worker可以指定多个环境,每个环境等价于dolphinscheduler_env.sh文件.

  • 默认环境为dolphinscheduler_env.sh文件.

  • 在任务执行时,可以将任务分配给指定worker分组,根据worker分组选择对应的环境,最终由该组中的worker节点执行环境后执行该任务.

创建/更新 环境

  • 环境配置等价于dolphinscheduler_env.sh文件内配置

    安全中心 - 图8

使用 环境

  • 在工作流定义中创建任务节点选择Worker分组和Worker分组对应的环境,任务执行时Worker会先执行环境在执行任务.

    安全中心 - 图9