OpenShift - Tekton

Tip

学习并练习 AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
学习并练习 GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
学习并练习 Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks

该页面的原作者是 Haroun

什么是 tekton

根据文档:Tekton 是一个强大且灵活的开源框架,用于创建 CI/CD 系统,允许开发人员在云提供商和本地系统上构建、测试和部署。 Jenkins 和 Tekton 都可以用于测试、构建和部署应用程序,但 Tekton 是云原生的。

在 Tekton 中,一切都由 YAML 文件表示。开发人员可以创建类型为 Pipelines 的自定义资源(CR),并在其中指定他们想要运行的多个 Tasks。要运行 Pipeline,必须创建类型为 PipelineRun 的资源。

当安装 tekton 时,在每个命名空间中会创建一个名为 pipeline 的服务账户(sa)。当运行 Pipeline 时,将使用这个名为 pipeline 的 sa 启动一个 pod 来运行 YAML 文件中定义的任务。

Getting Started with Pipelines | Tekton

Pipeline 服务账户的能力

默认情况下,pipeline 服务账户可以使用 pipelines-scc 能力。这是由于 tekton 的全局默认配置。实际上,tekton 的全局配置也是一个 YAML,位于一个名为 TektonConfig 的 openshift 对象中,如果您在集群中拥有一些读取角色,可以查看该对象。

apiVersion: operator.tekton.dev/v1alpha1
kind: TektonConfig
metadata:
name: config
spec:
...
...
platforms:
openshift:
scc:
default: "pipelines-scc"

在任何命名空间中,如果您能够获取管道服务帐户令牌,您将能够使用 pipelines-scc

配置错误

问题在于,管道服务帐户可以使用的默认 scc 是用户可控的。这可以通过命名空间定义中的标签来实现。例如,如果我可以使用以下 yaml 定义创建一个命名空间:

apiVersion: v1
kind: Namespace
metadata:
name: test-namespace
annotations:
operator.tekton.dev/scc: privileged

tekton 操作符将赋予 test-namespace 中的管道服务帐户使用 scc privileged 的能力。这将允许挂载节点。

修复方法

Tekton 文档介绍了如何通过在 TektonConfig 对象中添加标签来限制 scc 的覆盖。

Tekton

这个标签被称为 max-allowed

apiVersion: operator.tekton.dev/v1alpha1
kind: TektonConfig
metadata:
name: config
spec:
...
...
platforms:
openshift:
scc:
default: "restricted-v2"
maxAllowed: "privileged"

Tip

学习并练习 AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
学习并练习 GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
学习并练习 Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks