kubernetes安全认证专家(CKS) 考纲
前言
年后花了点时间准备了下CKS的考试,,通过了CKS的认证,记录一下考试的内容
1. 要求
考试模式:线上考试
考试时间:2小时
认证有效期:2年
软件版本:Kubernetes v1.20
系统:Ubuntu 18.4
有效期:考试资格自购买之日起12个月内有效
重考政策:可接受1次重考
经验水平:中级
考试报名:https://training.linuxfoundation.cn/certificates/16
2. 考点内容-CKS 课程(翻译)
10% - Cluster Setup集群设置
- Use Network security policies to restrict cluster level access(使用网络安全策略限制群集级别的访问)
- Use CIS benchmark to review the security configuration of Kubernetes components (etcd, kubelet, kubedns, kubeapi)(使用CIS基准来检查Kubernetes组件(etcd,kubelet,kubedns,kubeapi)的安全配置)
- Properly set up Ingress objects with security control(通过安全控制正确设置Ingress对象)
- Protect node metadata and endpoints(保护节点元数据和端点)
- Minimize use of, and access to, GUI elements(最大限度地减少对GUI元素的使用和访问)
- Verify platform binaries before deploying(部署前验证平台二进制文件)
15% - Cluster Hardening集群强化
Restrict access to Kubernetes API(限制对Kubernetes API的访问)
Use Role Based Access Controls to minimize exposure(使用基于角色的访问控制来最大程度地减少暴露)
Exercise caution in using service accounts e.g. disable defaults, minimize permissions on newly created ones(使用服务帐户时请格外小心,例如 禁用默认值,最小化对新创建的权限)
Update Kubernetes frequently(经常更新Kubernetes)
15% - System Hardening系统强化
Minimize host OS footprint (reduce attack surface)(最小化主机操作系统的占用空间(减少攻击面))
Minimize IAM roles(最小化IAM角色)
Minimize external access to the network(最小化对网络的外部访问)
Appropriately use kernel hardening tools such as AppArmor, seccomp(适当使用内核强化工具,例如AppArmor,seccomp)
20% - Minimize Microservice Vulnerabilities最小化微服务漏洞
- Setup appropriate OS level security domains e.g. using PSP, OPA, security contexts(设置适当的操作系统级别的安全域,例如 使用PSP,OPA,安全上下文)
- Manage kubernetes secrets(管理kubernetes的secret)
- Use container runtime sandboxes in multi-tenant environments (e.g. gvisor, kata containers) (在多租户环境中使用容器运行时沙箱(例如gvisor,kata容器))
- Implement pod to pod encryption by use of mTLS(通过使用mTLS实现Pod到Pod的加密)
20% - Supply Chain Security供应链安全
- Minimize base image footprint(最大限度地减少基础镜像占用空间)
- Secure your supply chain: whitelist allowed image registries, sign and validate images(保护您的供应链:将允许的图像注册表列入白名单,对图像进行签名和验证)
- Use static analysis of user workloads (e.g. kubernetes resources, docker files)(使用静态分析用户工作负载(例如kubernetes资源,docker文件))
- Scan images for known vulnerabilities(扫描镜像中的已知漏洞)
20% - Monitoring, Logging and Runtime Security监视,记录和运行时安全
- Perform behavioral analytics of syscall process and file activities at the host and container level to detect malicious activities(在主机和容器级别执行系统调用过程和文件活动的行为分析,以检测恶意活动)
- Detect threats within physical infrastructure, apps, networks, data, users and workloads(检测物理基础架构,应用程序,网络,数据,用户和工作负载中的威胁)
- Detect all phases of attack regardless where it occurs and how it spreads(检测攻击的所有阶段,无论攻击发生在何处以及如何扩散)
- Perform deep analytical investigation and identification of bad actors within environment • Ensure immutability of containers at runtime(对环境中的不良行为进行深入的分析调查和识别•确保运行时容器不变)
- Use Audit Logs to monitor access(使用审核日志来监视访问)
3. 需要掌握内容
3.1 群集设置 10%
1.使用网络安全策略限制群集级别的访问
2.使用CIS基准来检查Kubernetes组件(etcd,kubelet,kubedns,kubeapi)的安全配置
- [了解什么是Center for Internet Security(CIS)基准](https://docs.microsoft.com/en-us/compliance/regulatory/offering-CIS-Benchmark#:~:text=CIS benchmarks are configuration baselines,organizations improve their cyberdefense capabilities.)
- Kubernetes CIS Benchmark测试的工具:kube-bench的安装
- etcd和kubelet的CIS基准
- 用kube-bench检测master及worker上隐患配置
3.配置ingress的安全设置
- 了解什么是Ingress
- 什么是输入控制器(Ingress Controllers?)?
- 在Minikube入口控制器上设置入口
- 创建自签名证书替换ingress自带的证书
4.保护节点元数据
- 限制通过API访问元数据
- 在Kubernetes中设置安全端点
- 保护集群元数据(GKE)
- 通过配置文件设置 Kubelet 参数
5.最大限度地减少对dashboard的使用和访问
6.部署前验证kubernetes二进制文件
3.2 群集强化 15%
1.限制对Kubernetes API的访问
- 加强集群的安全性
- 了解访问kubernetes api的流程
- 控制对Kubernetes API的访问
2.使用RBAC最大程度的减少资源暴露
3.SA的安全设置,例如禁用默认值,最小化对新创建sa的权限
- Kubernetes访问控制:探索服务帐户SA
- Kubernetes:创建服务帐户和Kubeconfigs
- 置Pods的服务帐号SA
- 在Kubernetes中部署时禁用默认服务帐户
- Kubernetes不应该挂载默认的服务帐户
- 通过消除危险的权限来保护Kubernetes集群
- 了解默认情况下SA带来的安全隐患及演示
- 如何有效解决sa的权限问题
4.更新Kubernetes
3.3 系统强化 15%
1.服务器的安全设置
- [最小化主机操作系统占用空间(减少攻击面)](https://blog.sonatype.com/kubesecops-kubernetes-security-practices-you-should-follow#:~:text=Reduce Kubernetes Attack Surfaces)
- 去除系统不需要的内核模块
2.最小化IAM角色
3.最小化外部网络访问
- 使用操作系统级防火墙保护主机
- 使用安全组来保护网络(Azure)
- 亚马逊重视安全组的考虑
- 使resourcequota及limitrange限制对资源的访问
4.适当使用内核强化工具,例如AppArmor,seccomp
3.4 最小化微服务漏洞 20%
1.使用PSP,OPA,安全上下文提高安全性
2.管理Kubernetes secret
3.在多租户环境中使用沙箱运行容器(例如gvisor,kata容器)
- 了解为什么要部署沙箱
- 什么是gVisor?安装gvisor
- 使用谷歌的gVisor实现安全容器
- 使用gVisor运行Pod
- Kata容器和Kubernetes:它们如何组合在一起?
- 如何使用Kata容器与Kubernetes?
4.使用mTLS实施Pod到Pod的加密
3.5 供应链安全 20%
1.减小image的大小
2.保护供应链:将允许的镜像仓库列入白名单,对镜像进行签名和验证
- 了解准入控制器Admission Controllers
- 如何拒绝docker镜像仓库(黑名单)在Kubernetes?
- 了解并配置ImagePolicyWebhook,确保只运行来自批准来源的映像
- 配置kubernetes所使用镜像仓库的白名单及黑名单
- 对镜像进行签名和验证
3.分析文件及镜像安全隐患(例如Kubernetes的yaml文件,Dockerfile)
4.扫描图像,找出已知的漏洞
3.6 监控、审计和runtime 20%
1.分析容器系统调用,以检测恶意进程
2.检测物理基础设施、应用程序、网络、数据、用户和工作负载中的威胁
3.检测攻击的所有阶段,无论它发生在哪里,如何传播
- 在威胁堆栈中调查Kubernetes的攻击场景
- Kubernetes攻击剖析——不可信的Docker镜像是如何让我们失望的
4.对环境中的不良行为进行深入的分析调查和识别
Kubernetes安全101:风险和最佳实践
5.确保容器在运行时的不变性 - 利用Kubernetes确保容器是不可变的
- 为什么我们要使用不可变的Docker图像?
- 有了不可变的基础设施,您的系统可以起死回生
6.Kubernetes审计
4. 考试资料
相关阅读:
5. 考试期间允许的资源
考试期间,考生可以:
查看命令行终端中显示的考试内容说明。
查看发行版安装的文档(即/ usr / share及其子目录)
使用他们的Chrome或Chromium浏览器打开另一个标签以访问
Kubernetes文档:
- https://kubernetes.io/docs/及其子域名
- https://github.com/kubernetes/及其子域名
- https://kubernetes.io/blog/及其子域名
这包括这些页面的所有可用语言翻译(例如https://kubernetes.io/zh/docs/)
工具:
- Trivy文档https://github.com/aquasecurity/trivy
- Sysdig文档https://docs.sysdig.com/
- 法尔科文档https://falco.org/docs/
这包括这些页面的所有可用语言翻译(例如https://falco.org/zh/docs/)
App Armor:
上面允许的站点可能包含指向外部站点的链接。考生有责任不单击任何链接导航到不允许的域
可能有用的优惠码
SCOFFER15