1

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

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

必须审核对此的数据访问。由于对这些数据的访问非常敏感,我们不愿意将这两个服务帐户都放在名称空间中,就好像以任何方式受到损害一样,攻击者可以在未经审计的情况下访问数据和密钥。

现在我们有一个密钥,另一个我们将手动发布到单个 pod。

这很可怕,因为它需要一个人信任这个密钥,并且限制了可扩展性。幸运的是,这项服务的数量非常少。

有没有其他人遇到过同样的问题?你是怎么解决的?

干杯

要求

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

2 回答 2

0

必须审核对此的数据访问

如果您启用审计日志记录,则通过此服务帐户完成的每个 API 调用都将被记录。如果您的服务从未通过 API 调用,这可能对您没有帮助,但考虑到您有一个正在使用的服务帐户,听起来好像是这样。

现在我们有一个密钥,另一个我们将手动发布到单个 pod。

您可以考虑为此使用Vault 。如果您将秘密存储在保险库中,您可以使用类似的方法将环境变量作为环境变量自动推送到 pod 中。这比您的过程涉及更多一点,但要安全得多。

您还可以在本文中详细介绍的 Google Cloud KMS 旁边使用 Vault

于 2018-07-23T15:18:00.707 回答
0

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

我对双键概念有点困惑 - 通过在秘密和 pod 中都拥有一个密钥,您可以获得什么?如果机密被泄露,那么 etcd 就会被泄露,你就会遇到更大的问题。我建议您改为专注于锁定机密、使用审计日志以及使密钥易于轮换以防万一。

需要考虑的几个项目:

  • 如果您主要使用 Kubernetes,请考虑在Kubernetes secrets中存储(加密)机密。
  • 如果您在 Kubernetes 外部集中存储机密,就像您所描述的那样,请考虑仅使用单个 Kubernetes 机密 - 您将获得 Kubernetes 审核日志以访问机密(请参阅推荐的审核策略)和 Cloud KMS 审核日志用于密钥。
于 2018-07-23T15:18:37.187 回答