salt 通信及其安全

salt 通信及其安全

模型架构

  • server-agent通信模型:
    server就是salt master; agent就是salt-minion
    salt也可以作为一个单点服务器管理工具使用,或者运行在无agent的ssh上

  • 一个salt master可以用于管理上千个salt minion

通信模型

salt 通信使用发布-订阅模式。salt minion初始化连接,不用去开其它端口,salt master使用4505和4506,来接收进来的连接。

  • Publisher port 4505 所有的salt minion 在这个port上建立一个永久性链接,用于接收master端的命令。命令通过这个端口异步传输到各个连接,使得n个系统同时执行命令。
  • Request Server port 4506 根据需要,向salt master 发送结果。master和salt之间到这个端口上的连接是1:1,不是同步的。

salt minion认证机制

salt minion第一次启动的时候,在网络上搜索名称为salt的系统,·salt·可以被其它名字取代,找到后,minion初始化一次握手,然后把公钥发送给salt master.

第一次初始化连接之后,salt master端使用·salt-key· 命令接收公钥,或者使用一些自动化机制。salt在master接收了公钥后才提供解码信息需要的安全码。

接收了minion的key之后,master发送自己的key 和一些AES key(用于编码和解码)。返回的AES key是使用salt minion发送的公钥编码,因而也只能由发送它的salt minon来解码。

安全通信

salt master 和salt minon端之间的通信都是基于AES key的。AES编码使用复杂的初始化向量和CBC 块链接算法,与最新的TLS 版本一致。

Rotating Security Keys

salt master 向salt minon发送编码job,需要使用AES key。当master重启,或者使用命令将salt minon删除之后,会生成新的AES key, 此时salt minion需要更新新的AES key。这样,AES key就可以在不中断minion连接的情况下进行。

编码通信渠道

salt master和salt minion之间的直接通信,一个session使用一个唯一的AES key。

用户访问控制

发送命令之前,salt会对执行命令的用户的权限进行检查。
salt 会返回等待执行命令的minion list,从而知道需要等待多久。

posted @ 2016-12-20 16:11  fthjane  阅读(377)  评论(0编辑  收藏  举报