2017-01-08 79 views
0

我們正在使用基於項目的矩陣授權策略,並且在Manage Jenkins - > Configure Global Security - > Authorization - >下爲用戶提供訪問權限,爲用戶提供適當的訪問權限。Jenkins Groovy從項目矩陣授權策略中刪除用戶訪問權

我們也在文件夾級別提供用戶訪問。

使用下面的代碼,我能夠刪除用戶訪問,

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

def op = amp.grantedPermissions 

// Code to remove permissions for user from Set 

這工作得很好。但對於管理權限詹金斯,我在下面行收到錯誤,

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

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

問題是我怎麼才能把用戶使用Groovy(只)管理詹金斯設置?

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

欣賞這方面的任何幫助。

回答

0

據我所能確定沒有任何單一方法調用將從Job中刪除用戶/權限。我寫了以下方法,因爲我有數百個作業,刪除舊用戶非常耗時。我在一些測試工作中成功使用了以下內容。我已將Extended Choice參數插件合併爲選擇用戶,並將此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]] 
+0

皮特嗨,感謝您的更新,我能夠撤消工作水平的用戶訪問而不是從管理詹金斯 - >配置全球安全 - >授權 - >用戶 – Vijay