설명
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가 제거되지는 않습니다.