我正在尝试找出如何将我的 Kubernetes 机密隔离到特定服务。
例如,假设我有两个名为 private-key
和 public-key
的秘密,以及两个 Kubernetes Services auth-service 和 gateway-service。
我想向身份验证服务提供private-key
密钥以生成令牌,并向网关服务提供public-key
以验证生成的令牌。所有机密和服务都位于同一命名空间中。
如何将private-key
的访问权限限制为仅身份验证服务?
没有办法做到这一点,这是 Kubernetes 中的设计使然。Kubernetes 中的机密是每个命名空间的,此命名空间中的任何 Pod 都可以挂载它们。因此,实现这一目标的唯一方法是使用单独的命名空间。顺便说一句,不仅机密而且 RBAC 权限都是每个命名空间 - 您不能将用户权限限制为特定对象,而是限制为整个命名空间。
此外,从安全角度来看,您可能需要为用于签署令牌的私钥(如 HSM(考虑更安全的解决方案。有一些云选项,如Azure KeyVault或AWS CloudHSM,可以提供此功能。
最后,这是我们最终构建自己的秘密加密解决方案 - Kamus 的原因之一。Kamus 允许您加密特定服务的机密,只有此服务才能解密它们。这使我们能够拥有更好的机密权限粒度,而 Kubernetes 机密机制没有提供这种权限。