You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Groovy移除Jenkins指定用户的特定权限?

Jenkins 移除指定用户特定权限的实现方法

你可以直接单独移除指定用户的特定权限,不需要清空该用户全部权限后再重新批量添加。

虽然GlobalMatrixAuthorizationStrategy官方API没有公开remove()类方法,但其内部通过grantedPermissions这个Map结构存储所有权限的授予关系:

  • Map的key为权限对象(比如hudson.model.Item.CONFIGURE)
  • Map的value为持有对应权限的用户/组ID的Set集合

你只需要操作对应权限的Set集合,移除目标用户ID,再保存配置即可生效。

可用示例脚本

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

// 配置参数:要操作的用户ID、需要移除的权限列表
String userId = "my_user"
List<Permission> permissionsToRemove = [hudson.model.Item.CONFIGURE]

Jenkins instance = Jenkins.get()
def authStrategy = instance.getAuthorizationStrategy()

// 先校验当前使用的是矩阵授权策略
if (!(authStrategy instanceof GlobalMatrixAuthorizationStrategy)) {
    println "当前授权策略不是GlobalMatrixAuthorizationStrategy,脚本不适用"
    return
}

permissionsToRemove.each { permission ->
    // 检查该权限是否有授予的用户记录
    if (authStrategy.grantedPermissions.containsKey(permission)) {
        // 从该权限的授权集合中移除目标用户
        authStrategy.grantedPermissions.get(permission).remove(userId)
        // 如果移除后该权限没有任何授权对象,可以选择清理掉这条空记录
        if (authStrategy.grantedPermissions.get(permission).isEmpty()) {
            authStrategy.grantedPermissions.remove(permission)
        }
    }
}

instance.setAuthorizationStrategy(authStrategy)
instance.save()
println "权限移除操作完成"

注意事项

  • 操作前请先备份Jenkins全局配置,避免权限配置错误导致管理员无法登录
  • 本脚本仅适用于Jenkins原生的「Matrix Authorization Strategy」授权策略,如果你使用的是Role-Based Strategy等第三方权限插件,需要对应调整操作逻辑
  • 脚本需要在Jenkins后台「系统管理」-「脚本控制台」中运行

内容的提问来源于stack exchange,提问作者cat_nip_coffee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 16:54:04