我最近在这里的一个帖子的盐柱中看到了以下结构
/srv/pillar/ssh.sls:
ssh_certs:
{% if grains['fqdn'] == 'server1.example.com' %}
dsa: |
-----BEGIN DSA PRIVATE KEY-----
{# key text goes here with consistant indentation... #}
-----END DSA PRIVATE KEY-----
ecdsa: |
-----BEGIN ECDSA PRIVATE KEY-----
{# key text goes here with consistant indentation... #}
-----END ECDSA PRIVATE KEY-----
rsa: |
-----BEGIN RSA PRIVATE KEY-----
{# key text goes here with consistant indentation... #}
-----END RSA PRIVATE KEY-----
{% elif grains['fqdn'] == 'server2.example.com' %}
# same as above but with different key texts of course....
{% endif %}
Run Code Online (Sandbox Code Playgroud)
然后,这个支柱通过*glob 分发到顶层文件中,到达集群中的所有节点.
由于我们的未评估模板包含整个集群的所有私钥,这有多安全?
我相信仆从们会评估他们自己的盐配方.如果他们也评估自己的支柱,那么他们将临时获得集群中每个节点的私钥!
如果我以某种方式获得访问权限server2.example.com,我是否能够挖掘未编译的模板?
提出这个问题的另一种方法是:支柱模板评估在哪里进行?
支柱数据在Salt Master上编译,Pillar字典直接加密发送给每个Salt Minion.因此,每个小兵都没有机会获得整个支柱文件.
话虽如此,Minion的谷物可能会被篡改.你唯一绝对的是仆从的身份.在不导致minion的身份验证被拒绝的情况下,不能篡改minion ID.