Certified Kubernetes Security Specialist (CKS) 考照筆記

Certified Kubernetes Security Specialist (CKS) 考照筆記

話說還在新加坡工作時,那時候就用公司福利金購買了 CKA、CKAD、CKS 的考試,前兩張因為有想換工作的壓力所以就很快地考到,最後這一張 Security 的則是拖延症發作,一路拖到最近考試快到期才抓緊時間趕快考了。

前面的廢話說完來點有營養的,關於這張 Security 的證照,首先我建議最好至少有考過 CKA 的證照,或是確定你能熟練的管理 Kubernetes 集群,而且操作也要熟悉再來考這張,這張在考試解題過程中,熟練操作是基本還要加上知道去哪裡找問題或是設定集群的設定,所以真的建議先有 CKA 再考比較好。

考試準備

The Best DevOps Online Training Courses | KodeKloud
KodeKloud is the #1 DevOps course provider and helps students learn trending technologies they need to thrive in their career. Learn more about KodeKloud!

我是到上面這個網站有訂閱會員,就有 CKS 考證照課程可以上,看演片介紹每個單元的觀念大概有這些單元:

  • Understanding the Kubernetes Attack Surface
    • 介紹 Kubernetes 環境可能存在的可攻擊面
  • Cluster Setup and Hardening
    • 集群設定以及安全強化
    • 介紹像是 CIS Benchmark、Kube Bench 等工具掃描漏洞並如何修復
    • 集群中各個組件 (api-server, etcd, kubelet, docker daemon) 跟安全以及身分驗證的正確設定
    • 集群中的 RBAC
    • Network Policy
    • Ingress 的證書配置
  • System Hardening
    • 主要介紹 Worker Node 相關的安全議題
    • 正確設定 VM 的 SSH 跟 sudo
    • UFW 防火牆
    • 最小化雲端 IAM 權限
    • Syscall 相關議題
    • Seccomp
    • AppArmor
  • Minimize Microservice Vulnerabilities
    • 應用跑在集群中如何讓可攻擊面最小化
    • Security Contexts
    • Admission Controllers (Validating/Mutating Admission Controllers) 驗證阻擋不安全的應用設定
    • Open Policy Agent (OPA) 同上,但可以用 Rego 語法實現複雜的檢查
    • Runtime Classes 配置使用 gVisor / Kata container 實現沙盒容器
  • Supply Chain Security
    • 應用供應鏈安全性
    • Manifest 掃描,kubesec
    • Image 掃描,Trivy
  • Monitoring Logging and Runtime Security
    • 如何監控異常行為
    • 配置 kube-api-server audit log
    • Falco 監測容器中的異常行為

每個單元看完都有練習題,以及最後會有模擬考試可以練習,都建議作完題目要去翻一下官方文件搞懂怎麼配置,以及有個印象要打甚麼關鍵字搜尋找到文件,這樣考試找文件速度才會快。

最後 KodeKloud 上面題目做完可以去下面這網站有模擬考,演練一下做題速度。

Killer Shell - Exam Simulators
Linux Foundation CKS CKA CKAD LFCS LFCT Kubernetes Linux Exam Simulators / Example Questions / Practice Exam

學習資源

我是有看下面這個網站的重點整理

CKS Exam Study Guide: Resources to Pass Certified Kubernetes Security Specialist
In this Certified Kubernetes Security Specialist (CKS) Exam study guide, I have listed all the resources you can

然後下面是我覺得必考的,模擬試題以及真正考試有出現容易不熟練的題目。

网络策略
如果你希望在 IP 地址或端口层面(OSI 第 3 层或第 4 层)控制网络流量, NetworkPolicy 可以让你为集群内以及 Pod 与外界之间的网络流量指定规则。 你的集群必须使用支持 NetworkPolicy 实施的网络插件。

考到爛了,CKA、CKAD 都有考,一定要看

为 Pod 或容器配置安全上下文
安全上下文(Security Context)定义 Pod 或 Container 的特权与访问控制设置。 安全上下文包括但不限于: 自主访问控制(Discretionary Access Control): 基于用户 ID(UID)和组 ID(GID) 来判定对对象(例如文件)的访问权限。 安全性增强的 Linux(SELinux): 为对象赋予安全性标签。 以特权模式或者非特权模式运行。 Linux 权能: 为进程赋予 root 用户的部分特权而非全部特权。 AppArmor:使用程序配置来限制个别程序的权能。 Seccomp:过滤进程的系统调用。 allowPrivilegeEscala…

通常都是叫你配置一下 readOnlyRootFilesystem 要知道來這裡複製設定

使用 AppArmor 限制容器对资源的访问
特性状态: Kubernetes v1.4 [beta] AppArmor 是一个 Linux 内核安全模块, 它补充了基于标准 Linux 用户和组的权限,将程序限制在一组有限的资源中。 AppArmor 可以配置为任何应用程序减少潜在的攻击面,并且提供更加深入的防御。 它通过调整配置文件进行配置,以允许特定程序或容器所需的访问, 如 Linux 权能字、网络访问、文件权限等。 每个配置文件都可以在 强制(enforcing) 模式(阻止访问不允许的资源)或 投诉(complain) 模式(仅报告冲突)下运行。 AppArmor 可以通过限制允许容器执行的操作, 和/或通过系统日志提供更好的…

會考叫你到 worker node 上載入配置並設定 pod 使用它

使用 seccomp 限制容器的系统调用
特性状态: Kubernetes v1.19 [stable] Seccomp 代表安全计算(Secure Computing)模式,自 2.6.12 版本以来,一直是 Linux 内核的一个特性。 它可以用来沙箱化进程的权限,限制进程从用户态到内核态的调用。 Kubernetes 能使你自动将加载到节点上的 seccomp 配置文件应用到你的 Pod 和容器。 识别你的工作负载所需要的权限是很困难的。在本篇教程中, 你将了解如何将 seccomp 配置文件加载到本地的 Kubernetes 集群中, 如何将它们应用到 Pod,以及如何开始制作只为容器进程提供必要的权限的配置文件。 教程目标…

同上

准入控制器参考
此页面提供准入控制器(Admission Controllers)的概述。 什么是准入控制插件? 准入控制器 是一段代码,它会在请求通过认证和鉴权之后、对象被持久化之前拦截到达 API 服务器的请求。 准入控制器可以执行验证(Validating) 和/或变更(Mutating) 操作。 变更(mutating)控制器可以根据被其接受的请求更改相关对象;验证(validating)控制器则不行。 准入控制器限制创建、删除、修改对象的请求。 准入控制器也可以阻止自定义动作,例如通过 API 服务器代理连接到 Pod 的请求。 准入控制器不会 (也不能)阻止读取(get、watch 或 list)…

主要考 ImagePolicyWebhook 要會配置

审计
Kubernetes 审计(Auditing) 功能提供了与安全相关的、按时间顺序排列的记录集, 记录每个用户、使用 Kubernetes API 的应用以及控制面自身引发的活动。 审计功能使得集群管理员能够回答以下问题: 发生了什么? 什么时候发生的? 谁触发的? 活动发生在哪个(些)对象上? 在哪观察到的? 它从哪触发的? 活动的后续处理行为是什么? 审计记录最初产生于 kube-apiserver 内部。每个请求在不同执行阶段都会生成审计事件;这些审计事件会根据特定策略被预处理并写入后端。 策略确定要记录的内容和用来存储记录的后端,当前的后端支持日志文件和 webhook。 每个请求都可…

要會設定題目要求你要印的東西

The Falco Project
Cloud Native Runtime Security

會知道去哪裡啟動輸出日誌以及把可以容器的行為抓出來

GitHub - aquasecurity/kube-bench: Checks whether Kubernetes is deployed according to security best practices as defined in the CIS Kubernetes Benchmark
Checks whether Kubernetes is deployed according to security best practices as defined in the CIS Kubernetes Benchmark - GitHub - aquasecurity/kube-bench: Checks whether Kubernetes is deployed accor…

通常是要會修復掃描報告裡 Fail 的錯誤

心得

這次從上課到考完大概花一個月,主要難度是在很多過去沒接觸過的知識,以及底層知識要學習,像是 Linux syscall、tls 等等,而考試時每一題花的時間都比較多,常常都在改 controll plan static pod 設定等它重開,導致時間比較趕,真的建議操作要熟不然題目會寫不完。

最後考完這張證照,就知道上班的時候又有哪些地方可以折騰了,祝大家考試順利。