我已经安装并配置了RoleBasedAuthorizationStrategy
。我试图基于globalRoles
限制人员。我有一个生产角色,在这个角色中,我有一个负责进行产品部署的人员列表。另外,我具有admin
角色,其中包含管理员列表。
我有詹金斯全球图书馆,应该根据图书馆来限制人员。
def trigerUser = 'fsadykov'
def environment = "prod"
def prodRole = ["user1", "user2", "user3"]
if (trigerUser in prodRole ) {
println("You are allowed to do prod deployments!!")
} else {
if (environment != 'prod') {
println("You are alowed to do this trigger")
} else {
println("You are not allowed to do prod deployments!!")
}
}
我如何从詹金斯那里获得人员名单?我需要一些例子来从prodRole
吸引人们[我做了研究,结果证明我可以对下面的端点进行API调用,但是我认为应该是使用RoleBasedAuthorizationStrategy
类获取列表的简便方法
端点:role-strategy/strategy/getRole?type=globalRoles&roleName=prodTeam
我现在可以通过使用以下脚本检查管理员的访问权限来解决此问题。这不是完美的,但目前可以正常工作。如果我们可以通过特定的全局角色成员进行检查,那就太好了>
import hudson.model.Hudson
import com.michelin.cio.hudson.plugins.rolestrategy.RoleBasedAuthorizationStrategy
def isAdmin(username) {
def instance = Jenkins.getInstance()
return instance.getAuthorizationStrategy().getACL(User.get(username))
.hasPermission(User.get(username).impersonate(), hudson.model.Hudson.ADMINISTER)
}
def trigerUser = 'fsadykov'
def environment = "prod"
if (isAdmin(trigerUser)) {
println("You are allowed to do prod deployments!!")
} else {
println("You are not allowed to do prod deployments!!")
}