K8s risks
前言¶
这里学习下 k8s 中所面临的一些风险,主要有 5 个部分:
1、容器基础设施存在的风险
2、组件接口存在的风险
3、集群网络存在的风险
4、访问控制机制存在的风险
5、自身的漏洞
其中容器基础设施存在的风险和之前分享的基本一致,这里主要看剩下的四种。
组件接口存在的风险¶
API Server¶
API Server 默认服务端口为 8080 和 6443,8080 端口提供 HTTP 服务,没有认证与授权机制,而 6443 提供 HTTP 服务,支持认证和授权服务。
默认情况下 8080 端口不启动,但如果用户开启了该服务,就会造成 API Server 的未授权访问,从而控制整个集群。
Note
在较新版本的k8s中,官方已经移除了8080端口
Kubelet¶
与 API Server 类似,Kubelet 也运行着 API 服务,默认服务端口为 10250 和 10248
Kubelet 存在的风险主要也是未授权访问,如果 Kubelet 存在未授权访问,就可以控制所在节点的权限。
Dashboard¶
Dashboard 默认端口为 8001,从 1.10.1 版本起,Dashboard 默认禁用了跳过按钮,但如果用户为了方便或者其他原因,开启了相关功能,就会导致 Dashboard 的未授权访问。
etcd¶
etcd 默认监听 2379、2380 端口,前者用于客户端连接,后者用于多个 etcd 实例之间的通信。
默认情况下,etcd 提供的两个端口都需要相应的证书才能访问,但如果 RT 窃取了证书,或者用户将 etcd 设置了允许匿名访问,那么 RT 就可以直接访问 etcd 并窃取数据。
由于 Kubernetes 集群内部的各种资源及其状态都存在 etcd 中,因此如果可以读取 etcd 的数据,就可能获得高权限,从而控制集群。
集群网络存在的风险¶
Pod 是由一个或多个容器构成的集合,在没有其他网络隔离策略和 Pod 安全策略的默认情况下,由于 Pod 与 Pod 之间可以联通,且 Pod 内的 root 用户具有 CAP_NET_RAW 权限(即允许使用原始套接字的权限),因此集群内部可能会发生内网横向的风险。
访问控制机制存在的风险¶
Kubernetes 中的访问控制机制主要由认证机制、授权机制和准入机制三个部分组成。
如果访问控制比较宽松或混乱或者允许 Kubernetes 的未授权访问,RT 可能借此直接获得集群管理员权限。
无法根治的软件漏洞¶
Kubernetes 自身也被爆出许多安全漏洞,这类自然也属于 Kubernetes 所面临的的风险。
参考资料:
《云原生安全-攻防实践与体系构建》
https://www.jianshu.com/p/a7f6c4f420fa
https://kubernetes.io/zh/docs/concepts/overview/what-is-kubernetes/
https://www.kubernetes.org.cn/kubernetes%E8%AE%BE%E8%AE%A1%E6%9E%B6%E6%9E%84
攻击面¶
云原生技术是一种基于微服务和容器技术的架构,它将应用程序和基础设施整合到一个云环境中。但是,云原生技术也存在一些攻击面。下面是一些常见的云原生攻击面:

1. Pod开放到互联网
2. Pod对其它Pod或服务开放
3. 从Pod向Node逃逸
4. 从Pod攻击Master Node组件
5. 从Pod攻击API Server
6. 从API Server攻击其它Pods/Nodes
7. 从K8s集群攻击云内的其它服务