考虑两种方法将选定的支柱键分配给特定的minion .
1.使用minion id的顶级文件匹配器 .
在这种情况下,顶级文件必须知道柱状文件到其下属的分配 .
/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和minion id的Jinja条件 .
在这种情况下,顶级文件需要一无所知 .
相反,柱子文件知道自己哪个仆从可以阅读它们 .
/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 %}
问题
Are there any security preferences using the 1st or the 2nd approach?
就个人而言,我更喜欢第二种方法 - 它更灵活(允许jinja模板中的任何逻辑) .
在写这篇文章时,我还澄清了一个重要的Salt设计方面 - 在任何一种情况下,只有Salt master编译了支柱sls文件(参见this answer) . 因此,在这两种情况下,总是永远不会给予所有支柱数据(过滤,选择和呈现自己的状态渲染的结果支柱) . 将它与状态 - AFAIK进行比较,它们在minon侧呈现 .
2 回答
从安全角度来看,恕我直言中的任何一种方法看起来都非常相似 .
正如你所说,每个salt-minion只能看到salt-master允许它看到的支柱数据 .
第一种方法看起来更直接,谷物由仆从提供 - 所以如果你有一个被黑客攻击的奴才,它可以看到它不应该......
更大的安全风险是在您的支柱中悬挂未加密的密钥等(特别是如果您使用git或其他任何东西共享它们) . 你见过这个吗? https://docs.saltstack.com/en/latest/ref/renderers/all/salt.renderers.gpg.html,gpg加密为您的支柱 .
已经使用它大约4个月没有问题 .
你不应该使用第二种方法 .
请记住,谷物是不安全的,任何奴才都可以表现为任何谷物 . 在Jinja评估粮食,特别是确定对支柱数据的访问有效地绕过Salt的安全模型 .