4.13. 권한 있는 보안 컨텍스트에서 Pod 사용


OpenShift Pipelines 1.3.x 이상 버전의 기본 구성에서는 파이프라인 실행 또는 작업 실행으로 인해 pod가 실행된 경우 권한 있는 보안 컨텍스트로 Pod를 실행할 수 없습니다. 이러한 Pod의 기본 서비스 계정은 pipeline이며 pipelines 서비스 계정과 연결된 SCC(보안 컨텍스트 제약 조건)는 pipelines-scc입니다. pipelines-scc SCC는 anyuid SCC와 유사하지만 파이프라인 SCC의 YAML 파일에 정의된 것과 약간의 차이가 있습니다.

SecurityContextConstraints 오브젝트 예

apiVersion: security.openshift.io/v1
kind: SecurityContextConstraints
...
fsGroup:
  type: MustRunAs
...

또한 OpenShift Pipelines의 일부로 제공되는 Buildah 클러스터 작업은 vfs를 기본 스토리지 드라이버로 사용합니다.

4.13.1. 파이프라인 실행 및 작업 실행 권한이 있는 보안 컨텍스트에서 Pod 실행

절차

privileged있는 보안 컨텍스트를 사용하여 Pod(파이프라인 실행 또는 작업 실행)를 실행하려면 다음 수정 작업을 수행합니다.

  • 명시적 SCC를 갖도록 연결된 사용자 계정 또는 서비스 계정을 구성합니다. 다음 방법을 사용하여 구성을 수행할 수 있습니다.

    • 다음 명령을 실행합니다.

      $ oc adm policy add-scc-to-user <scc-name> -z <service-account-name>
    • 또는 RoleBindingRole 또는 ClusterRole에 대한 YAML 파일을 수정합니다.

      RoleBinding 오브젝트의 예

      apiVersion: rbac.authorization.k8s.io/v1
      kind: RoleBinding
      metadata:
        name: service-account-name 1
        namespace: default
      roleRef:
        apiGroup: rbac.authorization.k8s.io
        kind: ClusterRole
        name: pipelines-scc-clusterrole 2
      subjects:
      - kind: ServiceAccount
        name: pipeline
        namespace: default

      1
      적절한 서비스 계정 이름으로 바꿉니다.
      2
      사용하는 역할 바인딩에 따라 적절한 클러스터 역할로 바꿉니다.

      ClusterRole 오브젝트의 예

      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRole
      metadata:
        name: pipelines-scc-clusterrole 1
      rules:
      - apiGroups:
        - security.openshift.io
        resourceNames:
        - nonroot
        resources:
        - securitycontextconstraints
        verbs:
        - use

      1
      사용하는 역할 바인딩에 따라 적절한 클러스터 역할로 바꿉니다.
    참고

    기본 YAML 파일의 복사본을 만들고 중복 파일을 변경하는 것이 좋습니다.

  • vfs 스토리지 드라이버를 사용하지 않는 경우 작업 실행 또는 파이프라인 실행과 연결된 서비스 계정을 구성하여 권한 있는 SCC를 구성하고 보안 컨텍스트를 privileged: true로 설정합니다.

4.13.2. 사용자 정의 SCC 및 사용자 정의 서비스 계정을 사용하여 파이프라인 실행 및 작업 실행

기본 pipelines 서비스 계정과 연결된 pipelines-scc SCC(보안 컨텍스트 제약 조건)를 사용하는 경우 파이프라인 실행 및 작업 실행 Pod가 시간 초과에 발생할 수 있습니다. 이 문제는 기본 pipelines-scc SCC에서 fsGroup.type 매개변수가 MustRunAs 로 설정되어 있기 때문에 발생합니다.

참고

Pod 시간 초과에 대한 자세한 내용은 BZ#1995779 에서 참조하십시오.

Pod의 시간 초과를 방지하려면 fsGroup.type 매개 변수를 RunAsAny로 설정하여 사용자 지정 SCC를 만들고 사용자 지정 서비스 계정과 연결할 수 있습니다.

참고

파이프라인 실행 및 작업 실행에 사용자 정의 SCC 및 사용자 지정 서비스 계정을 사용하는 것이 좋습니다. 이 접근 방식을 사용하면 유연성이 향상되고 업그레이드 중에 기본값을 수정할 때 실행을 중단하지 않습니다.

프로세스

  1. fsGroup.type 매개변수를 RunAsAny 로 설정하여 사용자 지정 SCC를 정의합니다.

    예: 사용자 지정 SCC

    apiVersion: security.openshift.io/v1
    kind: SecurityContextConstraints
    metadata:
      annotations:
        kubernetes.io/description: my-scc is a close replica of anyuid scc. pipelines-scc has fsGroup - RunAsAny.
      name: my-scc
    allowHostDirVolumePlugin: false
    allowHostIPC: false
    allowHostNetwork: false
    allowHostPID: false
    allowHostPorts: false
    allowPrivilegeEscalation: true
    allowPrivilegedContainer: false
    allowedCapabilities: null
    defaultAddCapabilities: null
    fsGroup:
      type: RunAsAny
    groups:
    - system:cluster-admins
    priority: 10
    readOnlyRootFilesystem: false
    requiredDropCapabilities:
    - MKNOD
    runAsUser:
      type: RunAsAny
    seLinuxContext:
      type: MustRunAs
    supplementalGroups:
      type: RunAsAny
    volumes:
    - configMap
    - downwardAPI
    - emptyDir
    - persistentVolumeClaim
    - projected
    - secret

  2. 사용자 정의 SCC를 생성합니다.

    예: my-scc SCC 생성

    $ oc create -f my-scc.yaml

  3. 사용자 정의 서비스 계정을 생성합니다.

    예: fsgroup-runasany 서비스 계정 생성

    $ oc create serviceaccount fsgroup-runasany

  4. 사용자 지정 SCC를 사용자 지정 서비스 계정과 연결합니다.

    예: my-scc SCC를 fsgroup-runasany 서비스 계정과 연결합니다.

    $ oc adm policy add-scc-to-user my-scc -z fsgroup-runasany

    권한 있는 작업에 사용자 지정 서비스 계정을 사용하려면 다음 명령을 실행하여 권한 있는 SCC를 사용자 지정 서비스 계정과 연결할 수 있습니다.

    예: 권한 있는 SCC를 fsgroup-runasany 서비스 계정과 연결합니다.

    $ oc adm policy add-scc-to-user privileged -z fsgroup-runasany

  5. 파이프라인 실행 및 작업 실행에서 사용자 정의 서비스 계정을 사용합니다.

    예: 파이프라인은 fsgroup-runasany 사용자 정의 서비스 계정을 사용하여 YAML을 실행합니다.

    apiVersion: tekton.dev/v1beta1
    kind: PipelineRun
    metadata:
      name: <pipeline-run-name>
    spec:
      pipelineRef:
        name: <pipeline-cluster-task-name>
      serviceAccountName: 'fsgroup-runasany'

    예: fsgroup-runasany 사용자 지정 서비스 계정을 사용하여 작업 실행 YAML

    apiVersion: tekton.dev/v1beta1
    kind: TaskRun
    metadata:
      name: <task-run-name>
    spec:
      taskRef:
        name: <cluster-task-name>
      serviceAccountName: 'fsgroup-runasany'

4.13.3. 추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.