【備忘録】CKS合格のための学習方法、試験時のノウハウ

# はじめに

2025年4月30日にCKS（Certified Kubernetes Security Specialist）に合格しました！
本記事は、合格するまでの勉強方法や試験中のノウハウについて記載します。執筆しながら気づいたのですが、CKSに限らず、CKAやCKADにも共通する内容も多いです。

:::note info
合格までのやや長い道のりは、[こちら](https://qiita.com/showchan33/items/67b7b9d55a0639851cd6)の記事に書いております。
:::

# 学習方法

既に多くの方が情報を発信されているので真新しさはないですが、まずは自分が使った教材の特徴について表にしてみます。

<table>
  <thead>
    <tr>
      <th>プラットフォーム</th>
      <th>教材名</th>
      <th>講義内容</th>
      <th>実践環境</th>
      <th>料金</th>
      <th>料金の備考</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Udemy</td>
      <td><a href="https://www.udemy.com/course/certified-kubernetes-security-specialist-certification/">Certified Kubernetes Security Specialist 2025</a></td>
      <td>◎</td>
      <td>△</td>
      <td>¥3,600</td>
      <td>セール中の料金かもしれない</td>
    </tr>
    <tr>
      <td rowspan="2">KodeKloud</td>
      <td><a href="https://learn.kodekloud.com/user/courses/certified-kubernetes-security-specialist-cks">Certified Kubernetes Security Specialist (CKS)</a></td>
      <td>◯？(未受講なので推測)</td>
      <td>◯</td>
      <td rowspan="2">$35/月</td>
      <td rowspan="2">"KodeKloud STANDARD" の月額料金</td>
    </tr>
    <tr>
      <td><a href="https://learn.kodekloud.com/user/courses/cks-challenges">CKS - Challenges</a></td>
      <td>（無し）</td>
      <td>◯</td>
    </tr>
    <tr>
      <td>Killercoda</td>
      <td><a href="https://killercoda.com/killer-shell-cks">Killer Shell CKS</a></td>
      <td>（無し）</td>
      <td>◯</td>
      <td>無料</td>
      <td>$9.99/月を払えばよりリッチな環境を利用可能</td>
    </tr>
    <tr>
      <td>killer.sh</td>
      <td><a href="https://killer.sh/cks">CKS Simulator</a></td>
      <td>（無し）</td>
      <td>◎</td>
      <td>$445</td>
      <td>CKSの受験料も含まれており、2回のセッションを利用可能</td>
    </tr>
  </tbody>
</table>

各教材について、表では説明しきれない内容を以下で解説します。

# 学習初期：講義の受講方法

## Udemy: Certified Kubernetes Security Specialist 2025

https://www.udemy.com/course/certified-kubernetes-security-specialist-certification/

講義形式の学習はこの教材しか利用しなかったため他との比較ができませんが、講義は非常にわかりやすいし、試験で出題される観点も丁寧に教えてくれて、親切な印象でした。ただ、自分で手を動かして実践するための環境が用意されていない点は、少し惜しかったです。唯一使えそうなコンテンツとして、講師が作成した以下のGitHubがありました。

https://github.com/zealvora/certified-kubernetes-security-specialist

このリポジトリには、講師がビデオで説明している環境やコマンドを再現するための手順やソースコードが格納されています。私はこれを参考にして自宅のLinux PCやAWSのEC2インスタンスにCKS学習用の環境を作って、なるべく実践ができるように工夫していました。しかし環境の構築や再現に時間が掛かるので、「なるべく早くCKSに合格したい人」にはこの方法はおすすめしません。

講義を聴きながら実践経験も積みたいのであれば、受講をキリの良いところまで進めた後に、Killercodaの[Killer Shell CKS](https://killercoda.com/killer-shell-cks)から関連しそうなシナリオを探して解いてみるのはありかもしれません。ドンピシャなシナリオが用意されていなくても、工夫すれば講義の内容を手を動かして実践できる可能性はあります。例えばGitHubの[domain-3-minimize-microservice-vulnerability](https://github.com/zealvora/certified-kubernetes-security-specialist/tree/main/domain-3-minimize-microservice-vulnerability)でCiliumNetworkPolicyの作成例が出てきますが、Killercodaで既にCiliumがインストールされている環境（[Playground Cilium](https://killercoda.com/killer-shell-cks/scenario/playground-cilium)）を利用して、CiliumNetworkPolicyのマニフェストを作る練習ができます。

## KodeKloud: Certified Kubernetes Security Specialist (CKS)

https://learn.kodekloud.com/user/courses/certified-kubernetes-security-specialist-cks

講義と実践演習がセットになっており、バランス良く学習が進められる可能性があります。私は一回目の試験に落ちた後、二回目の試験までにより多くの問題を解きたくてこのコンテンツを利用したため、試験勉強中は講義を一切視聴していませんでした。試験が終わった後に本記事を書くため、2〜3本ほど講義を視聴してみたところ（最初のCISベンチマーク付近しか確認していませんが汗）、CKSで出題される各項目の概念や仕組みの説明が中心で、実際にターミナルで手を動かす演習はLabs（演習用の環境）に完全に任せるスタイルのようです。先ほど紹介した[Udemyの教材](https://www.udemy.com/course/certified-kubernetes-security-specialist-certification/)では演習用の環境がない分、講師が動画内で実際にコマンドを実行しながら解説していたため、講義のスタイルに違いが見られました。

※ 思い返すと、[Udemy](https://www.udemy.com/course/certified-kubernetes-security-specialist-certification/)の講師の方はコマンドを実行しながら淀みなく説明する動画を、三谷幸喜監督のようにワンカットで撮影していたのですね。そして、あれだけの沢山のコンテンツと[GitHub](https://github.com/zealvora/certified-kubernetes-security-specialist)をほぼ一人で用意されていたのでしょうか。だとすると、すごい...！

## 受講方法まとめ

以下の二つの受講方法が考えられます。

* (1) [Udemyの教材](https://www.udemy.com/course/certified-kubernetes-security-specialist-certification/)を利用する場合、演習の少なさを補うために[KillercodaのKiller Shell CKS](https://killercoda.com/killer-shell-cks)等を併用したほうがよさそう
* (2) [KodeKloudの教材](https://learn.kodekloud.com/user/courses/certified-kubernetes-security-specialist-cks)を利用する場合、講義も演習もあるので、これ一つを受講すれば問題ない可能性がある

:::note warn
私が知らないだけで、上記以外の良いコースがあるかもしれないので、決して鵜呑みにせずに「一つの参考情報」として捉えてください。
:::

# 学習後期：多くの問題を解いて経験値を上げる

一通り講義を受講し終えたら、あとはひたすら沢山の問題を解いていきましょう。CKSはCKAやCKADと比べて問題のバリエーションが多く、多くの知識やノウハウを必要とする印象を私は受けました。たとえ[killer.sh](https://killer.sh/cks)の問題を完璧に出来るようになっても、そこには出てこなかった問題がざらに出てきます。もともとLinuxやKubernetes周りのセキュリティの知識がある人は有利かもしれませんが、そうでないならば実践的な問題を沢山解いて少ない経験をカバーするしかありません。

再掲になりますが、以下の表などに書かれた教材の問題をできる限り多く解きましょう。全ての問題を二回以上解ければだいぶ自信がつくはずです（と言っている私が出来ていませんが）。どの問題もCKSの出題範囲に関係するものなので、取り組んで得た経験は決して無駄にはならないと思います。

<table>
  <thead>
    <tr>
      <th>プラットフォーム</th>
      <th>教材名</th>
      <th>実践環境</th>
      <th>料金</th>
      <th>料金の備考</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td rowspan="2">KodeKloud</td>
      <td><a href="https://learn.kodekloud.com/user/courses/certified-kubernetes-security-specialist-cks">Certified Kubernetes Security Specialist (CKS)</a></td>
      <td>◯</td>
      <td rowspan="2">$35/月</td>
      <td rowspan="2">"KodeKloud STANDARD" の月額料金</td>
    </tr>
    <tr>
      <td><a href="https://learn.kodekloud.com/user/courses/cks-challenges">CKS - Challenges</a></td>
      <td>◯</td>
    </tr>
    <tr>
      <td>Killercoda</td>
      <td><a href="https://killercoda.com/killer-shell-cks">Killer Shell CKS</a></td>
      <td>◯</td>
      <td>無料</td>
      <td>$9.99/月を払えばよりリッチな環境を利用可能</td>
    </tr>
    <tr>
      <td>killer.sh</td>
      <td><a href="https://killer.sh/cks">CKS Simulator</a></td>
      <td>◎</td>
      <td>$445</td>
      <td>CKSの受験料も含まれており、2回のセッションを利用可能</td>
    </tr>
  </tbody>
</table>

各教材の問題（実践環境）について、少し解説します。

## KodeKloud: Certified Kubernetes Security Specialist (CKS)

https://learn.kodekloud.com/user/courses/certified-kubernetes-security-specialist-cks

既に書きましたが、講義とセットになっている演習用の環境です。演習環境として、いくつかの講義の後に学んだ内容を即座に実践できるLabsと、実際の試験に近い感覚で出題されるMock Examの2つがあります。Labsは、前半に選択式の問題が出てくるなど実際の試験とは異なる部分があるので、問題を沢山こなしたい時期だと多少のまどろっこしさを感じるかもしれません。それでも沢山のシナリオが出てくるので、知識の範囲を拡げるには良いと思います。

## KodeKloud: CKS - Challenges

https://learn.kodekloud.com/user/courses/cks-challenges

CKSの出題範囲で、より複雑なシナリオが用意されています。一つのシナリオに複数のコンポーネントが含まれていて、それぞれの関係性を考慮しながら問題を解いていく必要があります。演習問題をやり尽くして、新たに解く問題がなくなってきた段階でチャレンジしてみるのはありだと思います。解答はKodeKloudではなく、[GitHub](https://github.com/kodekloudhub/certified-kubernetes-security-specialist-cks-course/tree/main/docs/09-cks-challenges)に掲載されているのでご注意ください。

## Killercoda: Killer Shell CKS

https://killercoda.com/killer-shell-cks

今回紹介する実践環境では唯一、無料で使えます。無料にも関わらずCKS用のシナリオが40個くらいあり、実戦経験を積むには良い環境です。問題を解くだけではなく、例えば「Falcoのスキルを上げたい」とか「bomやtrivyのコマンドの使い方を手を動かして理解したい」場合などに、環境だけ借りて使うこともできます。様々な使い方が手軽にできるという意味で、個人的には一番気に入っていました。

## killer.sh: CKS Simulator

https://killer.sh/cks

言わずとしれた（？）、CKSの受験を申し込むと使える試験用シミュレーターです。2回のセッションが利用可能で、1回のセッションの利用時間は36時間です。一回セッションが始まったら36時間の経過時間を一時停止できないので、killer.shを利用するためのまとまった時間を確保するなどして、計画的に使う必要があります。時間的な制約が強いのが難点ですが、本番の試験環境を最も忠実に再現している貴重な環境です。一通り問題を解いて実践経験を積むのはもちろんですが、本番試験での操作感を体に馴染ませる意味でも、試験の前日や直前にも是非活用したいツールです。

:::note warn
上で紹介した問題を全て解いて完璧に仕上げても、おそらく本番では、今まで見たこともない問題が2つくらい出てきます。ただ定番の問題や易しめの問題も必ず出題されるので、たとえ9割以上は取れなくても、7~8割くらいは取れるようになるかなと思います。
:::

# 試験中のノウハウ、Tips

試験中に気をつけたいこと等について記載します。

## 一問あたりのボリュームについて

「CKSは全ての問題を解くための時間が足りない」とよく言われます。120分の時間でおおよそ16問を解く必要があるので、killer.shで模擬試験を解く時は「1問あたり7分30秒以内」のペースを意識してやっていました。しかしkiller.shの場合、何回も解いて解法をある程度覚えてしまっても、どうしても10分は掛かるボリュームの問題がありました。

一方で、本番の試験はkiller.shと同等の難易度ではありますが、一問あたりの量はkiller.shよりも少ないように感じました。例えばNetworkPolicyやCiliumNetworkPolicyの問題で、複雑なルールを複数作るものは出なさそうです。また、ImagePolicyWebhookやaudit logの問題でconfigの編集が必要な場合は、kube-apiserver.yamlでマウントが必要なディレクトリは既に設定済みだった記憶があります。

とは言え一つの問題に詰まって考えている暇はあまりないので、少し考えて無理そうだったら次の問題に進んだほうがよさそうです。

## 問題文を最後までしっかり読む

「問題文を最後までしっかり読む」という当たり前のことを忘れがちです。私の場合、不合格だった一回目の試験の前半は緊張もあって、英語の問題文があまり頭に入ってこない状態でした。そして問題を最後まで読まずに断片的にしか理解していない状態で解答に着手していました。

二回目の試験では少し落ち着いて問題を読めるようになってきて、結構重要な内容が後半に書かれていることも多いと気づきました。例えばデプロイ中のリソースの設定の修正が必要な場合に、「同じリソースのマニフェストが ``~/webapp.yaml`` に格納されています」という説明が問題の一番最後に書かれているケースがありました。もし最後まで読んでいなかったら、デプロイ中のリソースのマニフェストを ``kubectl get deploy webapp -n alpha -o yaml > webapp.yaml`` のようにして自分で作成する不必要な作業をやっていたことでしょう。（事実私は一回目の試験でそうしてしました...）

## Webドキュメントの調べ方を練習しておく

個人的意見ですが、使い方の調査が必要な場合にWebのドキュメントは極力使わず、ターミナルでツールのヘルプコマンド等を実行して確認する方が効率的と思っています。しかしながら、どうしてもWebで調査しないと解けない問題はあります。Web調査で悩ましいのが、調べたい情報がすぐに見つからず、調査でかなりの時間を使ってしまうことが多い点です。そこで、試験本番のWebによる調査時間を極力減らすために、事前に調べ方の練習をしておくことをおすすめします。

例えば、「あるNamespaceにPod Security Standardsをenforceモードで適用してください」という問題が出たとします。この場合に[kubernetes.io](https://kubernetes.io/)で "pss"で検索しても、上位候補のドキュメントにPSSを適用するマニフェストの例は出てきません。これに単語を一つ足して"pss enforce"で検索すると、最初の候補にPSSを適用するマニフェストが書かれたページがヒットします。

別の例だと、CiliumNetworkPolicyのマニフェストのサンプルを[Ciliumのドキュメント](https://docs.cilium.io/en/stable/index.html)で確認したい場合に、"CiliumNetworkPolicy"で検索してもマニフェストが記載されたページは出てきません。そこで例えば、"Layer4"と入れるとL4のマニフェストの例が載っているページに行き着けます。

そして、[Falcoのドキュメント](https://falco.org/docs/)も調べるのが結構大変です。例えば、「あるruleのoutputのフォーマットに、タイムスタンプとユーザIDを入れる」というそんなに難しくなさそうな問題が出たとします。「タイムスタンプとユーザIDをFalcoでどう書くのか？」がわかればいいのですが、何も知らないでFalcoのページを調べても、すぐに該当ページを見つけられないはずです。この情報が書かれているページは [Supported Fields for Conditions and Outputs](https://falco.org/docs/reference/rules/supported-fields/) というタイトルなので、もしこれが記憶の片隅にあれば"field"という単語で検索して見つけられます。

他にも紹介したいものはあるのですが、キリがないのでこの辺でやめときます。是非、皆さまも自分なりの調べ方を見つけていただければと思います。

## 主要なVimのコマンド、ターミナルのショートカットを覚えておく

CKAやCKADにも共通すると思いますが、Vimとターミナルのショートカットに使い慣れている方が有利です。細かいものまでは覚える必要はないと思いますが、Vimだと操作に最低限必要なコマンドに加えて、複数行の選択(V)、コピー(y)、ペースト(p)、削除(d)、複数行選択してまとめてインデント変更（V,>,<等を利用）くらいは知っておくとよさそうです。またターミナルのショートカットの場合は、Crtl+rの後にキーワードを入力して、これまで実行したコマンドを検索して実行できるので（リバースインクリメンタルサーチ（reverse-i-search）というらしい）、少し前に実行したコマンドやそれに近いコマンドを実行する際に役立ちます。

# おわりに

受験を終えて「CKSはうわさ通り難しかった...」印象でした。次もしCKSを受験（更新）する際は今の知識やノウハウが確実に落ちていると思われるので、この記事の内容を読み直して対策しようと思います。