2

我正在尝试使用Helm charts在 Kubernetes 集群中安装应用程序。有人可以建议管理秘密的更好解决方案吗?使用helm secrets将是一个好主意还是Hashicorp Vault

4

1 回答 1

10

Vault 在技术上很棒,但它可能是一个管理负担。无论“秘密”是什么,您都可以获得强有力的保护;您可以通过生成一次性密码来避免共享诸如中央数据库密码之类的神奇秘密;如果你需要签名或加密的东西,你可以让 Vault 为你做这件事,避免自己知道加密的秘密。最大的缺点是它是一个单独的服务来管理,从中获取秘密并不是完全无缝的,如果你需要重新启动服务器,你偶尔需要一个管理员来解封它。

Kubernetes 机密实际上只是名称不同的 ConfigMap。使用默认设置,操作员很容易获取 Secret 的值(kubectl get secret ... -o yaml然后对字符串进行 base64 解码),因此它们实际上并不是那个秘密。如果您有一个有趣的命名空间设置,您通常无法访问不同命名空间中的 Secret,这可能意味着被迫大量复制 Secret。只使用像管理 Secrets 这样的原生工具kubectl也有点笨拙。

通过 Helm 推送凭据可能是最无缝的路径——从 Helm 值转换为 Secret 对象以推送到容器中非常容易,并且非常容易从 CI 系统之类的地方推送值——但也是最不安全的. 除了能够转储值之外,kubectl您还可以helm get values在 Helm 版本上找出值。

所以这是一个问题,即真正保密有多重要,以及您要投入多少精力。如果您想要无缝集成,并且可以将集群的访问权限限制为授权操作员并有效使用 RBAC,那么 Helm 值可能会很好足够的。如果您可以投资于技术上最好的也是最复杂的解决方案,并且您想要它的一些高级功能,那么 Vault 就可以很好地工作。维护一个简单的 Kubernetes 机密是一种中间立场,它比使用 Helm 更安全一些,但几乎没有那么易于管理。

于 2018-12-05T21:00:11.957 回答