什么是使用Chef-server的“validation密钥”的正确方法?

在我看来,将客户添加到厨师服务器的推荐方式 – 或者我的理解 – 是有缺陷的。

从文档 :

当chef-client运行时,它会检查它是否有一个客户端密钥。 如果客户端密钥不存在,则它尝试“借用”validation客户端的身份以向服务器注册自己。 为了做到这一点,validation客户端的私钥需要被复制到主机上,并放置在/etc/chef/validation.pem中。

所以“validation码”基本上就是超级用户证书,任何拥有它的人都可以访问厨师服务器? 我正在读这个吗?

当然,正确的模式将是客户端生成自己的密钥对,并将公钥提交给厨师服务器。 客户不应该需要访问这个超级用户“validation密钥”。

我怎样才能做到这一点,更安全的方式呢?

这不是那么不安全。 validation密钥只能用于添加节点所需的几个操作。

例如,如果我尝试使用厨师validation器键删除节点:

$ knife node delete -y foo \ -u chef-validator \ -k ~/.chef/chef-validator.pem \ -s http://chef-server:4000 ERROR: You authenticated successfully to http://chef-server:4000 as chef-validator but you are not authorized for this action Response: You are not the correct node (auth_user name: chef-validator, params[:id]: foo), or are not an API administrator (admin: false). 

最佳做法是在节点joinChef服务器之后删除validation.pem文件。

要真正回答这个问题,你可以使用knife client create命令来创build客户端密钥,但这取决于你将这些密钥分发给客户端。

安全密钥分发是一个难题。