考虑两种方法来将选定的支柱键分配给特定的仆从。
1.使用爪牙id的顶级文件匹配器
在这种情况下,顶级文件必须知道支柱sls文件分配给他们的小黄人。
/srv/pillar/top.sls
:
base:
'minion_1':
- key1
'minion_2':
- key2
/srv/pillar/key1.sls
:
key1: value1
/srv/pillar/key2.sls
:
key2: value2
2.金贾有条件使用if/else和爪牙id
在这种情况下,top file需要什么都不知道。
相反,支柱sls文件自己知道哪个仆从可以读取它们。
/srv/pillar/top.sls
:
base:
'*':
- key1
- key2
/srv/pillar/key1.sls
:
{% if grains['id'] == 'minion_1' %}
key1: value1
{% endif %}
/srv/pillar/key2.sls
:
{% if grains['id'] == 'minion_2' %}
key2: value2
{% endif %}
问题
使用第一种或第二种方法是否有任何安全偏好
就我个人而言,我更喜欢第二种方法——它更灵活(允许jinja模板中的任何逻辑)。
在写这篇文章的同时,我还澄清了Salt设计的一个重要方面——无论在哪种情况下,支柱sls文件都只能在SaltMaster上编译(见答案)。因此,在这两种情况下,小黄人无论如何都不会获得所有支柱数据(以过滤、选择和呈现结果支柱,用于自己的状态渲染)。将其与状态进行比较——AFAIK,它们是在minon一侧呈现的。
IMHO从安全角度来看,这两种方法看起来几乎相同。
正如你所说,每个盐仆从只看到盐主允许它看到的支柱数据。
第一种方法看起来更简单,谷物由小黄人提供-所以如果你有一个被黑客攻击的小兵,它可能会看到它不应该看到的东西。。。。。。
更大的安全风险是在你的柱子上挂着未加密的密钥等(尤其是当你用git或其他东西共享它们时)。你看到这个了吗?https://docs.saltstack.com/en/latest/ref/renderers/all/salt.renderers.gpg.html,gpg加密为您的支柱。
已经使用了大约4个月,没有任何问题。
您不应该使用第二种方法。
记住,谷物是不安全的,任何仆从都可以表现为拥有任何谷物。评估金贾的粮食,特别是确定对支柱数据的访问,有效地绕过了Salt的安全模型。