• 1、组件接口存在的风险
    • #API Server">#API Server
    • #Kubelet">#Kubelet
    • #Dashboard">#Dashboard
    • #etcd">#etcd
  • #2、集群网络存在的风险">#2、集群网络存在的风险
  • #3、访问控制机制存在的风险">#3、访问控制机制存在的风险
  • #4、无法根治的软件漏洞">#4、无法根治的软件漏洞

    1、组件接口存在的风险

    #API Server

    API Server 默认服务端口为 8080 和 6443,8080 端口提供 HTTP 服务,没有认证与授权机制,而 6443 提供 HTTP 服务,支持认证和授权服务。

    默认情况下 8080 端口不启动,但如果用户开启了该服务,就会造成 API Server 的未授权访问,从而控制整个集群。

    #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 的数据,就可能获得高权限,从而控制集群。

    #2、集群网络存在的风险

    Pod 是由一个或多个容器构成的集合,在没有其他网络隔离策略和 Pod 安全策略的默认情况下,由于 Pod 与 Pod 之间可以联通,且 Pod 内的 root 用户具有 CAP_NET_RAW 权限(即允许使用原始套接字的权限),因此集群内部可能会发生内网横向的风险。

    #3、访问控制机制存在的风险

    Kubernetes 中的访问控制机制主要由认证机制、授权机制和准入机制三个部分组成。

    如果访问控制比较宽松或混乱或者允许 Kubernetes 的未授权访问,RT 可能借此直接获得集群管理员权限。

    #4、无法根治的软件漏洞

    Kubernetes 自身也被爆出许多安全漏洞,这类自然也属于 Kubernetes 所面临的的风险。