阻止Kubernetes用户创建特权容器

我目前正在尝试研究是否可以阻止 Kubernetes 用户通过 RBAC 创建特权容器。我知道从 Kubernetes 1.1 开始,特权容器默认启用以支持底层 Docker 要求。这很好,我不想阻止每个人都能够运行特权容器。

但是,我想按照最小特权原则进行工作。例如,我想防止用户能够使用诸如kubectl node-shell 之类的东西获得对工作节点的 root 访问权限,最好是通过 RBAC。

这可能吗?

回答

有几种方法可以实现这一点,我想从第一个官方方法开始:Pod Security Policy。

您要实施的策略如下:特权

确定 pod 中的任何容器是否可以启用特权模式。默认情况下,不允许容器访问主机上的任何设备,但“特权”容器可以访问主机上的所有设备。这允许容器几乎与主机上运行的进程具有相同的访问权限。这对于想要使用 linux 功能(例如操作网络堆栈和访问设备)的容器很有用。

Kubernetes 文档提供了一些关于如何与 PSP 交互的示例,但必须声明一个重要的免责声明:必须在 API 服务器上激活PodSecurityPolicy准入控制。

除了官方准入控制器之外,还有其他项目允许执行容器匹配标准的拒绝,以及以特权身份运行:Gatekeeper,Kyverno。

还有其他项目可以解决您的用例,但想分享最后两个,因为它们似乎是最有前途的。

例子

  • 看门人
  • 基维尔诺

以上是阻止Kubernetes用户创建特权容器的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>