설명
클러스터에서 Pod를 생성할 수 있으면 사용자는 허용된 네임스페이스에서 이미지, 서비스 계정, 볼륨, 보안 설정을 조합해 실행할 수 있습니다. 실제 허용 범위는 어드미션 정책 등 추가 통제에도 달려 있습니다. 그래서 pods에 대한 create 권한은 단순 생성 권한이 아니라 권한 상승으로 이어질 수 있는 민감한 권한입니다.
특히 와일드카드 리소스나 와일드카드 동사와 함께 create가 포함되면 통제가 매우 느슨해집니다. Pod 생성 권한은 꼭 필요한 계정에만 최소 범위로 부여해야 합니다.
잠재적 영향
- 사용자가 권한이 높은 서비스 계정이나 민감한 볼륨을 사용하는 Pod를 만들 수 있습니다.
- 클러스터 내부에서 권한 상승이나 추가 이동이 쉬워질 수 있습니다.
- RBAC 구성이 느슨해져 운영 통제가 어려워질 수 있습니다.
해결 방법
pods에 대한create권한은 정말 필요한 주체에만 제한하세요.resources: ["*"]또는verbs: ["*"]같은 와일드카드 조합을 피하세요.- RBAC 검토 시 Pod 생성 권한을 별도 고위험 권한으로 관리하세요.
예시
역할 정의의 비교입니다. 실제 권한은 이 역할을 연결하는 바인딩과 다른 역할의 권한도 함께 확인하세요.
변경 전
yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: pod-creator
rules:
- apiGroups: [""]
resources: ["pods"]
verbs:
- "get"
- "watch"
- "create"
변경 후
yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: pod-reader
rules:
- apiGroups: [""]
resources: ["pods"]
verbs:
- "get"
- "watch"
- "list"
설명:
- 변경 전: Pod 생성 권한을 줘 사용자가 간접적으로 더 높은 실행 권한을 확보할 수 있습니다.
- 변경 후: 이 역할에는 Pod 읽기 권한만 남깁니다. 다른 역할에서도 생성 권한을 부여하지 않는지 확인하세요.