はじめに
2021年10月頃にCKSを取りました。87点でした。
おはようございます。Certified Kubernetes Security Specialist()と申します。 pic.twitter.com/r1PEUBbm5K
— nishipy (@iamnishipy) October 3, 2021
この記事では、CKS受験にあたってやったことやメモを共有します。誰かのためになれば幸いです。
なお、CKAとCKADの受験記も公開していますので、よければご覧ください。
CKS概要
CKSとは、Certified Kubernetes Security Specialistの略です。Kubernetesの資格のうち、セキュリティに関連したものです。
- Certified Kubernetes Security Specialist (CKS) プログラムとは、CKS保持者がさまざまなベストプラクティスのスキル、知識、およびコンピテンシーを備え、ビルド・デプロイ・ランタイム時にコンテナベース アプリケーションやKubernetesプラットフォームを保護できることを保証するものです。
概要はこんな感じです。
- 受験の前提条件として、CKA合格が必要
- 試験時間:2時間
- 合格ライン:67%
- 有効期限:2年間
- ノードのOS:Ubuntu
- 出題範囲:
- クラスター設定 (10%)
- クラスター強化 (15%)
- システムの強化 (15%)
- マイクロサービスの脆弱性を最小限に抑える (20%)
- サプライチェーンのセキュリティ (20%)
- モニタリング、ロギング、ランタイムセキュリティ (20%)
関連する用語のとても雑な説明
私の雑記メモから、CKSの試験に関連する用語やソフトウェア、機能などを一部紹介します。かなり雑です。
CIS Benchmark
- CIS = Center of Internet Security
Kube-bench
- KubernetesクラスタがCIS Benchmarkのベストプラクティスを満たしているか確認するツール
Kubeadm
Network Policy
Ingress
seccomp
- seccompはシステムコールを制御するフィルターとして働く、Linuxの機能の1つ
- KubernetesではPodにseccompのプロファイルを適用することでsyscallを制御できる
Tracee
- Aqua Security社製
- システムやアプリケーションをトレースし、収集したイベントを解析して、疑わしい動作パターンを検出する
- eBPFを利用している
eBPF
- Extended Berkeley Packet Filter
- eBPFは、Linuxカーネルを起源とし、OSカーネル内でサンドボックス化されたプログラムを実行することができる技術
- カーネルのソースコードを変更したり、カーネルモジュールをロードすることなく、安全かつ効率的にカーネルの機能を拡張するために使用される
AppArmor
- Kubernetesでは、annnotationによってコンテナごとにAppArmorプロファイルを指定する
Security Contexts
- Podレベルまたはコンテナレベルで特権やアクセス制御を設定できる
- 実行ユーザー(
runAsUser
)やケーパビリティ(capabilities
)を設定 runAsUser: 0
: rootユーザー
OPA
Container Runtime
- コンテナランタイム事情を整理してみる が参考になった
- runc: もともとDockerの内部コンポーネント
- runsc: gVisorで使われている。Kernelとコンテナを分離する
- kata-runtime: kata-containerで使われている。各コンテナが小さいVM上で動作し、それぞれがKernelを持つ
- Kubernetesでは、RuntimeClass を設定できる
ImagePolicyWebhook
- Kubernetesクラスタ上で動かすコンテナイメージを独自に制御したい場合に使える仕組み
latest
タグを使わないなど
- Kubernetes APIサーバを設定して、Admission Controller として追加できる
Trivy
- Aqua security社製のCVEスキャナー
- コンテナイメージ名を指定する以外にも、tarballなどもスキャンできる
Falco
- もともとSysdig社によって構築されたオープンソースのランタイムセキュリティツール
- Falcoは実行時にカーネルからのLinuxシステムコールを解析し、強力なルールエンジンに対してストリームをアサートする。 ルールに違反した場合は、Falcoのアラートが発せられる
Auditing
- Kubernetes APIサーバに設定を加えることで、監査ログを取得できる
Policy
オブジェクトを作成して、監査ポリシーを定義する
試験対策
書籍、オンライン講座、Killer.shをうまく受かって試験対策するのがよさそうです。
書籍
全体のリファレンス的なものとして、「Kubernetes完全ガイド」を使いました。
また、積読しておいた「Docker/Kubernetes開発・運用のためのセキュリティ実践ガイド」もパラパラ眺めていました。
オンライン講座
UdemyにCKS関連の講座がいくつかあります。4000円くらいで買えると思うので、やるといいでしょう。
Killer.sh (試験シミュレータ)
試験の詳細を見てみると、「Certified Kubernetes Security Specialist (CKS) に登録する受験者は、 Killer.sh が提供する試験シミュレーターを(試験登録ごとに)2回利用できます」と書いてあるのがわかります。受験前に類題を解くことができるんですが、このシミュレーターがとても勉強になります。難易度としては、実際の試験よりも少し難しめの作ってあるそうです。答えもしっかり付いているので、受験前の腕試しに最適です。書籍やオンライン講座でもいろいろ勉強しましたが、このシミュレータだけ勉強すればよかったのでは?と思ってしまいました。
試験当日
部屋の準備
自宅で受けたので、部屋を掃除しました。壁にポスターが貼ってあったりするとダメみたいですね。自分の部屋には本棚やロードバイクが置いてあるんですが、片付けなくても特に問題ありませんでした。一方で、受験時に使う机の上はかなり綺麗にしないといけません。キーボードとマウス(どちらも無線)とディスプレイとラップトップPC、あとは透明な容器に入れた飲み物以外は片付けました。
チャット
試験官と日本語のチャットができるというCKS-JPの方で申し込んでみましたが、簡単な会話しかしないのでJPである必要はないと思います。試験官も多分日本語ネイティブの方ではないので、お互い英語でやった方が会話がスムーズです。実際コミュニケーションに苦戦して30分くらい開始が遅れました。試験後に予定が入っていたりすると、地味にストレスです。
その他
その他わからないことは、FAQにだいたい書いてあるでしょう。
コメント