5. 安全中心(权限系统)
* 安全中心只有管理员账户才有权限操作,分别有队列管理、租户管理、用户管理、告警组管理、worker分组管理、令牌管理等功能,在用户管理模块可以对资源、数据源、项目等授权
* 管理员登录,默认用户名密码:admin/dolphinscheduler123
5.1 创建队列
- 队列是在执行spark、mapreduce等程序,需要用到“队列”参数时使用的。
- 管理员进入安全中心->队列管理页面,点击“创建队列”按钮,创建队列。
5.2 添加租户
- 租户对应的是Linux的用户,用于worker提交作业所使用的用户。如果linux没有这个用户,worker会在执行脚本的时候创建这个用户。
- 租户编码:租户编码是Linux上的用户,唯一,不能重复
- 管理员进入安全中心->租户管理页面,点击“创建租户”按钮,创建租户。
5.3 创建普通用户
- 用户分为管理员用户和普通用户
* 管理员有授权和用户管理等权限,没有创建项目和工作流定义的操作的权限。
* 普通用户可以创建项目和对工作流定义的创建,编辑,执行等操作。
* 注意:如果该用户切换了租户,则该用户所在租户下所有资源将复制到切换的新租户下。
- 管理员进入安全中心->用户管理页面,点击“创建用户”按钮,创建用户。
编辑用户信息
- 管理员进入安全中心->用户管理页面,点击”编辑”按钮,编辑用户信息。
- 普通用户登录后,点击用户名下拉框中的用户信息,进入用户信息页面,点击”编辑”按钮,编辑用户信息。
修改用户密码
- 管理员进入安全中心->用户管理页面,点击”编辑”按钮,编辑用户信息时,输入新密码修改用户密码。
- 普通用户登录后,点击用户名下拉框中的用户信息,进入修改密码页面,输入密码并确认密码后点击”编辑”按钮,则修改密码成功。
5.4 创建告警组
告警组是在启动时设置的参数,在流程结束以后会将流程的状态和其他信息以邮件形式发送给告警组。
管理员进入安全中心->告警组管理页面,点击“创建告警组”按钮,创建告警组。
5.5 创建worker分组
- worker分组,提供了一种让任务在指定的worker上运行的机制。管理员创建worker分组,在任务节点和运行参数中设置中可以指定该任务运行的worker分组,如果指定的分组被删除或者没有指定分组,则该任务会在任一worker上运行。
- 管理员进入安全中心->Worker分组管理页面,点击“创建Worker分组”按钮,创建Worker分组。worker分组内有多个ip地址(不能写别名),以英文逗号分隔。
5.6 令牌管理
由于后端接口有登录检查,令牌管理提供了一种可以通过调用接口的方式对系统进行各种操作。
- 管理员进入安全中心->令牌管理页面,点击“创建令牌”按钮,选择失效时间与用户,点击”生成令牌”按钮,点击”提交”按钮,则选择用户的token创建成功。
普通用户登录后,点击用户名下拉框中的用户信息,进入令牌管理页面,选择失效时间,点击”生成令牌”按钮,点击”提交”按钮,则该用户创建token成功。
调用示例:
/**
* test token
*/
public void doPOSTParam()throws Exception{
// create HttpClient
CloseableHttpClient httpclient = HttpClients.createDefault();
// create http post request
HttpPost httpPost = new HttpPost("http://127.0.0.1:12345/escheduler/projects/create");
httpPost.setHeader("token", "123");
// set parameters
List<NameValuePair> parameters = new ArrayList<NameValuePair>();
parameters.add(new BasicNameValuePair("projectName", "qzw"));
parameters.add(new BasicNameValuePair("desc", "qzw"));
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(parameters);
httpPost.setEntity(formEntity);
CloseableHttpResponse response = null;
try {
// execute
response = httpclient.execute(httpPost);
// response status code 200
if (response.getStatusLine().getStatusCode() == 200) {
String content = EntityUtils.toString(response.getEntity(), "UTF-8");
System.out.println(content);
}
} finally {
if (response != null) {
response.close();
}
httpclient.close();
}
}
5.7 授予权限
* 授予权限包括项目权限,资源权限,数据源权限,UDF函数权限。
* 管理员可以对普通用户进行非其创建的项目、资源、数据源和UDF函数进行授权。因为项目、资源、数据源和UDF函数授权方式都是一样的,所以以项目授权为例介绍。
* 注意:对于用户自己创建的项目,该用户拥有所有的权限。则项目列表和已选项目列表中不会显示。
- 管理员进入安全中心->用户管理页面,点击需授权用户的“授权”按钮,如下图所示:
- 选择项目,进行项目授权。
- 资源、数据源、UDF函数授权同项目授权。