Pod 생성 권한 과다 허용

Pod 생성 권한을 필요한 주체로 제한하고 허용할 워크로드 구성을 통제하세요.

설명

RBAC Role이나 ClusterRole에 pods의 create 권한을 부여하고 바인딩하면 해당 주체가 허용 범위에 Pod를 배포할 수 있습니다. Pod 구성에 따라 민감한 ServiceAccount, Secret, 호스트 마운트나 특권 컨테이너를 사용할 수 있으므로 권한 상승으로 이어질 수 있습니다. 실제 허용 범위는 admission 정책 등 다른 통제에도 영향을 받습니다.

Pod 생성 권한은 클러스터 안에 새 실행 환경을 만드는 권한입니다. 필요한 주체에만 제한적으로 부여해야 합니다.

잠재적 영향

  • 허용된 Pod 구성을 통해 더 강한 권한이나 민감한 데이터에 접근할 수 있습니다.
  • 과도한 생성 권한으로 자원이 소모되거나 운영 통제가 약해질 수 있습니다.

해결 방법

  • pods의 create와 와일드카드 권한은 배포 업무가 필요한 주체에만 부여하세요. 일반 조회는 필요한 get, list, watch 권한으로 제한하세요.
  • 네임스페이스별 역할 분리와 Pod Security Admission 또는 정책 엔진으로 특권·호스트 접근을 제한하세요. 사용할 ServiceAccount는 별도 정책으로 통제하세요.

예시

Role의 생성 권한만 비교합니다. 역할을 실제로 연결하는 바인딩과 admission 정책은 별도 구성입니다.

변경 전

hcl
resource "kubernetes_role" "role" {
  metadata {
    name = "terraform-example"
  }

  rule {
    api_groups = [""]
    resources  = ["pods"]
    verbs      = ["create", "list", "watch"]
  }
}

변경 후

hcl
resource "kubernetes_role" "role" {
  metadata {
    name = "terraform-example"
  }

  rule {
    api_groups = [""]
    resources  = ["pods"]
    verbs      = ["get", "list", "watch"]
  }
}

설명:

  • 변경 전: Pod 생성 권한을 포함합니다. 허용된 구성에 따라 새 워크로드를 배포할 수 있습니다.
  • 변경 후: 생성 권한을 제거하고 조회 권한만 남깁니다.

참조