CKS — 쿠버네티스 보안 전문가 · 클러스터 셋업 · 퀴즈
퀴즈: 클러스터 셋업
문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
어떤 네임스페이스의 파드에 NetworkPolicy 가 하나도 걸려 있지 않다. 이 파드의 통신 상태는?
- ingress·egress 모두 차단된다
- ingress·egress 모두 허용된다
- 같은 네임스페이스 안에서만 허용된다
- CNI 가 정하는 기본 정책을 따르므로 알 수 없다
기본 거부 정책을 적용한 직후 애플리케이션이 외부 API 호출에 실패했다. 로그에는 커넥션 거부가 아니라 이름 해석 실패가 찍힌다. 가장 먼저 확인할 것은?
- Ingress 컨트롤러의 TLS 인증서
- 노드의 /etc/resolv.conf 권한
- kube-dns 로 나가는 UDP/TCP 53 egress 허용 규칙
- API 서버의 --anonymous-auth 설정
클라우드 노드의 인스턴스 메타데이터(169.254.169.254)로 파드가 직접 접근하지 못하게 막는 가장 적절한 방법은?
- 파드에 hostNetwork: true 를 설정한다
- egress 정책의 ipBlock 에서 cidr 0.0.0.0/0 에 except 로 해당 주소를 도려낸다
- ServiceAccount 의 automountServiceAccountToken 을 false 로 둔다
- PodSecurity 의 restricted 프로파일을 적용한다
Ingress 에 쓸 TLS 인증서와 개인키를 담는 올바른 리소스는?
- ConfigMap 의 tls.crt / tls.key 항목
- type: kubernetes.io/tls 인 Secret
- type: kubernetes.io/dockerconfigjson 인 Secret
- PersistentVolume 에 마운트한 파일
kube-bench 가 [FAIL] 로 지적한 항목을 만났을 때 가장 먼저 할 일은?
- 클러스터를 재시작해 설정을 초기화한다
- etcd 스냅숏을 지우고 다시 만든다
- 해당 항목의 remediation 섹션을 읽고 무엇을 왜 바꾸는지 확인한다
- kube-bench 를 최신 버전으로 올려 다시 돌린다
kube-apiserver 매니페스트에서 CIS 권고에 어긋나는 설정은?
- --anonymous-auth=false
- --authorization-mode=AlwaysAllow
- --authorization-mode=Node,RBAC
- --enable-admission-plugins 에 NodeRestriction 포함