Jenkins Groovy从项目矩阵授权策略中删除用户访问权限

Jenkins Groovy从项目矩阵授权策略中删除用户访问权限,jenkins,groovy,jenkins-plugins,cloudbees,Jenkins,Groovy,Jenkins Plugins,Cloudbees,我们使用基于项目的矩阵授权策略,用户可以在管理Jenkins->Configure Global Security->Authorization->向用户提供适当的访问权限下访问 我们还提供文件夹级别的用户访问 使用下面的代码,我可以删除用户访问 def amp = folder.getProperties().get(AuthorizationMatrixProperty.class) def op = amp.grantedPermissions // Code to remove pe

我们使用基于项目的矩阵授权策略,用户可以在管理Jenkins->Configure Global Security->Authorization->向用户提供适当的访问权限下访问

我们还提供文件夹级别的用户访问

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

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

def op = amp.grantedPermissions

// Code to remove permissions for user from Set
这个很好用。但对于manage jenkins权限,我在下面的行中遇到错误

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

groovy.lang.MissingPropertyException: No such property: grantedPermissions for class: hudson.security.ProjectMatrixAuthorizationStrategy 
问题是如何使用Groovy(仅限)从Manage Jenkins设置中删除用户

我也查看了javadoc,但没有找到任何有帮助的东西


感谢您在这方面的帮助。

据我所知,没有任何方法调用会从作业中删除用户/权限。我编写了以下方法,因为我有数百个作业,删除旧用户非常耗时。我在一些测试工作中成功地使用了以下内容。我合并了ExtendedChoice参数插件来选择一个用户,这个groovy脚本是“值的源代码”

在构建部分

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)

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

在构建部分

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)

你好,皮特,感谢更新,我可以从作业级别取消用户访问权限,但不能从管理Jenkins->配置全局安全->授权->用户Shi Pete,感谢更新,我可以从作业级别取消用户访问权限,但不能从管理Jenkins->配置全局安全->授权->用户
      ------------------------------------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]]