美文网首页
003.Azkaban-3.x 用户管理

003.Azkaban-3.x 用户管理

作者: CoderJed | 来源:发表于2019-08-23 13:03 被阅读0次

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

    1. XmlUserManager

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

    user.manager.class=azkaban.user.XmlUserManager
    user.manager.xml.file=conf/azkaban-users.xml
    

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

    <azkaban-users>
        ...
    </azkaban-users>
    

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

    (1) Users

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

    <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>这个标签:

    <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>这个标签:

    <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接口:

    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文件:

    user.manager.class=com.your.code.MainClass
    

    相关文章

      网友评论

          本文标题:003.Azkaban-3.x 用户管理

          本文链接:https://www.haomeiwen.com/subject/bzwzsctx.html