KCSA — 쿠버네티스 보안 어소시에이트 · 쿠버네티스 위협 모델 · 퀴즈
퀴즈: 쿠버네티스 위협 모델
문항 7개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
개발자에게 `pods/exec` 권한을 주는 것이 위험한 가장 직접적인 이유는?
- exec 세션이 감사 로그에 남지 않기 때문
- exec 을 쓰면 컨테이너가 privileged 로 전환되기 때문
- exec 은 kubelet 인증을 우회하기 때문
- 파드 안에 마운트된 ServiceAccount 토큰을 읽어 그 SA 의 권한을 그대로 획득할 수 있기 때문
RBAC 의 `escalate` 동사가 특별히 위험한 이유는?
- 다른 모든 네임스페이스의 리소스를 마음대로 읽게 해 주기 때문
- 자기가 갖지 않은 권한도 Role 에 써 넣을 수 있게 해, 쿠버네티스의 권한 상승 방지 장치를 무력화하기 때문
- 감사 로그 기록을 끄기 때문
- 노드에 직접 SSH 할 수 있게 해 주기 때문
`hostPath` 로 노드의 `/` 를 마운트한 파드가 특히 위험한 이유는?
- 노드 디스크가 가득 차기 때문
- 같은 노드에 떠 있는 다른 파드들의 네트워크 트래픽을 전부 그대로 엿볼 수 있기 때문
- 스케줄러가 그 파드를 이동시킬 수 없기 때문
- kubelet 인증서·kubeconfig·컨테이너 런타임 소켓 등 노드 전체 자산에 접근할 수 있어 노드 장악과 클러스터 확산으로 이어지기 때문
STRIDE 의 Repudiation(부인) 위협에 대한 쿠버네티스의 주된 대응은?
- NetworkPolicy 로 트래픽을 차단한다
- 감사 로그를 켜고 공유 계정 대신 개별 신원을 쓴다
- Secret 을 저장 시 암호화한다
- ResourceQuota 로 자원을 제한한다
공격자가 클러스터에 지속성을 확보하는 기법 중, apiserver 를 거치지 않아 API 기반 탐지를 어렵게 만드는 것은?
- CronJob 생성
- 노드의 매니페스트 디렉터리에 정적 파드 파일을 놓기
- ClusterRoleBinding 추가
- DaemonSet 배포
빌드 시 `--build-arg` 로 토큰을 넘긴 뒤 이후 RUN 단계에서 그 파일을 삭제했다. 결과는?
- 삭제했으므로 이미지에서 완전히 제거된다
- 이전 레이어와 이미지 히스토리에 값이 그대로 남아 이미지를 받은 누구나 읽을 수 있다
- 레지스트리가 자동으로 민감 값을 마스킹한다
- 이미지 스캔 도구만 볼 수 있고 일반 사용자는 볼 수 없다
공개 저장소에 API 키가 커밋된 것을 발견했을 때 가장 먼저 해야 할 일은?
- Git 히스토리를 재작성해 커밋에서 값을 제거한다
- 저장소를 비공개로 전환한다
- 해당 자격증명을 즉시 폐기하고 새 값으로 교체한다
- 커밋한 개발자에게 재발 방지 교육을 한다