前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Azkaban-3.x 用户管理

Azkaban-3.x 用户管理

作者头像
CoderJed
发布2019-08-23 17:48:07
1.2K0
发布2019-08-23 17:48:07
举报
文章被收录于专栏:Jed的技术阶梯Jed的技术阶梯

绝大多数应用系统都会有用户和权限管理的功能,Azkaban当然也有,用户可用于登录页面,权限则可以控制当前用户可以看到哪些project,以及对他的操作范围进行控制。

1. XmlUserManager

XmlUserManager是Azkaban中内置的默认UserManager类,在azkaban.properties文件中的设置如下:

代码语言:javascript
复制
user.manager.class=azkaban.user.XmlUserManager
user.manager.xml.file=conf/azkaban-users.xml

你可以自定义一个xml文件用于配置用户和角色,当然需要修改user.manager.xml.file的值,并且你指定的xml文件的根标签必须是:

代码语言:javascript
复制
<azkaban-users>
    ...
</azkaban-users>

这个文件不能动态修改,因为azkaban只会在web-server启动的时候加载一次这个文件。

(1) Users

添加用户,需要使用<user>这个标签:

代码语言:javascript
复制
<azkaban-users>
   <user username="myusername" password="mypassword" roles="a" groups="mygroup" / >
   <user username="myusername2" password="mypassword2" roles="a, b" groups="ga, gb" / >
   ...
 </azkaban-users>

属性

说明

是否必需

username

用户名

yes

password

密码

yes

roles

角色,多个使用","分隔

no

groups

所属组,多个使用","分隔

no

proxy

这个用户可以代理的用户,多个使用","分隔

no

(2) Groups

添加组,需要使用<group>这个标签:

代码语言:javascript
复制
<azkaban-users>
  <user username="a" ... groups="groupa" / >
  ...
  <group name="groupa" roles="myrole" / >
  ...
</azkaban-users>

以上配置中,a用户属于groupa组,因为groupa组有myrole角色,所以a用户也有myrole角色。

属性

说明

是否必需

name

组名

yes

roles

组的角色,多个使用","分隔

on

(3) Roles

添加角色,需要使用<role>这个标签:

代码语言:javascript
复制
<azkaban-users>
  <user username="a" ... groups="groupa" roles="readall" / >
  <user username="b" ... / >
  ...
  <group name="groupa" roles="admin" / >
  ...
  <role name="admin" permissions="ADMIN" / >
  <role name="readall" permissions="READ" / >
</azkaban-users>

以上配置中,admin角色有"ADMIN"权限,readall角色有"READ"权限,groupa组是admin角色,所以groupa组中成员具有"ADMIN"权限,所以a用户具有"ADMIN"权限,同时由于指定了a用户的roles="readall",所以a用户也具有"READ"权限。

属性

说明

是否必需

name

角色名

yes

permissions

权限,多个使用","分隔

yes

可以选择的权限如下:

权限名

说明

ADMIN

具有所有权限

READ

只能访问每个project,并且查看project的日志

WRITE

可以上传文件,修改任务属性,删除project

EXECUTE

可以启动任务

SCHEDULE

可以调度任务

CREATEPROJECTS

可以创建project

2. 自定义用户管理的类

实现UserManager接口:

代码语言:javascript
复制
public interface UserManager {
    public User getUser(String username, String password) throws UserManagerException;
    public boolean validateUser(String username);
    public boolean validateGroup(String group);
    public Role getRole(String roleName);
    public boolean validateProxyUser(String proxyUser, User realUser);
}

自定义的类的构造器中应该传入azkaban.utils.Props对象,打包后放入extlib目录或者plugins目录下,修改azkaban.properties文件:

代码语言:javascript
复制
user.manager.class=com.your.code.MainClass
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.08.23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. XmlUserManager
    • (1) Users
      • (2) Groups
        • (3) Roles
        • 2. 自定义用户管理的类
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档