2022 年下半年备考 CKS 考试
2020 年已经剩下最后一个季度了,如果你本年年度目标还没实现,可以尽早安排上日程了哦。
关于 CKS 的准备,我在 7 月份时经过重构终于拿到了,一直还为进行总结,今天就把考试心得和备考经验分享给大家。
考试平台变化
需要特别注意下半年考试最大的变化来自考试平台,现在最大的挑战也是考试平台,因为这种考试模式是最近几年变化最大的,从原来的浏览器远程共享页面的形式,变成了我们本地安装特定安全浏览器,连接远程桌面。官方说法如下:
2022 年 6 月 26 日,Linux 基金会已将 CKA, CKAD 和 CKS 认证考试从现有的 PSI ExamsLocal 平台迁移到新的监考平台 PSI Bridge,预约平台现已重新开放,考试将在 PSI Bridge 监考平台上进行。这个迁移对考试内容没有影响,即考试题目没有变化,但考试界面上会有一些优化。
挑战
安全浏览器能最大,但不能全屏,左边 1/5 - 1/6 的面积是试题内容,右边是一个远程桌面(就是一台 Linux 系统电脑),如果用笔记本的情况下,远程桌面考试操作很不方便,在打开火狐浏览器后,页面内容滑动或者滞后或者不灵活,比较难精准的定位到某一行文字,这对我们想快速找到 yaml 文件模板是最难受的一点。
安全浏览器会禁止一切远程控制软件的运行,如向日葵、TeamViewer 等,严格拒绝了以往通过这种方式作弊或者录制题目的行为。此外,打开安全浏览器也不允许你再多看谷歌等其他浏览器。所以在考试前最好提前 1 小时运行安全浏览器,按照他们的要求关闭或卸载相关软件,准备考试前的检查,免得后边浪费太多时间进而影响心情。
我们的所有操作是去远程桌面里的终端工具,就是自带的 Terminal,但是当时考试时 vim 粘贴相关代码块的时候,格式很乱,不确定现在考试平台是否有优化,我记得他们推荐 vim 的复制粘贴模式,不过当时我没尝试。
特别小心仔细检查网络,中间重考一次时,网络完全卡到不行,选择凌晨 0 点后, 以为是宽带低峰期了,但是一直卡,平台技术支持让我重启,但是每次重启都让我重新校验证件,重启 2-3 次,不能解决问题,最后完全的把考试耽误了。尽量保证网络好的情况下考试,另外很多人也反馈他们的远程桌面在海外连接不稳定或者延迟才出现这种情况,如果真的体验不好,可以和监考官说下重考,因为勉强能做题但是也不一定做完,像我那次完全在浪费时间。
不能使用自己收藏好的书签,因为所有的操作都限定在一个安全浏览器内,查询资料范围不变,但是必须在他们的远程桌面中搜索资料,如果挑战①中描述翻页麻烦,搜索也是一个麻烦事,降低了考试效率。
出现问题怎么办?
有任何疑问都不要怕,可以联系 LF 亚太区的办事处,在 LF 中文网能够找到的。
考前必读
好在亚太区办事处,已经接收到很多的反馈,针对上述的挑战,他们都有在各方面进行优化,并且最近出了很多官方的备考建议。
强烈建议大家以上文章详细的通读一遍,遇到任何问题也不要慌,可以联系 LF 亚太区办事处进行咨询。
备考重点
CKA 中的部分内容
在 CKA 考察过的内容,在 CKS 也有,但是这里就是送分题了:
ServiceAccount
sa 的考察在 CKS 重点主要是控制是否自动挂载 Token,sa 部分参看《使用默认的服务账号访问 API 服务器》
RuntimeClass
资源创建和使用类的操作,不必多说。参看《容器运行时类(Runtime Class)》
集群安装
CIS
使用 CIS 基准检查 Kubernetes 组件(etcd, kubelet, kubedns, kubeapi)的安全配置这里的考察也想对简单,主要是针对测试出来的问题进行修复,并且修复方法也在报告中有给出建议和指导。
但是这里的知识还是应该:
互联网安全中心(CIS,Center for Internet Security),是一个非盈利组织,致力为互联网提供免费的安全防御解决方案。
互联网安全中心为保护代码的最佳实践提供了许多指南和基准测试。正如Michael Cherny 最近描述的那样,CIS 最近发布了Kubernetes的基准,现在我们很高兴地向您介绍我们对这些测试的新开源实现:kube-bench。
https://www.cisecurity.org/benchmark/kubernetes
在进行备考时,针对工具的背景了解一下,考察重点放在检测结果问题的修复上。
微服务漏洞最小化
PSP
PodSecurityPolicy 在 Kubernetes v1.21 中被弃用, 在 Kubernetes v1.25 中被移除。
虽然官方已经明确说明了这一点,但是考试大纲还是写了这项考察,至少上半年的考试中是有出现的。
官方文档最新版本已经移除了相关技术描述,但是我们可以通过切换版本看到技术细节。
或者搜索 PodSecurityPolicy
找到相关信息。
这里的题目稍微繁琐,除了 PodSecurityPolicy 资源的创建,还涉及 ClusterRole 、ClusterRoleBinding、ServiceAccount 的关联才能完成完整的一道题目。
特别留心,在开启 PodSecurityPolicy 功能时,需要在 apiserver 配置中开启准入控制器:
在 --enable-admission-plugins
参数中追加 PodSecurityPolicy
。
监控、日志记录和运行时安全
审计日志
在官方文档中搜索 audit 就能看到相关文档,这里的操作虽然繁琐,但是比较明确,是容易得分的点。不过也强烈建议在模拟环境能多熟练操作一下。
sysdig
sysdig 工具主要监测运行时各种事件,在考试中主要用来定向的过滤指定容器的异常活动,用于排查。这里使用时有一个坑点是,sysdig -p "输出格式" container.id={{containerId}}
,过滤时 containerId 应该从 docker ps 中获得,那段 id 正好能筛选出来。
供应链安全
Dockerfile
这里强调是什么是最佳实现和安全:
一个精心设计的 Dockerfile 将避免对特权容器的需求,暴露不必要的端口、未使用的包、泄露的凭据等,或任何可以用于攻击的东西。提前消除已知风险将有助于减少安全管理和运营开销。
遵循所使用工具的最佳实践、模式和建议将帮助您避免常见错误和陷阱。
以非 root 用户执行程序,(在极少数情况下,容器需要以 root 用户身份执行,因此不要忘记包含将默认有效 UID 更改为非 root 用户的用户指令。)。
使用多阶段构建,只将最终有用的文件拷贝至最终镜像,并能减小镜像文件大小。
永远不要在 Dockerfile 指令中放入任何秘密或凭据(环境变量、参数或硬编码到任何命令中)。
在构建镜像时包含元数据标签是 Dockerfile 的最佳实践。
k8s pod template
这里重点参考《为 Pod 或容器配置安全上下文》,特别 securityContext 字段中的 privileged 、readOnlyRootFilesystem 字段。
这里有一个最佳实践:将容器设计为无状态和不可变的。
能够在容器内存储数据的 Pod 必须被视为非无状态的。 您不必担心数据是否实际上已经存储在容器中。 被配置为任何形式的特权的 Pod 必须被视为可能是非无状态和无不可变的。
比如可以设定 readOnlyRootFilesystem: ture
来设置容器不能写文件;可以设置 privileged: false
来不允许特权 pod 的创建。
ImagePolicyWebhook 配置容器镜像扫描器
《使用准入控制器 - ImagePolicyWebhook》,这里的配置也比较繁琐,应该反复练习。特别注意要在 kube-apiserver.yaml 文件中打开准入控制器,然后重启 kubelet。
trivy 开源镜像扫描器
trivy 是一个很简单工具,使用时常常 指定参数设定漏洞等级,然后本地特定的容器镜像,就能发现对应有问题的 pod。这类题属于送分题。
集群强化
kube-apiserver
这类题主要编辑设置 kube-apiserver.yaml 文件。比如不允许匿名用户访问 apiserver;使用 Node,RBAC 的鉴权模型,可以参考《鉴权模块》。
系统强化
AppArmor
之前整理过一点《系统强化工具 AppArmor》,理解工具的意义,主要考察实施:应用配置,然后 pod 添加注解,应用该项。官方文档也可以参看《保护 Pod》。
练习环境
报考 killer.sh 送模拟环境,但是难度比实际考试大点,有一个难度相当的 kodekloud ,不到一百块钱可以订阅一月的服务,建议反复练习。
总结
假如你对考试还有别的疑问,可以留言,或者和其他同学一起备考。祝大家有一个好成绩。
参考
版权声明: 本文为 InfoQ 作者【baiyutang】的原创文章。
原文链接:【http://xie.infoq.cn/article/74b669a37282cb55dff2ae659】。文章转载请联系作者。
评论