Jenkins 插件的权限配置

在Jenkins中开发一个左边菜单的插件(在Jenkins中管这种插件叫Action),照别人的例子写了一个保存文件版本信息到数据库的插件,还想要权限控制。

首先要定义权限,定义权限的核心代码是

@Extension
public class PersistPlugin extends Plugin {
    private static final PermissionGroup GROUP = 
          new PermissionGroup(PersistPlugin.class, Messages._plugin_security_groupName());

    public static final Permission RUN = new Permission(GROUP, Messages.plugin_security_run(), Messages._plugin_security_run(), Jenkins.ADMINISTER, PermissionScope.JENKINS);
}

 其中关于Permission和checkPermission,hasPermission的内部实现,暂时还不清楚。但定义好了上经权限好,需要在Configure Global Security是启用安全,禁用用户注册,在授权策略中启用安全矩阵

如果不打算分配插件的权限给用户,在安全矩阵中不要分配此权限给用户,同时也不要分配ADMINISTER权限给用户,否则用户还是有权限。在Jenkins的Permission中有层次关系,如果指明了上一层次的权限,则表明下级也拥有的权限。以下是上面用到的构造方法:

public Permission(PermissionGroup group, String name, Localizable description, Permission impliedBy, PermissionScope scope) {
        this(group,name,description,impliedBy,true,new PermissionScope[]{scope});
        assert scope!=null;
    }

 在上面这个构造方法中,有一个impliedBy的参数,表明此权限的上一层次。所以分配权限,编写插件时要注意到家一点。

猜你喜欢

转载自phoenix-85.iteye.com/blog/2124042