第 2 章 为 pod 配置安全上下文

OpenShift Pipelines 启动的 pod 的默认服务帐户是 管道。与 pipeline 服务帐户关联的安全性上下文约束(SCC)是 pipelines-sccpipelines-scc SCC 基于 anyuid SCC,但有以下 YAML 规范中定义的细微差别:

pipelines-scc.yaml 片断示例

apiVersion: security.openshift.io/v1
kind: SecurityContextConstraints
# ...
allowedCapabilities:
  - SETFCAP
# ...
fsGroup:
  type: MustRunAs
# ...

另外,Buildah 集群任务作为 OpenShift Pipelines 的一部分提供,使用 vfs 作为默认存储驱动程序。

您可以为 OpenShift Pipelines 为管道运行和任务运行创建的 pod 配置安全上下文。您可以进行以下更改:

  • 更改所有 Pod 的 default 和 maximum SCC
  • 更改为管道运行和在特定命名空间中运行的 Pod 的默认 SCC
  • 配置特定的管道运行或任务运行以使用自定义 SCC 和服务帐户
注意

运行 buildah 的最简单方法是,确保所有镜像都可以构建,以便在具有 特权 SCC 的 pod 中以 root 用户身份运行。有关以更严格的安全设置运行 buildah 的说明,请参阅 以非 root 用户身份使用 Buildah 构建容器镜像

2.1. 为 OpenShift Pipelines 创建的 pod 配置默认和最大 SCC

您可以为 OpenShift Pipelines 为任务运行和管道运行创建的所有 pod 配置默认安全性上下文约束(SCC)。您还可以配置最大 SCC,这是可在任意命名空间中为这些 pod 配置的最低限制 SCC。

流程

  • 输入以下命令编辑 TektonConfig 自定义资源(CR):

    $ oc edit TektonConfig config

    在 spec 中设置 default 和 maximum SCC,如下例所示:

    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonConfig
    metadata:
      name: config
    spec:
    #  ...
      platforms:
        openshift:
          scc:
            default: "restricted-v2" 1
            maxAllowed: "privileged" 2
    1
    spec.platforms.openshift.scc.default 指定 OpenShift Pipelines 附加到用于工作负载的服务帐户(SA),默认为 pipeline SA。此 SCC 用于所有管道运行和任务运行 Pod。
    2
    spec.platforms.openshift.scc.maxAllowed 指定您可以为管道运行和任务运行 pod 配置的最低限制 SCC。当您在特定管道运行或任务运行中配置自定义 SA 和 SCC 时,此设置不适用。