CKS — 쿠버네티스 보안 전문가 · 시스템 하드닝 · 퀴즈
퀴즈: 시스템 하드닝
문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
securityContext 의 privileged: true 가 위험한 이유를 가장 정확히 설명한 것은?
- 컨테이너가 호스트의 네트워크 네임스페이스를 그대로 쓰게 되어 노드 포트에 닿는다
- 컨테이너가 root UID 로 실행된다
- 루트 파일시스템이 쓰기 가능해진다
- 모든 capability 부여, 모든 디바이스 접근 허용, AppArmor·SELinux·seccomp 비활성화가 한꺼번에 일어난다
seccompProfile 의 type 을 Localhost 로 지정했는데 파드가 기동하지 못한다. 가장 유력한 원인은?
- seccomp 는 컨테이너 레벨에만 설정할 수 있다
- RuntimeDefault 와 함께 써야 한다
- PodSecurity 의 baseline 프로파일이 Localhost 를 금지한다
- localhostProfile 에 지정한 프로파일 파일이 노드에 없다
80 포트를 열어야 하는 웹 서버 컨테이너를 최소 권한으로 만들려면?
- privileged: true 로 두고 runAsUser 만 1000 으로 낮춘다
- capabilities.add 에 NET_ADMIN 을 넣는다
- capabilities.drop 에 ALL 을 넣고 add 에 NET_BIND_SERVICE 만 넣는다
- hostNetwork: true 로 노드 포트를 직접 쓴다
hostPID: true 인 컨테이너가 다른 워크로드의 시크릿을 읽을 수 있는 경로는?
- 노드의 etcd 데이터 디렉터리를 직접 읽는다
- kubelet 의 읽기 전용 포트로 Secret API 를 호출한다
- 다른 프로세스의 /proc/<PID>/environ 에서 환경변수를 읽는다
- CNI 의 eBPF 맵을 덤프한다
쿠버네티스 1.30 이상에서 AppArmor 프로파일을 지정하는 정식 방법은?
- securityContext.appArmorProfile 필드
- container.apparmor.security.beta.kubernetes.io/<컨테이너> 어노테이션
- RuntimeClass 의 handler 값
- PodSecurity 네임스페이스 라벨
readOnlyRootFilesystem: true 를 적용한 컨테이너가 임시 파일 쓰기에 실패한다. 올바른 대응은?
- readOnlyRootFilesystem 을 false 로 되돌린다
- hostPath 볼륨으로 노드의 /tmp 를 마운트한다
- 쓰기가 필요한 경로에 emptyDir 볼륨을 마운트한다
- allowPrivilegeEscalation 을 true 로 켠다