月初的时候参加了CKS考试,闲暇之余写点笔记。
感觉下来,CKS考试比CKA考试难的多。时间也是很紧张。CKS目前考试的版本也是v1.21,虽然kubernetes已经1.22了。
CKS考试中会有:
RBAC的设置,控制用户的操作资源权限。
会有扫描image的trivy工具,扫描image中是否含有不安全的点。(原理也是检索CVE网站里面是否含有被爆出漏洞的image版本号)。
检索master和node上k8s上的各项配置是否合理,安全(kube-bench)。
falco和sysdig,要来查看输出系统的指标(包含不限于时间时间,名称,程序信息等)
网络隔离设置。networkpolicy--限制pod service的ingress和egress的访问。
audit policy,配置需要audit的资源类型和模式,方便用于troubleshooting。
ImagePolicyWebhook,https://kubernetes.io/zh/docs/reference/access-authn-authz/admission-controllers/#imagepolicywebhook。主要用来限制集群中拉取的image的安全。
-
获取secret的几种方式。通过api获取secret。 curl https://kubernetes.default/api/v1/namespaces/restricted/secrets -H "Authorization: Bearer $(cat /run/secrets/kubernetes.io/serviceaccount/token)" -k token可以在docker inspect里面找到路径,然后进入容器内获取,这种方式可以拿到指定namespace(restricted)所有的secrets。https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#-strong-read-operations-secret-v1-core-strong-
etcdectl 的方式获取secret。ETCDCTL_API=3 etcdctl get /registry/secrets/default/secret1 [...] | hexdump -Chttps://kubernetes.io/docs/tasks/administer-cluster/encrypt-data/#verifying-that-data-is-encrypted
当然,还有一种可能,如果RBAC都限制了,用户无法查看。可以查看当前image运行在哪个node上,然后通过docker inspect的方式查看关于passwd或者serviceAccount或者secret的路径。 apparmor。AppArmor是一个高效和易于使用的Linux系统安全应用程序。AppArmor对操作系统和应用程序所受到的威胁进行从内到外的保护,甚至是未被发现的0day漏洞和未知的应用程序漏洞所导致的攻击。
只读系统的文件目录。securityContext:ReadOnlyRootFilesystem
https://kubernetes.io/docs/concepts/policy/pod-security-policy/#volumes-and-file-systems编写Dockfile和yaml的最佳方式。Dockerfile里面,减少层级,减少密钥暴露。可参考上一篇[Dockerfile 的最佳写法]https://www.jianshu.com/p/91deab07f70e
dashboard的tls方式。
容器运行时,runtimeClass,为了支持多个容器运行时,比如docker,containerd。
总之,学习完感觉还是挺有意思的,特别是设置secret那块,比较好玩。