Pod 생성 권한 과다 허용

Pod 생성 권한이 넓게 허용되면 사용자가 간접적으로 높은 권한을 얻을 수 있습니다.

설명

클러스터에서 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 읽기 권한만 남깁니다. 다른 역할에서도 생성 권한을 부여하지 않는지 확인하세요.

참조