在同一命名空间中的服务层隔离机密



我正在尝试找出如何将我的 Kubernetes 机密隔离到特定服务。

例如,假设我有两个名为 private-keypublic-key 的秘密,以及两个 Kubernetes Services auth-servicegateway-service

我想向身份验证服务提供private-key密钥以生成令牌,并向网关服务提供public-key以验证生成的令牌。所有机密和服务都位于同一命名空间中。

如何将private-key的访问权限限制为仅身份验证服务

没有办法做到这一点,这是 Kubernetes 中的设计使然。Kubernetes 中的机密是每个命名空间的,此命名空间中的任何 Pod 都可以挂载它们。因此,实现这一目标的唯一方法是使用单独的命名空间。顺便说一句,不仅机密而且 RBAC 权限都是每个命名空间 - 您不能将用户权限限制为特定对象,而是限制为整个命名空间。

此外,从安全角度来看,您可能需要为用于签署令牌的私钥(如 HSM(考虑更安全的解决方案。有一些云选项,如Azure KeyVault或AWS CloudHSM,可以提供此功能。

最后,这是我们最终构建自己的秘密加密解决方案 - Kamus 的原因之一。Kamus 允许您加密特定服务的机密,只有此服务才能解密它们。这使我们能够拥有更好的机密权限粒度,而 Kubernetes 机密机制没有提供这种权限。

最新更新