Kubernetes の資格 CKS (Certified Kubernetes Security Specialist) に合格した 🎉 やったー!Kubernetes 関連は3個目!
今回の記事では「勉強方法」をまとめようと思う.
時系列で書くと,2021年2-3月に CKAD (Certified Kubernetes Application Developer) と CKA (Certified Kubernetes Administrator) に合格していて,詳しくは以下の記事にまとめてある.せっかくなら CKS まで連続で受験しようと思っていたけど,仕事に忙殺されて時間が捻出できなくなったのと,当時はまだ CKS を日本語で受験することができず,結果的に受験するタイミングを逃してしまった.なお,2021年7月に日本語化されている!
そこで今月(2022年4月)にやるぞ!と決めて,3週間ほど平日夜にコツコツ勉強を続けた.週末はもっと時間を捻出したと思う.また個人用だけど毎日学んだメモをブログとは別に TIL (Today I Learned) としてまとめたのも効果的だったと思う.うまく学習サイクルを回しながら自信を持って合格できた!CKAD や CKA のときにも感じたけど,試験中は本当に楽しくハッカソンに参加している気持ちになる.
前提と結果 🐳
CKAD / CKA の記事にも書いたけど,僕は技術講師として研修で Kubernetes と Amazon EKS を教える機会があったり,Kubernetes 上のアプリケーション開発の経験も少しある.逆に言えば,プロダクションワークロードでの大規模な運用経験はなかったりする.またセキュリティ関連の知識も少なく,CKS で出題される技術トピックの多くは未経験だった.よって,あくまで個人的には「CKAD < CKA < CKS」の順番で難しく感じたし,最初は CKS の出題範囲の広さにも圧倒された.
結果は以下の通りだった.1問(6点)は確実に間違えたけど,他にもう1問どこを間違えたんだろう...!正直2時間では時間ギリギリで見直しは5問しかできなかった.そして,今回 CKS を受験して(勉強過程も含めて)1番良かったのは「"知らないこと" に気付けた」ことだった!
受験日 | 試験名 | 得点 | 結果 | バージョン |
---|---|---|---|---|
2022/04/27 | CKS (Certified Kubernetes Security Specialist) | 88 点 | 合格 | Kubernetes v1.23 |
出題範囲 🐳
カリキュラム(出題範囲)は GitHub に PDF として公開されている.
Domain | Weight |
---|---|
Cluster Setup | 10 % |
Cluster Hardening | 15 % |
System Hardening | 15 % |
Minimize Microservice Vulnerabilities | 20 % |
Supply Chain Security | 20 % |
Monitoring, Logging, and Runtime Security | 20 % |
とは言え,出題範囲だけだと勉強するべき具体的な技術トピックを把握しにくくもある.以下の GitHub リポジトリ walidshaari/Certified-Kubernetes-Security-Specialist
と echoboomer/k8s-cks-notes
はとてもよくまとまっている.おすすめ!
CKS 勉強方法 🐳
今回は大きく「3種類」の勉強方法を組み合わせた.詳しく紹介する!
- [A] 座学("知らないこと" に気付くためにインプットする)
- [B] 検証 & ブログ(気になったら検証をしてブログにアウトプットする)
- [C] 実践演習(演習環境を使ってとにかく実践する)
[A] 座学("知らないこと" に気付くためにインプットする)
A-1. Udemy : Kubernetes CKS 2022 Complete Course
まず,有名な Udemy コース「Kubernetes CKS 2022 Complete Course」を1.5倍速でザッと視聴した(正確には購入したときは 2021 だった).e-Learning は本当にわかりやすくて,デモも多くて,学習項目ごとにコツコツ学べた.とにかく「"知らないこと" に気付く」ために1番有効だったと思う.2021年に購入したときには Exam Simulator も同梱されていたけど,現在は同梱されなくなっている(後述する).
講師をしている Kim のブログに Udemy Discount Code も載っているため,購入する前に確認すると良いかと!
A-2. 書籍 : Docker/Kubernetes 開発・運用のためのセキュリティ実践ガイド
並行して書籍「Docker/Kubernetes 開発・運用のためのセキュリティ実践ガイド」も読んだ.CKS 対策本ではないけど,学べる技術トピックは近く,何よりも日本語で読めるのは素晴らしかった.今度書評記事も書く予定!
英語の書籍だと「Learn Kubernetes Security」も CKS 対策として使えるという話を聞いたこともある.今回は読まなかった.
[B] 検証 & ブログ(気になったら検証をしてブログにアウトプットする)
B-1. ブログ
座学で大量にインプットをして,気になったり,理解があやふやに感じたところはどんどん検証をしてブログにまとめた.個人的にはブログにまとめることで,客観的に学び直せて理解が深まる感覚がある.また単純にブログネタも増やせたのも良かった.実は2021年にも少し CKS を勉強していた時期があり,以下に CKS に関連する記事の一覧をまとめておく.
- Network Policy をわかりやすく学べる「Kubernetes Network Policy Recipes」 - kakakakakku blog
- Kubernetes と seccomp を組み合わせてシステムコールを制限する - kakakakakku blog
- Secret の自動マウントをオプトアウトするかどうか : automountServiceAccountToken フィールド - kakakakakku blog
- kube-apiserver で「匿名リクエスト」を無効化する : --anonymous-auth=false - kakakakakku blog
- Kubernetes と OPA を組み合わせて Namespace と Pod の「ラベル強制」を試した - kakakakakku blog
- Kubernetes と OPA を組み合わせて Deployment の spec.replicas に対して「最低個数」を制限する - kakakakakku blog
- kubectl や kube-apiserver など Kubernetes バイナリを checksum で検証する - kakakakakku blog
- Kubernetes と AppArmor を組み合わせてファイル操作を制限する - kakakakakku blog
- kubelet が他ノードのラベルを操作しないように制限できる NodeRestriction を試した - kakakakakku blog
- Pod でルートファイルシステムを読み取り専用にする securityContext.readOnlyRootFilesystem - kakakakakku blog
- Kubernetes と Falco を組み合わせて脅威検出に入門する - kakakakakku blog
[C] 実践演習(演習環境を使ってとにかく実践する)
C-1. Killercoda
演習環境「Killercoda」は本当に価値があった.Udemy コース「Kubernetes CKS 2022 Complete Course」と繋がっていて,e-Learning を観た後に Killercoda で演習をする流れになっている.とすると Udemy 購入者限定のように思うけど,そんなことはなく,登録すれば無料で何度でも使える.絶対にやるべき!現時点で以下の「40種類」もある!全て完璧に正解できるようにしておくと良いと思う.
- Playground
- Vim Setup
- Apiserver Crash
- Apiserver Misconfigured
- Apiserver NodeRestriction
- AppArmor
- Auditing Enable Audit Logging
- CIS Benchmarks fix Controlplane
- CertificateSigningRequests sign manually
- CertificateSigningRequests sign via API
- Container Hardening
- Container Image Footprint User
- Container Namespaces Docker
- Container Namespaces Podman
- Falco Change Rule
- Image Use Digest
- Image Vulnerability Scanning Trivy
- ImagePolicyWebhook Setup
- Immutability Readonly Filesystem
- Ingress Create
- Ingress Secure
- NetworkPolicy Create Default Deny
- NetworkPolicy Metadata Protection
- NetworkPolicy Namespace Selector
- Privilege Escalation Containers
- Privileged Containers
- RBAC ServiceAccount Permissions
- RBAC User Permissions
- Sandbox gVisor
- Secret Access in Pods
- Secret ETCD Encryption
- Secret Read and Decode
- Secret ServiceAccount Pod
- ServiceAccount Token Mounting
- Static Manual Analysis Docker
- Static Manual Analysis K8s
- Syscall Activity Strace
- System Hardening Close Open Ports
- System Hardening Manage Packages
- Verify Platform Binaries
C-2. A Cloud Guru : Certified Kubernetes Security Specialist (CKS)
A Cloud Guru の「Certified Kubernetes Security Specialist (CKS)」は e-Learning を使わず,演習環境「HANDS-ON LAB」を中心に使った.特に最後にある Practice Exam には「計12種類」の演習を試せて RBAC / Pod Security Policies / CIS Kubernetes Benchmarks / Network Policy / ImagePolicyWebhook / Trivy / AppArmor / Falco などを試せる.手順や回答例が充実してるのはメリットだけど「答え合わせ」の機能はなく,受験直前だと使いにくく感じた.
C-3. Kodekloud : CKS – Challenges
有料コースの Kodekloud から2021年4月に新しくリリースされた「無料の」演習環境として「CKS – Challenges」がある.タイミング良く受験前にリリースされたため試した.現時点だと Challenges 1-3 まで公開されていて,Challenges 4-5 は公開されていなかった.難易度は高く複雑な演習に取り組めて良かった.個人的には UI が使いにくく,問題を確認するために「コンポーネント」や「矢印」をクリックする必要があると理解するまでに時間がかかった.
C-4. Kubernetes Exam Simulator
最後は Kubernetes Exam Simulator で,もともとは Udemy コースに同梱されていて,Killer Shell (Killer.sh) という名前だった.現在は資格自体に「公式に」同梱されているため,試験を購入すれば模擬試験として最大2回まで受験できる.試験日を決める前に受験できるので,ある程度準備できたと感じたら受験してみるのが良いと思う.
Kubernetes Exam Simulator はドキュメントにも書かれている通り,実際の試験よりも難しく作られている.実際に「2時間」を計測して受験したら「41 / 75(55点ぐらい)」でガッカリした(´・ω・`) その後に答えを見ずにドキュメントを使って続けたら「53 / 75(70点ぐらい)」まで上がった.残りは難しく,答えを見て理解を深めた.また Kubernetes Exam Simulator は「36時間」の制限時間内なら何度でも環境をリセットできるため,もう一度「2時間」で再挑戦したら「72 / 75(96点ぐらい)」まで取れるようになった.
唯一残念だったのは Kubernetes Exam Simulator は日本語化されてなく,受験後のアンケートにフィードバックを入れておいた.
まとめ
受験しようと思って後回しにしていた CKS (Certified Kubernetes Security Specialist) に合格できて良かった 🎉
本記事が何かの参考になれば✌️