如何防止pod在同一命名空间中装载机密



我的命名空间包含多个机密和pod。使用部署规范将机密作为卷选择性地安装在pod上。是否可以拒绝特定机密作为卷安装在某些pod中。我已经测试了RBAC,它可以防止pod通过api访问机密。考虑到允许所有机密安装在同一命名空间中的pod中存在安全风险,是否有类似的机制来安装机密。

没有简单的方法可以做到这一点,因为秘密是由kubelet挂载的。但您可以配置一个验证的web-hook来拦截所有到达Kubernetes API服务器的pod创建请求。您将在web挂钩中编写代码进行验证,并且只有在pod规范没有任何无效或不需要的秘密的情况下才允许pod创建请求,否则它将拒绝pod创建请求。

另一种选择是让Open Policy Agent验证pod创建请求,在那里您可以编写策略来实现类似的验证。

另一个答案是正确的,但为了完整性,您可以编写一个准入控制器,根据某种策略检查请求。这就是内置的NodeRestriction准入控制器所做的,以帮助限制事情,使kubelet只能访问它应该运行的pod的机密。

最新更新