Jenkins Groovy 共享库审计器
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/jenkins-groovy-shared-library-auditor 到 AI 助手中。
技能介绍
要解决的问题
Jenkins 共享库是 CI/CD 流水线复用代码的主要方式,其中的 Groovy 脚本一旦进入生产环境,就等于拿到了流水线的执行权。问题在于:脚本安全插件(Script Security Plugin)虽然提供了沙箱和审批机制,但共享库代码往往未经人工审查就直接被流水线调用,审批列表里可能还躺着早已过期的放行记录。常见风险包括:
- 未授权的方法签名:脚本调用了沙箱未放行的 API,例如
Runtime.getRuntime().exec()或未经批准的文件操作; - 沙箱逃逸:利用 Groovy 的动态特性(如反射、元编程)绕过沙箱限制;
- 凭证泄露:在流水线代码中硬编码凭据,或通过日志输出泄露
credentials绑定的内容。
核心能力
这个技能基于 Script Security Plugin 的 API,把共享库 Groovy 脚本作为审计对象,逐脚本检查上述三类反模式:
- 解析 Groovy 脚本,识别对未批准 API 的调用,输出未放行的方法签名清单;
- 检测沙箱逃逸模式,标记可疑的动态代码执行路径;
- 扫描流水线代码中的凭证绑定与日志输出,发现可能泄露的凭据内容。
审计结果面向 CI/CD 维护者,可以直接对应到共享库的目录结构,方便定位到 vars/ 或 src/ 下的具体脚本。
适用边界与注意点
- 该技能依赖 Script Security Plugin 的现有能力,不能替代 Jenkins 本身的版本升级与补丁管理;
- 审计覆盖的是共享库源码层面的反模式,运行时动态生成的 Groovy 代码不在范围内;
- 已有的历史放行签名(approval signatures)需要人工清理,工具只能发现,不能自动撤销。
使用场景
- Jenkins 共享库新增 Groovy 脚本后,需要审查其中是否调用了沙箱未放行的系统命令或文件操作 API。
- 流水线代码接入凭据绑定后,要排查脚本日志输出中是否存在凭证内容泄露的风险。
- 共享库历史审批签名长期未清理,需要定位过期放行记录并评估残留风险。
- 多人协作的 Jenkins 共享库提交合并前,要扫描是否存在绕过沙箱限制的动态代码执行路径。
适合人员
- 维护 Jenkins 共享库的 DevOps 工程师,需要在脚本合入前完成安全审查,防止未授权 API 调用进入生产流水线。
- 负责 CI/CD 安全的平台工程师,需要定期排查共享库中硬编码凭据和凭证泄露的代码。
- 管理 Jenkins 流水线的团队负责人,需要在共享库发生代码变更后评估沙箱逃逸风险。
- 为多个团队提供共享库的构建平台开发者,需要在发布前确认审批签名清单的有效性。