Tiller(Helm v2)가 배포된 Kubernetes 워크로드

지원이 종료된 Helm 2의 Tiller를 제거하고 유지 관리되는 배포 방식으로 이전하세요.

설명

Tiller는 Helm 2에서 서버 측으로 동작하던 구성요소입니다. 자신의 서비스 계정 권한으로 리소스를 변경하므로 접근 통제나 권한 설정이 부적절하면 악용 시 피해가 커질 수 있습니다.

Helm 2는 2020년 11월부터 보안 업데이트를 받지 않습니다. Tiller를 사용하지 않는 지원되는 Helm 버전으로 전환하세요.

잠재적 영향

  • 침해되거나 부적절하게 사용된 Tiller가 부여된 권한 범위의 워크로드와 리소스를 변경할 수 있습니다.
  • 지원이 종료된 구성요소를 유지하면 새로 확인된 보안 문제에 대한 수정이 제공되지 않습니다.

해결 방법

  • 기존 릴리스 정보와 필요한 값을 보존하고 새 배포 절차를 시험하세요.
  • 마이그레이션 후 Tiller Deployment와 Service를 제거하고 전용 서비스 계정 및 권한 바인딩도 정리하세요.
  • 필요한 애플리케이션은 유지하면서 Tiller가 더 이상 실행되지 않고 관리 경로도 남아 있지 않은지 확인하세요.

예시

첫 예시는 과거 Tiller 배포의 구조를 보여 줍니다. 이미지 값은 자리표시자이며 새 설치를 위한 권장 구성이 아닙니다. 두 번째는 별도의 일반 Pod 예시입니다.

변경 전

yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: tiller-deploy
  labels:
    app: helm
    name: tiller
spec:
  selector:
    matchLabels:
      app: helm
      name: tiller
  template:
    metadata:
      labels:
        app: helm
        name: tiller
    spec:
      containers:
        - name: tiller-v2
          image: tiller-image

Tiller 컨테이너를 실행하는 Deployment입니다. 실제 접근 가능 범위와 권한은 서비스 및 서비스 계정 설정에 달려 있습니다.

변경 후

yaml
apiVersion: v1
kind: Pod
metadata:
  name: security-context-demo
spec:
  containers:
    - name: sec-ctx-demo
      image: busybox
      securityContext:
        allowPrivilegeEscalation: false

이 Pod는 Tiller를 실행하지 않으며 컨테이너의 권한 상승을 제한합니다. 이 Pod를 추가하거나 리소스 이름만 바꾸는 것으로 기존 Tiller가 제거되지는 않습니다.

참조