Kubernetes机密和服务帐户

时间:2018-07-23 14:36:27

标签: kubernetes gcloud google-cloud-kms kubernetes-secrets

过去6个月来我一直在使用kubernetes,我们已经部署了一些服务。

我们即将部署另一个存储加密数据并将密钥放入KMS的服务器。这需要两个服务帐户,一个用于数据,一个用于密钥。

对此数据的访问必须经过审核。由于访问此数据非常敏感,因此我们不愿意将这两个服务帐户都放入名称空间,就好像攻击者以任何方式受到损害一样,攻击者都可以访问数据和密钥而无需对其进行审核。

目前,我们在秘密中拥有一个钥匙,而另一把我们将手动发布到单个吊舱中。

这太可怕了,因为它要求使用此密钥信任单个人,并限制了可伸缩性。幸运的是,这项服务的流量将非常低。

还有其他人遇到过同样的问题吗? 你如何解决的?

欢呼

要求

  • 没有人可以同时访问两个密钥(数据存储和KMS)

2 个答案:

答案 0 :(得分:0)

  

对此数据的访问必须经过审核

如果启用audit logging,则将记录通过此服务帐户完成的每个API调用。如果您从未通过API调用过您的服务,那么这可能对您没有帮助,但是考虑到您正在使用一个服务帐户,听起来就应该如此。

  

目前,我们有一个秘密钥匙,而另一把钥匙将手动发布到单个吊舱中。

您可以考虑为此使用Vault。如果将机密存储在Vault中,则可以使用this之类的东西来自动将环境变量作为环境变量下推到Pod中。这比您的过程要复杂一些,但要安全得多。

您还可以将保险柜与Google Cloud KMS结合使用,有关详细信息,请参见this article

答案 1 :(得分:0)

您所描述的是很常见的-使用Kubernetes机密中的密钥/服务帐户/身份访问外部机密存储。

我对双键概念有些困惑-在秘密和吊舱中都拥有一把钥匙,您会获得什么?如果机密信息被泄露,则etcd信息被泄露,您将遇到更大的问题。我建议您将精力集中在锁定秘密,使用审核日志上,并在密钥泄露时使密钥易于旋转。

一些要考虑的项目:

  • 如果您主要使用Kubernetes,请考虑在Kubernetes secrets中存储(加密)机密。
  • 如果您要像描述的那样在Kubernetes外部集中存储机密,请考虑只使用一个Kubernetes机密-您将获得Kubernetes审核日志以访问机密(请参阅推荐的audit-policy),和Cloud KMS审核日志以使用密钥。