KCSA — 쿠버네티스 보안 어소시에이트 · 구성요소 보안 — 스케줄러, kube-proxy, 런타임, CNI, 스토리지, 클라이언트 · 퀴즈
퀴즈: 구성요소 보안 — 여섯 구성요소
문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
kube-scheduler 의 --authentication-kubeconfig 플래그를 비워 두면 스케줄러의 HTTPS 포트에서는 어떤 일이 일어나나?
- 모든 토큰 요청이 익명으로 취급되고 클러스터의 클라이언트 CA 도 조회하지 않는다
- 스케줄러가 시작을 거부하며 플래그를 지정하라는 오류를 낸다
- API 서버의 인증 설정을 자동으로 복사해 같은 방식으로 인증한다
- 10259 포트가 열리지 않아 메트릭과 상태 엔드포인트가 비활성화된다
kube-proxy 의 --metrics-bind-address 기본값과 그 의미는?
- 0.0.0.0:10256 — 모든 인터페이스에서 메트릭과 상태를 함께 낸다
- 0.0.0.0:10249 — 모니터링을 위해 기본으로 노드 밖에서 읽을 수 있다
- 127.0.0.1:10249 — 기본으로는 노드 안에서만 메트릭을 읽을 수 있다
- 메트릭 서버가 기본으로 꺼져 있어 플래그를 주어야만 켜진다
컨테이너 런타임 소켓에 접근할 수 있는 공격자가 할 수 있는 일로 API 서버 우회 위험 문서가 적은 것은?
- etcd 에 저장된 모든 Secret 을 API 서버를 거치지 않고 읽을 수 있다
- 그 노드에서 새 컨테이너를 띄우거나 돌고 있는 컨테이너와 상호작용할 수 있다
- 스케줄러를 대신해 모든 파드의 노드 배치를 바꿀 수 있다
- 클러스터 CA 로 새 클라이언트 인증서를 서명할 수 있다
NetworkPolicy 를 구현하는 컨트롤러가 없는 클러스터에서 NetworkPolicy 리소스를 만들면?
- API 서버가 지원되지 않는 리소스라며 생성을 거부한다
- kube-proxy 가 대신 iptables 규칙으로 정책을 집행한다
- 정책이 만들어질 때까지 파드 생성이 보류된다
- 오브젝트는 저장되지만 트래픽에는 아무 효과가 없다
어드미션에서 hostPath 를 특정 디렉터리로 제한하는 검증이 실제로 효과를 내려면 무엇이 함께 필요하다고 볼륨 문서는 말하나?
- 허용한 디렉터리에 대해 SELinux 라벨을 컨테이너와 같게 맞추어야 한다
- 그 hostPath 마운트를 읽기 전용으로 강제해야 한다
- 파드에 runAsNonRoot 를 설정해 root 로 실행되지 않게 해야 한다
- hostPath 대신 emptyDir 을 쓰도록 자동 변환해야 한다
kubeconfig 문서가 "신뢰할 수 없는 kubeconfig 는 셸 스크립트처럼 검사하라" 고 경고하는 이유와 가장 관련 깊은 기능은?
- client-go 자격 증명 플러그인 — kubeconfig 의 exec 항목에 적힌 외부 명령이 자격 증명을 얻기 위해 실행된다
- 인증서 자동 교체 — kubeconfig 의 인증서가 만료되면 kubectl 이 CA 에 새 인증서를 요청한다
- 컨텍스트 전환 — kubeconfig 의 current-context 가 바뀌면 다른 클러스터에 명령이 간다
- 토큰 캐시 — kubeconfig 가 bearer 토큰을 디스크에 평문으로 저장한다