【问题标题】:Jenkins Groovy Remove user access from Project Matrix Authorization StrategyJenkins Groovy 从项目矩阵授权策略中删除用户访问权限
【发布时间】:2017-01-11 01:18:02
【问题描述】:

我们正在使用基于项目的矩阵授权策略,并在管理 Jenkins -> 配置全局安全 -> 授权 -> 为用户提供适当的访问权限下授予用户访问权限。

我们也在文件夹级别提供用户访问权限。

使用下面的代码我可以删除用户访问权限,

def amp = folder.getProperties().get(AuthorizationMatrixProperty.class)

def op = amp.grantedPermissions

// Code to remove permissions for user from Set

这很好用。但是为了管理 jenkins 权限,我在下面的行中遇到错误,

def amp = Jenkins.instance.getAuthorizationStrategy()
def op = amp.grantedPermissions

groovy.lang.MissingPropertyException: No such property: grantedPermissions for class: hudson.security.ProjectMatrixAuthorizationStrategy 

问题是如何使用 Groovy(仅)从管理 Jenkins 设置中删除用户?

我也查看了ProjectMatrixAuthorizationStrategy javadoc,但找不到任何有用的东西。

感谢您对此的任何帮助。

【问题讨论】:

    标签: jenkins groovy jenkins-plugins cloudbees


    【解决方案1】:

    据我所知,没有单一的方法调用会从作业中删除用户/权限。我写了以下方法,因为我有数百个工作,删除旧用户很耗时。我在一些测试工作中成功使用了以下内容。我已经合并了扩展选择参数插件来选择一个用户,这个 groovy 脚本作为“值的来源”

    import hudson.security.*
    import jenkins.security.*
    import jenkins.model.Jenkins
    
    def sids = Jenkins.instance.authorizationStrategy.getAllSIDs()
    return sids
    

    在构建部分;

    def removeAMP(Job jobName, user ) {
       println jobName.name.center(80,'-')
    
       def authorizationMatrixProperty = jobName.getProperty(AuthorizationMatrixProperty.class)
       Map<Permission,Set<String>> Permissions = authorizationMatrixProperty.getGrantedPermissions()
       println "Permission Map Before: " + Permissions + cr
       println "Permission Values: " + Permissions.values() + cr
    
       for (Set<String> permissionUsers:Permissions.values()) {
         permissionUsers.remove(user)  
       }
       println "Permission Map After: " + Permissions + cr
       jobName.save();
    }
    
    testJobList = [ "TESTJOBA", "TESTJOBB" ]
    testJobList.each {
    jobName = hudson.model.Hudson.instance.getItem(it);
    removeAMP(jobName, user)
    

    输出:

          ------------------------------------TESTJOBA------------------------------------
    Permission Map Before: [Permission[interface hudson.model.Item,Read]:[bob,fred], Permission[interface hudson.model.Item,ExtendedRead]:[bob,fred], Permission[interface hudson.model.Item,Discover]:[bob,fred], Permission[interface hudson.model.Item,Build]:[bob,fred], Permission[interface hudson.model.Item,Cancel]:[bob,fred], Permission[interface hudson.model.Item,Workspace]:[bob,fred]]
    
    Permission Values: [[bob,fred], [bob,fred], [bob,fred], [bob,fred], [bob,fred], [bob,fred]]
    
    Permission Map After: [Permission[interface hudson.model.Item,Read]:[bob], Permission[interface hudson.model.Item,ExtendedRead]:[bob], Permission[interface hudson.model.Item,Discover]:[bob], Permission[interface hudson.model.Item,Build]:[bob], Permission[interface hudson.model.Item,Cancel]:[bob], Permission[interface hudson.model.Item,Workspace]:[bob]]
    

    【讨论】:

    • 嗨皮特,感谢更新,我可以从作业级别撤消用户访问权限,但不能从管理 Jenkins -> 配置全局安全 -> 授权 -> 用户
    猜你喜欢
    • 1970-01-01
    • 2016-05-20
    • 1970-01-01
    • 2018-07-21
    • 2021-11-27
    • 2021-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多