2

目前我正在做一个项目,我们管理自己的验收和生产系统,但开发和测试系统由外部方管理。我们必须假设他们对系统具有完全的 root 访问权限,因此可以访问 Chef 客户端私钥 (client.pem)。

这使第三方可以访问我们的 Chef 服务器,我们也在其中存储我们的生产凭据。

我尝试将 dev/tst 系统放在不同的 Chef 环境中,并将凭据存储在环境中,而不是数据包中。但是,我发现 Chef 客户端可以更改它自己的环境,因此将客户端切换到生产环境相对容易,从而可以访问这些凭据。

通过使用加密的数据包和一些选择性的密钥分配,我们可以建立一个方案,其中所有开发盒共享开发数据包的密钥,测试数据包的测试盒等。但是,这非常麻烦且容易出错.

有没有办法阻止经过身份验证的 Chef 客户端访问 Chef 服务器上的所有数据?

4

2 回答 2

2

单独的厨师服务器是最简单的解决方案(如果您使用私人厨师,您可以创建多个组织,功能相同)。

话虽如此......在属性中存储未加密的秘密只是一个坏主意。使用加密数据包会有所帮助,但我认为最好的解决方案是使用 chef-vault:

它巧妙地使用厨师客户端的公钥来加密数据并确保只有授权节点才能访问机密(密码、密钥、产品代码等)。

一个相关的问题:

Chef chef-validator.pem 安全性

于 2013-11-15T22:08:41.453 回答
0

不幸的是,只有 Enterprise Chef(商业版)才有可能做到这一点。

于 2013-11-14T16:02:23.467 回答