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