6장. Buildah를 루트가 아닌 사용자로 사용하여 컨테이너 이미지 빌드


컨테이너에서 root 사용자로 OpenShift Pipelines를 실행하면 컨테이너 프로세스 및 호스트를 다른 잠재적으로 악의적인 리소스에 노출할 수 있습니다. 컨테이너에서 루트가 아닌 특정 사용자로 워크로드를 실행하여 이러한 유형의 노출을 줄일 수 있습니다.

대부분의 경우 이 작업에서 이미지를 빌드하고 사용자 네임스페이스를 구성하는 사용자 지정 작업을 생성하여 root 권한 없이 Buildah를 실행할 수 있습니다.

이 구성을 사용하여 이미지가 성공적으로 빌드되지 않는 경우 사용자 정의 서비스 계정(SA) 및 SCC(보안 컨텍스트 제약 조건) 정의를 사용할 수 있지만 이 옵션을 사용하는 경우 Buildah 단계를 활성화하여 권한을 부여해야 합니다(allowPrivilegeEscalation: true).

6.1. 사용자 네임스페이스를 구성하여 루트가 아닌 사용자로 Buildah 실행

사용자 네임스페이스를 구성하는 것은 루트가 아닌 사용자로 작업에서 Buildah를 실행하는 가장 간단한 방법입니다. 그러나 일부 이미지는 이 옵션을 사용하여 빌드하지 못할 수 있습니다.

사전 요구 사항

  • oc 명령줄 유틸리티를 설치했습니다.

프로세스

  1. openshift-pipelines 네임스페이스에 제공된 buildah 작업의 사본을 생성하고 복사 이름을 buildah-as-user 로 변경하려면 다음 명령을 입력합니다.

    $ oc get task buildah -n openshift-pipelines -o yaml | yq '. |= (del .metadata |= with_entries(select(.key == "name" )))' | yq '.kind="Task"' | yq '.metadata.name="buildah-as-user"' | oc create -f -
  2. 다음 명령을 입력하여 복사한 buildah 작업을 편집합니다.

    $ oc edit task buildah-as-user

    다음 예와 같이 새 작업에서 주석stepTemplate 섹션을 생성합니다.

    buildah-as-user 작업에 추가된 예

    apiVersion: tekton.dev/v1
    kind: Task
    metadata:
      annotations:
        io.kubernetes.cri-o.userns-mode: 'auto:size=65536;map-to-root=true'
        io.openshift.builder: 'true'
      name: assemble-containerimage
      namespace: pipeline-namespace
    spec:
      description: This task builds an image.
    #  ...
      stepTemplate:
        env:
          - name: HOME
            value: /tekton/home
        image: $(params.builder-image)
        imagePullPolicy: IfNotPresent
        name: ''
        resources:
          limits:
            cpu: '1'
            memory: 4Gi
          requests:
            cpu: 100m
            memory: 2Gi
        securityContext:
          capabilities:
            add:
              - SETFCAP
          runAsNonRoot: true
          runAsUser: 1000 1
        workingDir: $(workspaces.working-directory.path)
    #  ...

    1
    podTemplate 이 사용되므로 runAsUser: 설정은 엄격하게 필요하지 않습니다.
  3. buildah-as-user 작업을 사용하여 파이프라인에 이미지를 빌드합니다.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.