OpenShift - Jenkins

本页面的原始作者是 Fares

本页面提供了一些关于如何攻击运行在 Openshift(或 Kubernetes)集群中的 Jenkins 实例的指针

免责声明

Jenkins 实例可以部署在 Openshift 或 Kubernetes 集群中。根据您的上下文,您可能需要调整任何显示的有效负载、yaml 或技术。有关攻击 Jenkins 的更多信息,您可以查看此页面

先决条件

1a. 在 Jenkins 实例中具有用户访问权限 或 1b. 具有对 SCM 存储库的写入权限,在推送/合并后触发自动构建

工作原理

从根本上讲,幕后几乎所有工作原理与在虚拟机中运行的常规 Jenkins 实例相同。主要区别在于整体架构以及在 Openshift(或 Kubernetes)集群中管理构建的方式。

构建

当触发构建时,首先由 Jenkins 主节点进行管理/编排,然后委派给代理/从节点/工作节点。在这种情况下,主节点只是在一个命名空间中运行的常规 pod。工作节点/从节点也是如此,但是一旦构建完成就会被销毁,而主节点始终保持运行。您的构建通常在一个 pod 中运行,使用 Jenkins 管理员定义的默认 pod 模板。

触发构建

您有多种主要触发构建的方式,例如:

  1. 拥有 Jenkins 的 UI 访问权限

一个非常简单和方便的方法是使用现有构建的 Replay 功能。它允许您重放先前执行的构建,同时允许您更新 groovy 脚本。这需要对 Jenkins 文件夹有特权和预定义的流水线。如果您需要隐蔽操作,如果有足够的权限,可以删除您触发的构建。

  1. 拥有对 SCM 的写入访问权限,并且通过 webhook 配置了自动构建

您可以编辑构建脚本(如 Jenkinsfile),提交和推送(如果构建仅在 PR 合并时触发,最终创建一个 PR)。请记住,这条路径非常喧闹,需要提升的权限来清理您的痕迹。

Jenkins 构建 Pod YAML 覆盖

OpenShift - Jenkins Build Pod Override

Last updated