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