如何使用Jenkins RoleBasedAuthorizationStrategy限制人们进行生产部署?

问题描述 投票:0回答:1

我已经安装并配置了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

jenkins jenkins-pipeline jenkins-plugins jenkins-groovy
1个回答
0
投票

我现在可以通过使用以下脚本检查管理员的访问权限来解决此问题。这不是完美的,但目前可以正常工作。如果我们可以通过特定的全局角色成员进行检查,那就太好了>

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!!")
}
© www.soinside.com 2019 - 2024. All rights reserved.