kubernetes 安全

虚拟化容器

  • 为了更安全地隔离容器,避免容器进程逃逸,权限升级等安全问题

  • 现有的实现有Kata ContainersgVisor

    • Kata Containers 使用传统的虚拟化技术,通过虚拟硬件模拟出了一台“小虚拟机”,然后在这个小虚拟机里安装了一个裁剪后的 Linux 内核来实现强隔离
      • 为一个Pod对应启动一个轻量化虚拟机,Pod中的容器,就是运行在这个轻量级虚拟机里的进程
      • 也可以规避对宿主机内核版本的依赖
        在这里插入图片描述
    • gVisor 给容器进程配置一个用 Go 语言实现的、运行在用户态的、极小的“独立内核”, 通过这个模拟的内核来代替容器进程向宿主机发起有限的、可控的系统调用
      • 因为是基于用户态内核的,无法真正做到与宿主机内核不一致的请求响应,因此满足不了对高版本内核请求的需求
        在这里插入图片描述
  • 两种容器实现的本质,都是给进程分配了一个独立的操作系统内核,从而避免了让容器共享宿主机的内核

    • 这样,容器进程能够看到的攻击面,就从整个宿主机内核变成了一个极小的、独立的、以容器为单位的内核,从而有效解决了容器进程发生“逃逸”或者夺取整个宿主机的控制权的问题

集群身份验证

  • Kubernetes各组件之间的通信都使用了TLS加密传输
  • Kubernetes中的用户有两种类型:service accountsnormal users
    • service accounts 由 Kubernetes管理,它是Pod中的进程用于访问API服务的account,为Pod中的进程提供了一种身份标识
    • normal users 是由外部系统管理,在Kubernetes中并没有对应的 user 对象,它为人类用户使用kubectl之类的工具访问API服务时提供身份标识
  • Kubernetes支持多种方式的身份验证:客户端证书,Password, Plain Tokens,JWT,HTTP basic auth等
  • 建私有Kubernetes集群时,一般是自建root CA
    • 因为参与认证的所有集群节点,包括远程访问集群的客户端桌面都完全由自己控制,可以安全的将根证书分发到所有节点
  • Kubernetes中的组件比较多,所以需要的证书种类会非常多, 都放在了/etc/kubernetes/目录下

参考资料

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章