我有一组系统(在 AWS 中),它们都需要无密码 SSH 访问彼此。我编写了一个 Salt 状态,它复制密钥对(我之前生成的公钥/私钥 SSH-RSA 密钥)并将相应的条目添加到用户的 authorized_keys 文件中。
现在我将公钥和私钥作为文件存储在 Salt 状态中,并在我的状态定义中获取它们。然而,我注意到salt.states.file.managed() 文档他们提供了一个将私钥存储在Pillar中然后用来contents_pillar
获取私钥内容的示例。
我是否有理由将我的私钥(甚至是公钥)内容存储在 Pillar 中,而不是仅仅存储在州目录中的文件中?我不确定将其放在那里是否有安全优势,因为内容无论如何都会出现在每个系统上。我曾将 Pillar 用于其他一些事情,但不确定在这里使用它是否有好处。
答案1
所有状态都可以从所有 minions 读取,因此某人(具有适当的权限)登录你的任何 minion 都可以读取你存储在州中的私钥。
Pillar 数据可以限制在相关的 minions 上。这是您存储对一个或仅一些下属保密的任何内容的地方。
您应该阅读支柱文档页面:http://docs.saltstack.com/en/latest/topics/pillar/index.html
有这样一条注释:
存储敏感数据
与状态树不同,支柱数据仅适用于匹配器类型指定的目标 Minion。这使得它对于存储特定 Minion 的敏感数据非常有用。