설명
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 생성 권한은 남아 있으므로 별도로 검토해야 합니다.