安全地将文件从一个 Salt Minion 复制到另一个 Salt Minion

安全地将文件从一个 Salt Minion 复制到另一个 Salt Minion

如何使用 Salt 安全地将敏感文件(加密密钥)从一个特定 minion 复制到另一个特定 minion?我不希望任何其他 minion 能够读取该文件。

盐矿?

盐矿似乎是一个合乎逻辑的起点,但文档指出:

Salt Mine 用于从 Minions 收集任意数据并将其存储在 Master 上。然后通过salt.modules.mine模块。

我并不想让所有 Minion 都能使用这些数据,而只想让一个 Minion 能使用。此外,我不需要定期刷新 — 我只需要在每次state.highstate为目标 Minion 运行时读取文件。

cp.push

盐的cp.push函数似乎是将文件传送到主服务器的好方法,但以下情况除外:

  • 它使用salt.transport.Channel.send()的方法不保证保密
  • cp.push主服务器授予主服务器文件系统中全局读取权限推送的文件
  • 一旦文件在 master 上,就不清楚如何将其传输到目标 minion

定制外部支柱?

我可以写一个定制外部支柱它会以某种方式从源 minion 读取文件(怎么做?),然后通过 pillar 将文件内容提供给第二个 minion。对于应该内置的行为,这似乎需要付出很多努力。

答案1

这只是一个半答案,但也许会有所帮助。

你写了:

一旦文件在 master 上,就不清楚如何将其传输到目标 minion

和:

我可以编写一个自定义的外部支柱,以某种方式......通过支柱将文件的内容提供给第二个小兵。

这种能力(文件树自 2015.5.0 起,外部支柱已加入盐中。请参阅此常问问题

至于如何将文件从源 minion 传输到 master,salt 范式更多的是让 master 作为数据源。你可以:

  • 无论什么旋转密钥,都将其写入主密钥吗?
  • 触发反应堆通过 scp 去获取它的事件?
  • 在想要共享密钥的两个 minion(或者源 minion 和 master)之间设置共享 NFS 挂载?
  • 在源从属设备上设置一个 https 网络服务器,并使用 ACL 仅允许访问主从属设备或目标从属设备?

相关内容