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

时间:2019-04-02 16:24:04

标签: kubernetes minikube kubernetes-secrets

我试图找出如何将我的Kubernetes机密隔离到特定服务的地方。

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

我想向 auth-service 提供private-key机密以生成令牌,并向 gateway-service 提供public-key以验证生成的令牌。所有机密和服务都在同一个命名空间中。

如何将private-key的访问权限限制为仅 auth-service

1 个答案:

答案 0 :(得分:1)

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

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

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