2017-01-08 2 views
0

Nous utilisons la stratégie d'autorisation Matrix basée sur le projet et les utilisateurs ont accès sous Gérer Jenkins -> Configurer la sécurité globale -> Autorisation -> Les utilisateurs ont accès aux accès appropriés.Jenkins Groovy Supprimer l'accès utilisateur de Project Matrix Stratégie d'autorisation

Nous fournissons également des accès utilisateurs au niveau du dossier.

En utilisant le code ci-dessous, je suis en mesure de supprimer l'accès utilisateur,

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

def op = amp.grantedPermissions 

// Code to remove permissions for user from Set 

Cela fonctionne très bien. Mais pour gérer les autorisations de jenkins, je reçois une erreur à la ligne ci-dessous,

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

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

La question est comment je peux supprimer des utilisateurs de gérer les paramètres Jenkins à l'aide Groovy (uniquement)?

J'ai regardé dans le ProjectMatrixAuthorizationStrategy javadoc aussi, mais je n'ai rien trouvé qui puisse aider.

apprécierais toute aide à ce sujet.

Répondre

0

Dans la mesure où j'ai été en mesure de déterminer il n'y a pas d'appel de méthode unique qui va supprimer un utilisateur/autorisations d'un travail. J'ai écrit la méthode suivante parce que j'ai des centaines de travaux et la suppression des anciens utilisateurs prenait beaucoup de temps. J'ai utilisé avec succès ce qui suit sur quelques travaux de test. J'ai incorporé le choix étendu de paramètres Plugin pour sélectionner un utilisateur, avec ce script groovy comme « source pour la valeur »

import hudson.security.* 
import jenkins.security.* 
import jenkins.model.Jenkins 

def sids = Jenkins.instance.authorizationStrategy.getAllSIDs() 
return sids 

Dans la section de construction;

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) 

sortie:

 ------------------------------------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

Salut Pete, Merci pour la mise à jour, je suis en mesure de révoquer l'accès utilisateur à partir du niveau d'emploi, mais pas de gérer Jenkins -> Configurer la sécurité mondiale -> Autorisation -> Utilisateurs – Vijay