【问题标题】:General Discussion: CSI Driver for Kubernetes and Azure Key Vault vs keeping Secrets in Memory一般性讨论:用于 Kubernetes 和 Azure Key Vault 的 CSI 驱动程序与将机密保存在内存中
【发布时间】:2022-01-20 15:56:40
【问题描述】:

如标题中所述,我有一个关于从 Azure KeyVault 安全检索机密的一般性问题。

目前我的大部分秘密都存储在 Kubernetes Secrets 中。由于 Secret 仅采用 base64 编码,因此恶意用户甚至管理员可以使用 lens 等工具读取该密钥。

为了提高我的应用程序的安全性,我想使用 Azure KeyVault 等更安全的存储来保存我的机密、证书等。

目前我正在考虑两个可用版本

  • 使用 CSI 驱动程序
  • 在容器启动时使用 REST 调用从 KV 查询数据并将数据仅保存在内存中(我的最爱)

不知何故,我不相信使用 CSI 驱动程序的方法,原因如下: 如果出于某种原因,某个恶意用户能够连接到我的容器,他/她/它将能够从 CSI 驱动程序生成的“文件”中读取值。
假设一个连接到容器中,这样做应该很简单。 尽管在我的应用程序包中安装了恶意软件包,但仍有可能读取这些数据...

另一方面,在我看来,只在内存中保存秘密似乎更安全一些,因为攻击者必须有机会读取内存(我希望有一些东西可以防止这种行为)并且必须知道在哪里可以找到数据的确切内存位置。

非常感谢任何建议、想法或澄清。

【问题讨论】:

    标签: azure kubernetes azure-aks azure-keyvault csi-driver


    【解决方案1】:

    CSI 与 KeyVault 一起是对您现在运行的解决方案的明显安全升级。我们一直与客户一起使用它。这是一种很好采用的方法,我认为它现在也是 k8s 默认的秘密。

    如果您关注container best practices,您应该很高兴。还有一些很好的步骤,例如容器内没有外壳(从头开始)并将左安全性转移到构建阶段(代码扫描、图像扫描、构建自己的图像)。

    另一个好的步骤是使用像 Falco 这样的运行时安全性。

    您可以通过另外将 AKS API 的访问权限限制为某些 IP 或更好地使用专用集群来添加另一个安全层。这也与 KeyVault 密切相关,将其设为私有并限制对其的访问。

    我认为没有 100% 安全的解决方案,但我提到的所有事情都大大减少了攻击场景。

    【讨论】:

      猜你喜欢
      • 2021-09-07
      • 2017-09-12
      • 2021-02-22
      • 2023-01-26
      • 2020-10-26
      • 1970-01-01
      • 1970-01-01
      • 2021-12-27
      • 2021-03-16
      相关资源
      最近更新 更多