RBAC의 Exec 권한 허용

pods/exec 권한은 실행 중 컨테이너 안에서 명령을 실행할 수 있어 고위험 권한입니다.

설명

pods/exec 접근 권한이 있으면 사용자가 컨테이너 내부에서 제공되는 명령을 실행할 수 있습니다. 실제 접근 범위는 컨테이너의 실행 사용자와 권한에도 달려 있습니다. 이 권한은 사실상 운영 중인 워크로드 안으로 직접 들어가는 것과 같아서 매우 민감합니다.

권한이 높은 서비스 계정이나 민감한 애플리케이션 컨테이너에 exec가 가능하면 피해 범위가 커질 수 있습니다. 운영 환경에서는 가능한 한 제한해야 합니다.

잠재적 영향

  • 사용자가 컨테이너 내부에서 직접 명령을 실행할 수 있습니다.
  • 민감한 환경 변수, 파일, 토큰에 접근할 가능성이 커집니다.
  • 침해된 계정이 워크로드 내부로 쉽게 이동할 수 있습니다.

해결 방법

  • RBAC에서 불필요한 pods/exec 권한을 제거하세요.
  • 운영 디버깅은 별도 승인된 계정과 절차로만 허용하세요.
  • 프로덕션 네임스페이스에는 exec 권한을 기본적으로 부여하지 마세요.

예시

RoleBinding은 생략했습니다. 실제 권한을 줄이려면 이 역할뿐 아니라 다른 역할의 부여 내역도 확인하세요.

변경 전

yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: my-namespace
  name: allow-exec
rules:
  - apiGroups: [""]
    resources: ["pods", "pods/exec"]
    verbs: ["get", "list", "create"]

변경 후

yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: my-namespace
  name: allow-exec-neg
rules:
  - apiGroups: [""]
    resources: ["pods"]
    verbs: ["get", "list", "create"]

설명:

  • 변경 전: pods/exec 권한으로 컨테이너 내부 명령 실행이 가능해집니다.
  • 변경 후: 이 역할에서 exec 권한을 제거합니다. Pod 생성 권한은 남아 있으므로 별도로 검토해야 합니다.

참조