CKS(Certified Kubernetes Security Specialist)是一门以命令行实操为主的安全认证。它不是背题考试,而是要求考生在有限时间内完成集群加固、供应链安全、工作负载防护、审计和事件响应等任务。报考前需要先通过并持有有效的 CKA。
本文按当前常见的六大能力域整理学习路线。考试版本和规则会更新,预约前务必再次查看 Linux Foundation 官方页面和 Candidate Handbook。
## 1. Cluster Setup:集群安全基础
重点能力:
- 使用 NetworkPolicy 控制命名空间内外通信。
- 保护 Ingress、API Server 和节点端口。
- 使用 CIS Benchmark 与 kube-bench 识别配置问题。
- 正确配置 TLS、证书和安全的集群通信。
练习时不要只写一个 allow 规则。建议从 default deny 开始,分别实现同命名空间、指定标签、指定命名空间和 DNS 放行,并用临时 Pod 验证连通性。
## 2. Cluster Hardening:控制面与权限加固
重点能力:
- RBAC 最小权限。
- ServiceAccount 与 token 管理。
- 限制 API Server、kubelet 和管理接口。
- 升级与修复存在风险的组件版本。
高频操作包括:创建 Role/RoleBinding、用 kubectl auth can-i 验证权限、关闭不必要的 token 自动挂载、识别过度授权的 ClusterRoleBinding。
## 3. System Hardening:节点与操作系统
需要理解:
- 减少主机上的服务、软件包和开放端口。
- Linux 用户、sudo、文件权限与进程检查。
- seccomp、AppArmor 等内核安全机制。
- 节点隔离、日志与补丁流程。
练习不要只停留在 kubectl。要熟悉 systemctl、journalctl、进程、端口、文件权限和服务配置的检查方法,同时避免无依据地停止系统关键服务。
## 4. Minimize Microservice Vulnerabilities
这是工作负载安全的核心:
- SecurityContext:runAsNonRoot、allowPrivilegeEscalation、capabilities、readOnlyRootFilesystem。
- Pod Security Standards 与 Pod Security Admission。
- Secret 的最小权限与静态加密。
- RuntimeClass 和安全沙箱。
- mTLS 或服务间身份机制的基本理解。
建议反复练习把一个不安全 Pod 改造成满足 Restricted 基线的配置,并能从 Events 中定位被拒绝的原因。
## 5. Supply Chain Security
供应链题关注镜像从构建到部署的全过程:
- 使用最小化基础镜像,减少软件包和攻击面。
- 固定版本或镜像摘要,不依赖 latest。
- 扫描镜像漏洞并判断修复优先级。
- 控制镜像仓库、构建凭证和部署来源。
- 验证镜像签名与完整性,限制未批准镜像进入集群。
- 保护 CI/CD 中的 token 和 kubeconfig。
练习时要能查看 Dockerfile、镜像配置和 Pod 清单,识别 root 用户、敏感文件进入镜像、危险 capabilities 和不可信仓库。
## 6. Monitoring, Logging and Runtime Security
重点包括:
- 配置和分析 Kubernetes Audit Policy。
- 观察容器进程、文件、网络和系统调用。
- 发现异常行为并采取隔离措施。
- 使用日志还原谁在何时修改了什么。
- 处理被入侵的 Pod 或节点并轮换凭证。
要能在大量日志中筛选 user、verb、resource、namespace、responseStatus 等字段,并理解 Metadata、Request、RequestResponse 的差异。
## 7. 建议的四阶段学习计划
### 第一阶段:补齐 CKA 基础
熟练掌握 Pod、Deployment、DaemonSet、Service、Ingress、DNS、存储、调度、升级和故障排查。CKS 不是从零教授 Kubernetes。
### 第二阶段:逐域做实验
每个安全域至少做 5~10 个可重复实验。每次包含“制造不安全配置—发现问题—修复—验证—回滚”完整闭环。
### 第三阶段:限时综合练习
在隔离实验集群中进行 15~20 分钟的小题训练,逐步组合成两小时模拟。记录每题的用时和失误原因。
### 第四阶段:考试环境习惯
- 先确认当前 context 和节点。
- 修改前备份文件或 YAML。
- 使用官方文档快速查字段。
- 每完成一题立即验证,不要等到最后。
- 对高权重、确定性强的任务优先完成。
## 8. 必须熟练的验证动作
```bash
kubectl auth can-i --list --as=system:serviceaccount:demo:app -n demo
kubectl get networkpolicy -A
kubectl get pod -o yaml
kubectl describe pod POD_NAME
kubectl get events --sort-by=.lastTimestamp
kubectl logs POD_NAME
journalctl -u kubelet
```
命令只是入口,关键是判断输出是否证明任务完成。例如 NetworkPolicy 创建成功并不代表流量真的被限制,必须从允许和禁止两侧分别测试。
## 9. 常见失分原因
- 未切换到题目指定的 context。
- 只修改文件,没有应用或重启对应组件。
- YAML 缩进或字段层级错误。
- 做了配置却没有验证。
- 过度加固导致系统组件或业务不可用。
- 把真实 token、证书私钥或密码留在终端记录中。
- 记住旧版题型,却忽略当前考试版本和官方规则。
## 10. 最后的准备清单
考前确保能够独立完成:RBAC 最小权限、NetworkPolicy、Pod Security、SecurityContext、seccomp、Audit Policy、镜像检查、节点服务与权限检查、异常 Pod 隔离和凭证轮换。所有练习都应在自己的实验环境完成,不要把高权限扫描或破坏性命令直接用于生产集群。
## 参考资料
- https://training.linuxfoundation.org/certification/certified-kubernetes-security-specialist/
- https://kubernetes.io/docs/concepts/security/
- https://kubernetes.io/docs/tasks/debug/debug-cluster/audit/