kubernetes现在可谓是当前最火热的技术,想必很多人都已经会基本的kubernetes的使用了,但其安全性如何? kubernetes集群是否存在安全隐患、所使用的镜像是否有漏洞、如何通过黑名单/白名单来限制镜像仓库、如何限制容器进程的系统调用等。安全没有小问题,所以当务之急是亟需解决kubernetes的安全性问题。
kubernetes安全专家认证(Certified Kubernetes Security Specialist)是由云原生基金会(CNCF)推出的继CKA及CKAD之后,业界备受关注的另一个高含金量的K8S认证,主要考察的就是如何排查及解决kubernetes的安全隐患。Linux基金会的内容和社交媒体高级经理Dan Brown表示:“对于处理越来越多使用云技术的安全团队以及需要改善其安全性的云团队来说,这个认证至关重要”。所以CKS值得每一位kubernetes从业者及爱好者去学习并考取证书。
与CKA一样,CKS考试时长为2个小时,题目在15-20题之间,所有题目均为实操题。考试采用远程方式进行,由监考员通过网络摄像头和屏幕共享进行实时监控。报考CKS必须要通过CKA考试,且证书在有效期内,CKS证书有效期为3年。
CKS课程大纲
CKS认证是云原生基金会(CNCF)最新推出的kubernetes认证安全专家(Certified Kubernetes Security Specialist) 。
一、群集设置
1.使用网络安全策略限制群集级别的访问
-
使用网络策略控制流量
-
保护Kubernetes集群安全
-
声明网络策略以控制Pod的通信方式
2.使用CIS基准来检查Kubernetes组件(etcd,kubelet,kubedns,kubeapi)的安全配置
-
了解什么是Center for Internet Security(CIS)基准
-
Kubernetes CIS Benchmark测试的工具:
-
用kube-bench检测master及worker上隐患配置
3.配置ingress的安全设置
-
了解什么是Ingress
-
创建自签名证书替换ingress自带的证书
4.保护节点元数据
-
限制通过API访问元数据
-
通过配置文件设置 Kubelet 参数
5.最大限度地减少对dashboard的使用和访问
-
设置Kubernetes dashboard的安全
6.部署前验证kubernetes二进制文件
-
通过sha512sum验证kubernetes二进制文件
二、群集强化
1. 限制对Kubernetes API的访问
-
了解访问kubernetes api的流程
-
控制对Kubernetes API的访问
2. 使用RBAC最大程度的减少资源暴露
-
了解kubernetes api server的授权模块
-
使用RBAC授权
3. SA的安全设置,例如禁用默认值,最小化对新创建sa的权限
-
了解SA的作用
-
了解默认情况下SA带来的安全隐患及演示
-
如何有效解决sa的权限问题
4. 更新Kubernetes
-
用kubeadm升级集群
三、系统强化
1. 服务器的安全设置
-
去除系统不需要的内核模块
2. 最小化IAM角色
-
了解什么是最低特权原则(POLP)
3. 最小化外部网络访问
-
使用操作系统级防火墙保护主机
-
使resource quota及limit range限制对资源的访问
4. 适当使用内核强化工具,例如AppArmor,seccomp
使用AppArmor限制容器对资源的访问
使用Seccomp限制容器的syscall
四、最小化微服务漏洞
1. 使用PSP,OPA,安全上下文提高安全性
了解并配置Pod安全策略(PSP)
了解什么是 Open Policy Agent(OPA)
OPA Gatekeeper的配置
为Pod或容器配置安全上下文(securityContext)
2. 管理Kubernetes secret
使用secret存储敏感信息
静态加密 Secret 数据
valut、kubeseal
3. 在多租户环境中使用沙箱运行容器(例如gvisor,kata容器)
-
了解为什么要部署沙箱
-
什么是gVisor?安装gvisor
-
使用gVisor运行Pod
-
安装kata,部署kata容器
4. 使用mTLS实施Pod到Pod的加密
-
了解什么是mTLS(mutual TLS)
-
使用mTLS进行流量加密
五、供应链安全
1. 减小image的大小
-
如何创建比较小的镜像
2. 保护供应链:将允许的镜像仓库列入白名单,对镜像进行签名和验证
-
了解准入控制器Admission Controllers
-
了解并配置ImagePolicyWebhook
-
配置kubernetes所使用镜像仓库的白名单及黑名单
-
对镜像进行签名和验证
3.分析文件及镜像安全隐患(例如Kubernetes的yaml文件,Dockerfile)
-
分析dockefile文件的安全隐患
-
分析pod、deployment的yaml文件里的安全隐患
-
用trivy扫描镜像的漏洞
六、监控、审计和runtime
1.分析容器系统调用,以检测恶意进程
-
如何使用Falco检测Kubernetes漏洞
-
用sysdig 对kubernetes进行安全监控
2.配置runtimeClass
3.Kubernetes审计
-
开启Kubernetes审计日志
-
分析Kubernetes审计日志