2017-01-08 2 views
0

프로젝트 기반 매트릭스 인증 전략을 사용하고 있으며 사용자에게 Jenkins 관리 -> 글로벌 보안 구성 -> 권한 부여 -> 사용자에게 적절한 액세스가 제공됩니다.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 

질문은 내가에서 사용자를 제거 할 수있는 방법입니다 무엇입니까?

나는 ProjectMatrixAuthorizationStrategy javadoc도 조사했지만 도움이 될만한 것을 찾을 수 없습니다.

감사합니다.

답변

0

지금까지는 작업에서 사용자/권한을 제거하는 단일 메서드 호출이 없다고 판단되었습니다. 수백 개의 작업이 있고 오래된 사용자를 삭제하면 시간이 많이 걸리기 때문에 다음과 같은 방법으로 작성했습니다. 몇 가지 테스트 작업에서 다음을 성공적으로 사용했습니다. 나는 "값의 소스"로이 그루비 스크립트 빌드 섹션에서

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

관련 문제