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

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

在我看来,向 Chef 服务器添加客户端的推荐方式(或者说我的理解)是有缺陷的。

来自文档

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

那么,“验证密钥”基本上就是超级用户凭证,允许拥有它的任何人完全访问 Chef 服务器?我读得对吗?

正确的模式当然是让客户端生成自己的密钥对,并将公钥提交给 Chef 服务器。客户端永远不需要访问这个超级用户“验证密钥”。

我怎样才能以这种更安全的方式来做到这一点?

答案1

它并没有那么不安全。验证密钥只能用于添加节点所需的几个操作。

例如,如果我尝试使用 Chef 验证器密钥删除一个节点:

$ 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).

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

要真正回答这个问题,您可以使用命令创建客户端密钥knife client create,但将这些密钥分发给客户端则由您决定。

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

相关内容