첫 시도
5/15에 CKS 시험을 치뤘으며, 결과만 먼저 얘기하자면 66%로 커트라인인 67%를 넘기지 못하여 불합격 처리되었다.
전체 15문제 중 배점이 높은 ImagePolicyWebhook을 제대로 설정하지 못했고, 몇몇 문제에 말려서 시간을 허비하는 바람에 답안을 충분히 검토할 시간이 부족했다. 다 풀고 나니 5분 밖에 남지 않은 상황이라 아무 것도 할 수가 없었다. 아마 Manifest 파일 정의까지만 해놓은 상태에서 깜빡하고 적용을 하지 않은 답안들이 꽤 있었을 것이다. 게다가 시험 환경에서 제공하는 Notepad가 있는줄 모르고, 계속 vim을 들락날락 하면서 복사/붙여넣기 하느라 불필요한 시간을 낭비했다.
CKA나 CKAD와는 달리, 대부분의 문제가 단순히 리소스 하나만 정의하는데서 끝나지 않으며, 문제점을 찾고 이를 해결하기 위한 다양한 방법을 찾아 적용해야 하기 때문에, 문제 하나 푸는데 걸리는 시간이 적지 않게 소요된다. 예를 들어, Pod Security Policy를 적용한다면 API 서버의 Manifest 파일 수정부터 PodSecurityPolicy 리소스, RBAC 설정 등 모든걸 직접 해야한다. 특히 난이도와 배점이 높은 문제들은 최소 10분 이상은 걸린다고 봐야한다.
아무튼 시험 결과를 읽으면서 다음과 같이 반성하였다. 우선 시간 관리를 제대로 못한 것이 첫번째 패착이고, 그 다음은 배점이 높은 항목에 대해 충분히 공부하지 않은 것이 그 다음이다.
다행히도 1회 재응시 기회가 있기 때문에, 일주일 뒤(5/22) 시험을 바로 예약하였다. 300달러를 허공에 날릴 순 없기 때문에 남은 기간 동안 빡세게 준비해서 통과하는 수 밖에 없었다.
재응시
일주일 동안 준비가 부족했던 부분(Auditing, ImagePolicyWebhook 등)에 대해 실습 위주로 공부하였다. 4~5번 정도 반복하니 나중에는 K8s Reference 없이도 해결 가능할만큼 익숙해졌으며, 이는 실제 시험에서도 큰 도움이 되었다. 그리고 시간 단축을 위해 YAML 파일을 직접 작성하는 대신 'kubectl run' 또는 'kubectl create' 명령어와 더불어 '-oyaml', '--dry-run=client' 옵션을 최대한 활용하였다. 이것만으로 문제당 2~3분 정도는 더 확보할 수 있다.
난이도에 있어서 이전 시험과 큰 차이는 없었으며, 일부 문제는 동일하기까지 했다. 이번에는 모든 항목에 대해서 자신있었고 시험 환경도 익숙했기 때문에 실수만 하지 말자는 마인드로 시험을 보았다. 준비를 많이 한 덕분에 크게 어렵다고 느껴지는 문제는 없었으며 오히려 다 풀고나니 50분 정도 남아있었기 때문에 여유있게 답안을 검토할 수 있었다. 확실히 검토 과정 중에 2~3문제에 실수가 있는 것을 발견하고 수정하였다.
다만 일부 문제의 경우, 문제 지문과 실제 테스트 환경 내용이 전혀 달라서 제대로 풀 수 없었다. 예를 들어, Falco에서 특정 Rule을 위반한 로그를 찾아 지정된 Format으로 Rule을 Override하는 문제가 있었는데, Worker node에서 해당 Rule을 위반한 로그가 전혀 나오지 않아서 아예 손을 댈 수가 없었다. 아직 CKS 시험이 개설된지 얼마 되지 않아서 생기는 해프닝같다.
결과
다행히 82%를 득점하면서 첫 시험보다는 여유있게 통과하였다. 물론 자격증이 있다고 갑자기 보안 전문가가 되는 것은 아니다. 다만, 시험을 준비하는 과정에서 Kuberenetes 환경에 구현할 수 있는 다양한 보안 기능에 대해 배우는 계기가 되었고, K8s 관리자로서의 역량을 강화할 수 있었다.
공부하면서 배운 기술은 현실적으로도 활용도가 높은 편으로, 예를 들어 Auditing과 같은 기능은 현재 담당중인 클러스터에 바로 적용하였고 상당히 만족스럽게 쓰고 있다. 또한 Trivy, Conftest와 같은 툴을 CI/CD 파이프라인에 적용하거나, OPA Gatekeeper를 통해 일관성있는 Policy를 적용할 예정이다.
'Kubernetes > Certificates' 카테고리의 다른 글
[CKS] Supply Chain Security (0) | 2021.05.16 |
---|---|
[CKS] Runtime Security (0) | 2021.05.08 |
[CKS] Minimize Microservice Vulnerabilities (0) | 2021.05.03 |
[CKS] System Hardening (0) | 2021.05.02 |
[CKS] Cluster Hardening (0) | 2021.05.01 |