Certified Kubernetes Security Specialist (CKS)を取得しました

Kubernetes

はじめに

2021年10月頃にCKSを取りました。87点でした。

この記事では、CKS受験にあたってやったことやメモを共有します。誰かのためになれば幸いです。

なお、CKAとCKADの受験記も公開していますので、よければご覧ください。

Certified Kubernetes Administrator(CKA)を取得しました
NishipyCKAを取得しました。ひさびさの資格試験だった上、合計4時間くらい拘束されたので、とても疲れました。はじめに2020年7月にCertified Kubernetes Administrator(CKA)を取得し...(続く)
Certified Kubernetes Application Developer(CKAD)を取得しました
NishipyCKAに続き、CKADを取得しました。合計2時間以上拘束されて、とても疲れました。はじめに2020年7月末にCertified Kubernetes Application Developer(CKAD)を取得...(続く)

CKS概要

https://training.linuxfoundation.org/ja/certification/certified-kubernetes-security-specialist/

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 ベンチマーク  |  Kubernetes Engine ドキュメント  |  Google Cloud
  • CIS = Center of Internet Security

Kube-bench

  • KubernetesクラスタがCIS Benchmarkのベストプラクティスを満たしているか確認するツール

Kubeadm

https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/

Network Policy

https://kubernetes.io/docs/concepts/services-networking/network-policies/

Ingress

https://kubernetes.io/docs/concepts/services-networking/ingress/

seccomp

seccomp(2) - Linux manual page
https://kubernetes.io/docs/tutorials/clusters/seccomp/
  • seccompはシステムコールを制御するフィルターとして働く、Linuxの機能の1つ
  • KubernetesではPodにseccompのプロファイルを適用することでsyscallを制御できる

Tracee

GitHub - aquasecurity/tracee: Linux Runtime Security and Forensics using eBPF
Linux Runtime Security and Forensics using eBPF. Contribute to aquasecurity/tracee development by creating an account on GitHub.
  • Aqua Security社製
  • システムやアプリケーションをトレースし、収集したイベントを解析して、疑わしい動作パターンを検出する
  • eBPFを利用している

eBPF

https://ebpf.io/

  • Extended Berkeley Packet Filter
  • eBPFは、Linuxカーネルを起源とし、OSカーネル内でサンドボックス化されたプログラムを実行することができる技術
  • カーネルのソースコードを変更したり、カーネルモジュールをロードすることなく、安全かつ効率的にカーネルの機能を拡張するために使用される

AppArmor

https://kubernetes.io/docs/tutorials/clusters/apparmor/
  • Kubernetesでは、annnotationによってコンテナごとにAppArmorプロファイルを指定する

Security Contexts

https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
  • Podレベルまたはコンテナレベルで特権やアクセス制御を設定できる
  • 実行ユーザー(runAsUser)やケーパビリティ(capabilities)を設定
  • runAsUser: 0 : rootユーザー

OPA

GitHub - open-policy-agent/opa: An open source, general-purpose policy engine.
An open source, general-purpose policy engine. Contribute to open-policy-agent/opa development by creating an account on GitHub.
https://kubernetes.io/blog/2019/08/06/opa-gatekeeper-policy-and-governance-for-kubernetes/

Container Runtime

  • コンテナランタイム事情を整理してみる が参考になった
  • runc: もともとDockerの内部コンポーネント
  • runsc: gVisorで使われている。Kernelとコンテナを分離する
  • kata-runtime: kata-containerで使われている。各コンテナが小さいVM上で動作し、それぞれがKernelを持つ
  • Kubernetesでは、RuntimeClass を設定できる

ImagePolicyWebhook

https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#imagepolicywebhook
  • Kubernetesクラスタ上で動かすコンテナイメージを独自に制御したい場合に使える仕組み
    • latest タグを使わないなど
  • Kubernetes APIサーバを設定して、Admission Controller として追加できる

Trivy

GitHub - aquasecurity/trivy: Scanner for vulnerabilities in container images, file systems, and Git repositories, as well as for configuration issues
Scanner for vulnerabilities in container images, file systems, and Git repositories, as well as for configuration issues - GitHub - aquasecurity/trivy: Scanner ...(続く)
  • Aqua security社製のCVEスキャナー
  • コンテナイメージ名を指定する以外にも、tarballなどもスキャンできる

Falco

https://falco.org/ja/docs/
  • もともとSysdig社によって構築されたオープンソースのランタイムセキュリティツール
  • Falcoは実行時にカーネルからのLinuxシステムコールを解析し、強力なルールエンジンに対してストリームをアサートする。 ルールに違反した場合は、Falcoのアラートが発せられる

Auditing

https://kubernetes.io/docs/tasks/debug-application-cluster/audit/
  • 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にだいたい書いてあるでしょう。

Frequently Asked Questions: CKA and CKAD & CKS - T&C DOCS (Candidate Facing Resources)

コメント