walidshaari/Certified-Kubernetes-Security-Specialist

GitHub: walidshaari/Certified-Kubernetes-Security-Specialist

一个专为 CNCF Kubernetes 认证安全专家(CKS)考试设计的系统性备考资源索引和学习指南。

Stars: 2105 | Forks: 558

[![License: CC BY-SA 4.0](https://licensebuttons.net/l/by-sa/4.0/80x15.png)](https://creativecommons.org/licenses/by-sa/4.0/) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) # Kubernetes 认证安全专家 - CKS

在线精选资源,助您准备 Kubernetes 认证安全专家 **CKS** 认证考试。 - 请提出 issue,或提交 pull request 以进行修复、新增内容或更新。 资源主要根据 CNCF/Linux Foundation 考试允许的搜索规则,交叉引用回考试期间[允许的 CKS 网站](#urls-allowed-in-the-extra-single-tab)。视频和其他第三方资源(如博客)将作为可选的补充材料提供,任何考试中不允许使用的第三方材料将在下方的课程部分用 :triangular_flag_on_post: 标记。 请确保您选择了正确版本的 Kubernetes 文档(例如,截至 2023 年 1 月为 v1.26),特别是对于 API 对象和注释,然而对于第三方工具,您可能会在旧版本和博客中找到相关的参考 [例如 Falco 安装](https://github.com/kubernetes/website/issues/24184)。 * 图标/表情符号图例 - :clipboard: 展开查看更多内容 - :confused: 需验证,目前不是最佳资源 - :large_blue_circle: 总体很好的参考,可在考试中使用 - :triangular_flag_on_post: 外部第三方资源,考试期间不可使用 - :pencil: 待办,需要进一步检查的项目(用于未来研究/提交的待办列表) ## 考试简介 为了通过考试,您需要复习并理解的官方考试目标。 * [CNCF 考试课程仓库 ](https://github.com/cncf/curriculum/) - 时长:两 (2) 小时 - 题目数量:15-20 道基于实际操作的动手任务 - 及格分:67% - 认证有效期:两 (2) 年 - 前置条件:有效的 CKA - 费用:375 美元,一 (1) 年的考试资格,包含一年内的一次免费补考。 *Linux Foundation 全年提供多种折扣,例如网购星期一、Kubecon 参会者以及其他特殊假期/活动* ### 备考相关网址: - Kubernetes 文档: - https://kubernetes.io/docs 及其子域名 - https://github.com/kubernetes 及其子域名 - https://kubernetes.io/blog 及其子域名 这包括这些页面的所有可用语言翻译(例如 https://kubernetes.io/zh/docs) - 工具: - [Trivy 文档](https://github.com/aquasecurity/trivy) - [Falco 文档](https://falco.org/docs) - [App Armor 文档](https://gitlab.com/apparmor/apparmor/-/wikis/Documentation) ### 考试界面 根据 Linux Foundation 官方[文档](https://docs.linuxfoundation.org/tc-docs/certification/important-instructions-cks#cks-environment),截至 2022 年 6 月,考试平台发生了变化。这只是考试平台的更换,因此考试题目不会改变,但有一些似乎大家关心的事情,我将它们写下来: - 配置了完成任务所需工具和软件的**远程桌面** - 考生可以在预定日期/时间前 30 分钟开始“参加考试”流程(目前在 PSI ExamsLocal 平台上为 15 分钟) - 自助签到:无需等待监考人员即可上传身份证并扫描环境 - 考试现在将使用 PSI Secure Browser 进行,可以使用最新版本的 Microsoft Edge、Safari、Chrome 或 Firefox 下载 - 不再允许使用多台显示器 - 不再允许使用个人书签(个人浏览器书签,例如指向 YAML 文件的书签链接,将无法在 PSI Secure Browser 中访问) 新的 ExamUI 包含改进的功能,例如: - 一个计时器,显示剩余的实际时间(以分钟为单位),并在剩余 30、15 或 5 分钟时提供提醒 - 内容面板保持不变(显示在 ExamUI 的左侧) ## CKS 仓库主题概述 - [X] [集群设置 - 10%](#cluster-setup---10) - [X] [集群加固 - 15%](#cluster-hardening---15) - [X] [系统加固 - 15%](#system-hardening---15) - [X] [最小化微服务漏洞 - 20%](#minimize-microservice-vulnerabilities---20) - [X] [供应链安全 - 20%](#supply-chain-security---20) - [X] [监控、日志记录和运行时安全 - 20%](#monitoring-logging-and-runtime-security---20) #### 额外有帮助的材料 - [x] [Slack](#slack) - [x] [书籍](#books) - [x] [Youtube 视频](#youtube-videos) - [x] [网络研讨会](#webinars) - [x] [容器和 Kubernetes 安全培训](#containers-and-kubernetes-security-training) - [x] [额外的 Kubernetes 安全资源](generic-kubernetes-containers-security/Kubernetes.md)
### 集群设置 - 10% :large_blue_circle: [保护集群安全](https://kubernetes.io/docs/tasks/administer-cluster/securing-a-cluster/) 1. [使用 Network security policies 限制集群级别的访问](https://kubernetes.io/docs/concepts/services-networking/network-policies/) 2. :triangular_flag_on_post: [使用 CIS 基准审查 Kubernetes 组件的安全配置](https://www.cisecurity.org/benchmark/kubernetes/) (etcd, kubelet, kubedns, kubeapi) - :triangular_flag_on_post: [Kube-bench](https://github.com/aquasecurity/kube-bench) - 通过运行 CIS Kubernetes Benchmark 中记录的检查来检查 Kubernetes 是否部署安全。 3. 正确设置[带有安全控制的 Ingress 对象](https://kubernetes.io/docs/concepts/services-networking/ingress/#tls) 4. [保护节点元数据和端点](https://kubernetes.io/docs/tasks/administer-cluster/securing-a-cluster/#restricting-cloud-metadata-api-access)
使用 Kubernetes network policy 限制 Pod 对云元数据的访问 * 此示例假设为 AWS 云,元数据 IP 地址 169.254.169.254 应被阻止,而所有其他外部地址不被阻止。 apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: deny-only-cloud-metadata-access spec: podSelector: {} policyTypes: - Egress egress: - to: - ipBlock: cidr: 0.0.0.0/0 except: - 169.254.169.254/32
5. [最小化 GUI 元素的使用和访问](https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/#accessing-the-dashboard-ui) 6. [在部署前验证平台二进制文件](https://github.com/kubernetes/kubernetes/releases)
:clipboard: Kubernetes 二进制文件可以通过其摘要 **sha512 hash** 进行验证 - 检查特定版本的 Kubernetes 发布页面 - 检查变更日志以获取[镜像及其摘要](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.19.md#downloads-for-v1191)
### 集群加固 - 15% 1. [限制对 Kubernetes API 的访问](https://kubernetes.io/docs/reference/access-authn-authz/controlling-access/) - [控制对 Kube-apiserver 的匿名请求](https://kubernetes.io/docs/reference/access-authn-authz/authentication/#anonymous-requests) 2. [使用基于角色的访问控制 (RBAC) 最小化暴露](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) * :triangular_flag_on_post: [便捷网站汇集了文章、工具和官方文档](https://rbac.dev/) * :triangular_flag_on_post: [使用 RBAC 模拟简化 Kubernetes 资源访问控制](https://docs.bitnami.com/tutorials/simplify-kubernetes-resource-access-rbac-impersonation/) 3. 谨慎使用服务账户,例如[禁用默认值](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#use-the-default-service-account-to-access-the-api-server),最小化新创建账户的权限
:clipboard: 选择不为服务账户自动挂载 API 凭证 在服务账户范围内选择退出 apiVersion: v1 kind: ServiceAccount metadata: name: build-robot automountServiceAccountToken: false 在 Pod 范围内选择退出 apiVersion: v1 kind: Pod metadata: name: cks-pod spec: serviceAccountName: default automountServiceAccountToken: false
4. [频繁更新 Kubernetes](https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-upgrade/) ### 系统加固 - 15% 1. 最小化主机 OS 占用空间(减少攻击面)
:clipboard: :confused: 减少主机攻击面 * [seccomp 代表安全计算,最初旨在作为安全运行不受信任的计算受限程序的一种手段](https://kubernetes.io/docs/tutorials/clusters/seccomp/) * [可以为任何应用程序配置 AppArmor,以减少其潜在的主机攻击面并提供更深入的防御。](https://kubernetes.io/docs/tutorials/clusters/apparmor/) * [PSA 强制执行](https://kubernetes.io/docs/concepts/security/pod-security-admission/) * 应用主机更新 - 安装所需的最小 OS 指纹 - 识别并处理开放端口 - 移除不必要的包 - 通过权限保护对数据的访问 - [限制允许的 hostpaths](https://kubernetes.io/docs/concepts/policy/pod-security-policy/#volumes-and-file-systems)
2. 最小化 IAM 角色 * :confused: [访问身份验证和授权](https://kubernetes.io/docs/reference/access-authn-authz/authentication/) 3. 最小化对外部网络的访问
:clipboard: :confused: 这是否意味着拒绝外部流量流出集群?!! * 未测试,然而,想法是所有 pod 可以与所有命名空间中的所有 pod 通信,但不能与集群外部通信!!! apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: deny-external-egress spec: podSelector: {} policyTypes: - Egress egress: to: - namespaceSelector: {}
4. 适当使用内核加固工具,例如 AppArmor, seccomp * [AppArmor](https://kubernetes.io/docs/tutorials/clusters/apparmor/) * [Seccomp](https://kubernetes.io/docs/tutorials/clusters/seccomp/) ### 最小化微服务漏洞 - 20% 1. 设置适当的 OS 级安全域,例如使用 PSA, OPA, security contexts - [Open Policy Agent](https://kubernetes.io/blog/2019/08/06/opa-gatekeeper-policy-and-governance-for-kubernetes/) - [Security Contexts](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) 2. [管理 kubernetes secrets](https://kubernetes.io/docs/concepts/configuration/secret/) 3. 在多租户环境中使用[容器运行时](https://kubernetes.io/docs/concepts/containers/runtime-class/)沙箱(例如 [gvisor, kata containers](https://github.com/kubernetes/enhancements/blob/5dcf841b85f49aa8290529f1957ab8bc33f8b855/keps/sig-node/585-runtime-class/README.md#examples)) 4. [通过使用 mTLS 实现 Pod 到 Pod 的加密](https://kubernetes.io/docs/tasks/tls/managing-tls-in-a-cluster/) - [ ] :pencil: 检查 service mesh 是否属于 CKS 考试的一部分 ### 供应链安全 - 20% 1. 最小化基础镜像占用空间
:clipboard: 最小化基础镜像 * 使用 distroless, UBI minimal, Alpine, 或与您的应用相关的 nodejs, python,但是最小化构建。 * 不要包含容器运行时不需要的不必要的软件,例如构建工具和实用程序、故障排除和调试二进制文件。 * :triangular_flag_on_post: [LearnKube: 缩小 Docker 镜像的 3 个简单技巧](https://learnkube.com/blog/smaller-docker-images) * :triangular_flag_on_post: [GKE 构建容器的 7 个最佳实践](https://cloud.google.com/blog/products/gcp/7-best-practices-for-building-containers)
2. 保护您的供应链:[白名单允许的镜像仓库](https://kubernetes.io/blog/2019/03/21/a-guide-to-kubernetes-admission-controllers/#why-do-i-need-admission-controllers),签名并验证镜像 * 使用 [ImagePolicyWebhook admission Controller](https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#imagepolicywebhook) 4. 对用户工作负载使用静态分析(例如 [kubernetes resources](https://kubernetes.io/blog/2018/07/18/11-ways-not-to-get-hacked/#7-statically-analyse-yaml), docker files) 5. [扫描镜像以查找已知漏洞](https://kubernetes.io/blog/2018/07/18/11-ways-not-to-get-hacked/#10-scan-images-and-run-ids) * [Aqua security Trivy]( https://github.com/aquasecurity/trivy) * :triangular_flag_on_post: [Anchore 命令行扫描](https://github.com/anchore/anchore-cli#command-line-examples) ### 监控、日志记录和运行时安全 - 20% 1. 对主机和容器级别的 syscall 进程和文件活动执行行为分析,以检测恶意活动 - [Falco 安装指南](https://falco.org/docs/) - :triangular_flag_on_post: [Sysdig Falco 101](https://learn.sysdig.com/falco-101) - :triangular_flag_on_post: [Falco Helm Chart](https://github.com/falcosecurity/charts/tree/master/falco) - :triangular_flag_on_post: [Falco Kubernetes helmchart](https://github.com/falcosecurity/charts) - :triangular_flag_on_post: [使用 Falco 检测 CVE-2020-8557](https://falco.org/blog/detect-cve-2020-8557/) 2. 检测物理基础设施、应用、网络、数据、用户和工作负载中的威胁 3. 检测攻击的所有阶段,无论其发生在何处以及如何传播
:clipboard: 攻击阶段 - :triangular_flag_on_post: [Kubernetes 攻击矩阵 Microsoft 博客](https://www.microsoft.com/security/blog/2020/04/02/attack-matrix-kubernetes/) - :triangular_flag_on_post: [使用 Falco 的 MITRE 攻击框架](https://sysdig.com/blog/mitre-attck-framework-for-container-runtime-security-with-sysdig-falco/) - :triangular_flag_on_post: [Lightboard 视频: Kubernetes 攻击矩阵 - 缓解 MITRE ATT&CK 技术的 3 个步骤](https://www.youtube.com/watch?v=0fnWu06eQCU) - :triangular_flag_on_post: [CNCF 网络研讨会: 缓解 Kubernetes 攻击](https://www.cncf.io/webinars/mitigating-kubernetes-attacks/)
4. 对环境中的恶意行为者进行深入的分析调查和识别 - [Sysdig 文档](https://docs.sysdig.com/) - [使用 sysdig 监控 Kubernetes](https://kubernetes.io/blog/2015/11/monitoring-kubernetes-with-sysdig/) - :triangular_flag_on_post: [CNCF 网络研讨会: 使用 Falco 开始容器运行时安全]() 5. [确保运行时容器的不可变性](https://kubernetes.io/blog/2018/03/principles-of-container-app-design/) 6. [使用 Audit Logs 监控访问](https://kubernetes.io/docs/tasks/debug-application-cluster/audit/)
## 额外有帮助的材料 ### Slack 1. [Kubernetes 社区 - #cks-exam-prep](https://kubernetes.slack.com) 2. [Kubernauts 社区 - #cks](https://kubernauts-slack-join.herokuapp.com/) 3. [Saiyam's Pathak OpenSource Discord #CKS 频道](https://discord.gg/9PQBYKntPR) ### Twitch 1. [KubeNativeSecurity twitch 流媒体脱口秀和播客](https://www.twitch.tv/kubenativesecurity) ### 书籍 1. [Aqua Security Liz Rice: 免费容器安全书籍](https://info.aquasec.com/container-security-book) 2. [学习 Kubernetes 安全: 在 Kubernetes 部署中安全地编排、扩展和管理您的微服务](https://www.amazon.com/Learn-Kubernetes-Security-orchestrate-microservices/dp/1839216506) 3. [让我们学习 CKS 场景](https://gumroad.com/l/cksbook) ### Youtube 视频 1. [Killer Shell: Kubernetes CKS 完整课程 理论 + 实践 + 浏览器场景](https://youtu.be/d9xfB5qaOfg) 2. [Google/Ian Lewis: Kubernetes 安全最佳实践](https://youtu.be/wqsUfvRyYpw) 3. [**书籍《学习 Kubernetes 安全》的代码实战播放列表](https://www.youtube.com/playlist?list=PLeLcvrwLe1859Rje9gHrD1KEp4y5OXApB) 4. [Kubernetes 安全概念和演示](https://youtu.be/VjlvS-qiz_U) 5. [网络研讨会 | Kubernetes 认证安全专家 (CKS), 2022 年 1 月](https://youtu.be/Qqoe-PbuQcs) 6. [网络研讨会 | 关于 Kubernetes 认证你需要知道的一切, 2024 年 6 月](https://youtu.be/vFvelHoxeP0) ### 容器和 Kubernetes 安全培训 1. [LabEx Kubernetes 学习路径](https://labex.io/learn/kubernetes) - 交互式动手 Kubernetes 实验室,涵盖容器编排、扩展、部署策略和云原生基础。深入安全专业之前的必要基础。 2. [Killer.sh CKS 模拟考试](https://killer.sh/cks) - 使用代码 **walidshaari** 可享 **20%** 折扣。 3. UDEMY Kim Wüstkamp 的 [Kubernetes CKS 2021 完整课程含 killer.sh 模拟器 **(折扣价)**](https://killer.sh/r?d=cks-course) 4. [Linux Foundation Kubernetes 安全基础 LFS 260](https://training.linuxfoundation.org/training/kubernetes-security-essentials-lfs260/) 5. [Mumshad 的 KodeCloud "Kubernetes 认证安全专家" CKS 培训和实验](https://kodekloud.com/p/certified-kubernetes-security-specialist-cks) 6. [Linux Academy/ACloudGuru Kubernetes 安全](https://acloud.guru/learn/7d2c29e7-cdb2-4f44-8744-06332f47040e) 7. Zeal Vora 的 Udemy [ Kubernetes 认证安全专家 2021 ](https://www.udemy.com/course/certified-kubernetes-security-specialist-certification/?referralCode=F38A7E4C09BFEC7E3C58) - 链接包含截至 2021 年 1 月 28 日的折扣 8. [云原生安全防御容器和 kubernetes](https://www.sans.org/event/stay-sharp-blue-team-ops-and-cloud-dec-2020/course/cloud-native-security-defending-containers-kubernetes) 9. [教程: 云原生安全入门 - Liz Rice, Aqua Security & Michael Hausenblas](https://youtu.be/MisS3wSds40) - [动手教程](https://tutorial.kubernetes-security.info/) 10. [K21 academy CKS 分步活动动手实验活动指南](https://k21academy.com/docker-kubernetes/certified-kubernetes-security-specialist-cks-step-by-step-activity-guide-hands-on-lab) 11. [Andrew Martin Control Plane 安全培训](https://control-plane.io/training/) 12. [Linux Foundation CKS 认证提供的 killer.sh 免费考试模拟器](https://training.linuxfoundation.org/announcements/linux-foundation-kubernetes-certifications-now-include-exam-simulator/) 13. [Sysdig Falco 101](https://learn.sysdig.com/falco-101) 14. [Killercoda 浏览器内 CKS 练习场和挑战](https://killercoda.com/killer-shell-cks) - 免费 15. [CKS 自学课程](https://rx-m.com/cks-self-study-course/) - 免费 16. [RX-M CKS 集训营](https://rx-m.com/training/certified-kubernetes-security-specialist-cks-boot-camp/) #### 其他 CKS 相关仓库 1. [Stackrox CKS 学习指南](https://github.com/stackrox/Kubernetes_Security_Specialist_Study_Guide) - 来自 [Stackrox @mfosterrox](https://www.stackrox.com/authors/mfoster/) 的简明且有用的学习指南 2. [Kim 的 CKS 挑战系列](https://github.com/killer-sh/cks-challenge-series) - 也发布在 medium 上 @ https://wuestkamp.medium.com/ 3. [Abdennour](https://github.com/abdennour/certified-kubernetes-security-specialist) 4. [Ibrahim Jelliti](https://github.com/ijelliti/CKSS-Certified-Kubernetes-Security-Specialist) 5. [Viktor Vedmich](https://github.com/vedmichv/CKS-Certified-Kubernetes-Security-Specialist) 6. [Kubernetes 安全检查表和要求](https://github.com/Vinum-Security/kubernetes-security-checklist) 7. [CKS 考试系列](https://github.com/moabukar/CKS-Exercises-Certified-Kubernetes-Security-Specialist.git)
标签:CKS, CKS考试, CKS认证, CNCF, DevSecOps, DNS解析, IT认证, Linux Foundation, RBAC, Web截图, web渗透, 上游代理, 备考资源, 子域名枚举, 子域名突变, 学习指南, 安全, 安全专家, 审计, 容器安全, 开源项目, 提示词模板, 教程, 沙箱容器, 系统安全, 网络策略, 请求拦截, 超时处理