【发布时间】:2020-08-14 13:37:47
【问题描述】:
我的命名空间包含多个秘密和 pod。使用部署规范有选择地将机密作为卷安装在 pod 上。是否可以拒绝将特定机密作为卷安装在某些 pod 中。我已经测试了 RBAC,它可以防止 pod 通过 api 访问机密。考虑到允许将所有机密挂载在同一命名空间中的 pod 中存在安全风险,是否有类似的挂载机密机制。
【问题讨论】:
标签: kubernetes rbac kubernetes-pod
我的命名空间包含多个秘密和 pod。使用部署规范有选择地将机密作为卷安装在 pod 上。是否可以拒绝将特定机密作为卷安装在某些 pod 中。我已经测试了 RBAC,它可以防止 pod 通过 api 访问机密。考虑到允许将所有机密挂载在同一命名空间中的 pod 中存在安全风险,是否有类似的挂载机密机制。
【问题讨论】:
标签: kubernetes rbac kubernetes-pod
没有简单的方法来做到这一点,因为秘密是由 kubelet 挂载的。但是你可以配置一个验证 web-hook 来拦截所有进入 Kubernetes API 服务器的 pod 创建请求。您将在 web-hook 中编写代码来验证并仅在 pod 规范没有任何无效或不需要的机密时才允许创建 pod 请求,否则它会拒绝 pod 创建请求。
另一种选择是让 pod 创建请求由 Open Policy Agent 验证,您可以在其中编写策略来实现类似的验证。
【讨论】:
另一个答案是正确的,但为了完整起见,您可以编写一个准入控制器,根据某种策略检查请求。这就是内置的 NodeRestriction 准入控制器所做的,以帮助限制事情,因此 kubelet 只能访问它应该运行的 pod 的机密。
【讨论】: