Skip to content

Instantly share code, notes, and snippets.

@albertogviana
Created October 17, 2017 12:07
Show Gist options
  • Save albertogviana/0700817b75145042ada83bd385b79c6e to your computer and use it in GitHub Desktop.
Save albertogviana/0700817b75145042ada83bd385b79c6e to your computer and use it in GitHub Desktop.
Script to grant users permissions on Jenkins. You need to install matrix-auth if you want to use it
{
"users":[
{
"username": "user1",
"role": "master"
},
{
"username": "user2",
"role": "master"
},
{
"username": "user3",
"role": "authenticated"
}
]
}
#!groovy
import jenkins.*
import hudson.*
import jenkins.model.*
import hudson.model.*
import hudson.security.*
import com.cloudbees.plugins.credentials.*
import groovy.json.*
masterRole = [
com.cloudbees.plugins.credentials.CredentialsProvider.CREATE,
com.cloudbees.plugins.credentials.CredentialsProvider.DELETE,
com.cloudbees.plugins.credentials.CredentialsProvider.MANAGE_DOMAINS,
com.cloudbees.plugins.credentials.CredentialsProvider.UPDATE,
com.cloudbees.plugins.credentials.CredentialsProvider.VIEW,
hudson.model.Computer.BUILD,
hudson.model.Computer.CONFIGURE,
hudson.model.Computer.CONNECT,
hudson.model.Computer.CREATE,
hudson.model.Computer.DELETE,
hudson.model.Computer.DISCONNECT,
hudson.model.Hudson.ADMINISTER,
hudson.model.Hudson.READ,
hudson.model.Item.BUILD,
hudson.model.Item.CANCEL,
hudson.model.Item.CONFIGURE,
hudson.model.Item.CREATE,
hudson.model.Item.DELETE,
hudson.model.Item.DISCOVER,
hudson.model.Item.READ,
hudson.model.Item.WORKSPACE,
hudson.model.Item.EXTENDED_READ,
hudson.model.Run.DELETE,
hudson.model.Run.UPDATE,
hudson.model.View.CONFIGURE,
hudson.model.View.CREATE,
hudson.model.View.DELETE,
hudson.model.View.READ,
hudson.scm.SCM.TAG
]
authenticatedRole = [
com.cloudbees.plugins.credentials.CredentialsProvider.VIEW,
hudson.model.Hudson.READ,
hudson.model.Item.BUILD,
hudson.model.Item.CANCEL,
hudson.model.Item.CONFIGURE,
hudson.model.Item.CREATE,
hudson.model.Item.DISCOVER,
hudson.model.Item.READ,
hudson.model.Item.WORKSPACE,
hudson.model.Run.UPDATE,
hudson.model.View.CONFIGURE,
hudson.model.View.CREATE,
hudson.model.View.DELETE,
hudson.model.View.READ
]
def jsonSlurper = new JsonSlurper()
def reader = new BufferedReader(new InputStreamReader(new FileInputStream("/run/secrets/access-control.json"),"UTF-8"))
data = jsonSlurper.parse(reader)
def instance = Jenkins.getInstance()
instance.setSecurityRealm(new HudsonPrivateSecurityRealm(false))
def strategy = new GlobalMatrixAuthorizationStrategy()
strategy.add(Jenkins.ADMINISTER, "admin")
data.users.each { user->
println "username " + user.username
println "role " + user.role
def roles
switch(user.role) {
case "master":
roles = masterRole
break
case "authenticated":
roles = authenticatedRole
break
}
roles.each { role->
strategy.add(role, user.username)
}
println "The user " + user.username + " was granted with the permission " + user.role
}
instance.setAuthorizationStrategy(strategy)
instance.save()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment