OpenShift - Tekton
本页面展示了一个特权升级场景,假设集群中已安装了 Tekton 并且您可以创建一个命名空间(有时候编辑权限就足够了)
本页面的原始作者是 Haroun
什么是 Tekton
根据文档:Tekton 是一个强大且灵活的开源框架,用于创建 CI/CD 系统,允许开发人员在云提供商和本地系统上构建、测试和部署应用程序。 Jenkins 和 Tekton 都可以用于测试、构建和部署应用程序,但 Tekton 是云原生的。
在 Tekton 中,一切都由 YAML 文件表示。开发人员可以创建类型为 Pipelines
的自定义资源(CR),并在其中指定他们想要运行的多个 Tasks
。要运行一个 Pipeline 资源,必须创建类型为 PipelineRun
的资源。
当安装了 tekton 时,每个命名空间都会创建一个名为 pipeline
的服务账户(sa)。当运行 Pipeline 时,将使用此名为 pipeline
的 sa 生成一个 pod,以运行 YAML 文件中定义的任务。
Pipeline 服务账户的能力
默认情况下,pipeline 服务账户可以使用 pipelines-scc
能力。这是由于 tekton 的全局默认配置。实际上,tekton 的全局配置也是一个 YAML,位于名为 TektonConfig
的 openshift 对象中,如果您在集群中具有一些读取者角色,则可以看到它。
配置错误
问题在于管道服务账户可以使用的默认scc是可由用户控制的。这可以通过在命名空间定义中使用标签来实现。例如,如果我可以创建一个具有以下yaml定义的命名空间:
修复
Tekton文档介绍了如何通过在TektonConfig
对象中添加标签来限制对scc的覆盖。
此标签称为max-allowed
Last updated