OpenShift - Tekton
이 페이지는 클러스터에 tekton이 설치되어 있고 네임스페이스를 생성할 수 있는 경우 특권 상승 시나리오를 보여줍니다 (때로는 편집 권한만 있으면 충분합니다).
이 페이지의 원 저자는 Haroun
Tekton이란
문서에 따르면: Tekton은 클라우드 제공업체 및 온프레미스 시스템에서 개발자가 빌드, 테스트 및 배포할 수 있는 강력하고 유연한 오픈 소스 프레임워크입니다. Jenkins와 Tekton은 모두 애플리케이션을 테스트, 빌드 및 배포할 수 있지만 Tekton은 클라우드 네이티브입니다.
Tekton에서 모든 것은 YAML 파일로 표현됩니다. 개발자는 Pipelines
유형의 사용자 정의 리소스(CR)를 생성하고 실행하려는 여러 Tasks
를 지정할 수 있습니다. Pipeline을 실행하려면 PipelineRun
유형의 리소스를 생성해야 합니다.
Tekton이 설치되면 모든 네임스페이스에 pipeline
라는 서비스 계정(sa)이 생성됩니다. Pipeline이 실행되면 YAML 파일에서 정의된 작업을 실행하기 위해 이 sa인 pipeline
을 사용하는 pod가 생성됩니다.
Pipeline 서비스 계정의 기능
기본적으로 pipeline 서비스 계정은 pipelines-scc
기능을 사용할 수 있습니다. 이는 tekton의 전역 기본 구성 때문입니다. 실제로 tekton의 전역 구성은 TektonConfig
라는 openshift 객체의 YAML이기도 하며 클러스터에 일부 리더 역할이 있는 경우 볼 수 있습니다.
잘못된 구성
문제는 파이프라인 서비스 계정 토큰을 얻을 수 있다면 pipelines-scc
를 사용할 수 있습니다.
Misconfig
문제는 파이프라인 서비스 계정이 사용할 수 있는 기본 scc가 사용자가 제어할 수 있습니다. 이는 네임스페이스 정의에서 레이블을 사용하여 수행할 수 있습니다. 예를 들어, 다음과 같은 yaml 정의를 사용하여 네임스페이스를 생성할 수 있다면:
수정
Tekton은 TektonConfig
객체에 레이블을 추가하여 scc의 재정의를 제한하는 방법에 대해 문서화했습니다.
이 레이블은 max-allowed
로 지칭됩니다.
Last updated