任何木偶代理人都可以从主人那里得到任何木偶文件吗?

我的木偶大师包含一些敏感的文件。 我希望每个木偶代理只能访问那些特定代理感兴趣的文件。 换一种说法:

  • 傀儡代理人是否运行其目录,然后,无论何时遇到“文件”或“模板”function或“source =>'puppet:/// …'”参数,都要求主人为其提供指定的文件,主人只是提供它没有检查? 这会很糟糕。 如果一个代理受到攻击,它可以向主服务器询问主服务器上的任何文件,甚至是仅针对其他代理的文件。
  • 或者,主人以某种方式检查代理人的目录是否确实授权该特定代理人获得该特定文件?

我不知道它是否重要,但是我正在运行乘客(所有我的代理人和主人从挤压运动2.7.6)。

    Puppet文件服务器的文档应该能够覆盖你所要求的大部分内容。 特别看安全部分 。

    首先一个笔记。 如果您启用了自动签名function,那么几乎所有提供的安全性都是没有意义的。 你应该validation每个证书。 由于您configuration的安全设置将基于主机名/ certname或正则expression式匹配,启用自动签名可能意味着任何不受信任的系统都可能简单地请求一个与可以访问秘密文件的模式相匹配的名称的证书。

    默认情况下,特殊插件和模块文件服务器挂载中的任何东西都可以被任何客户端使用。 但是这可以通过configuration在一定程度上进行控制。

    您还可以设置指向特定位置的自定义“坐骑”。 有关如何创build用于分发私有SSH密钥的[私有]装载的文档中提供了一个示例。 主机名用作装载path的一部分,因此给定的主机只能看到属于它的文件。

    只要该文件只在一个“节点”中定义,你应该没问题,另一个“节点”不能请求该文件,因为对他来说,它不存在。

    但是,将受保护的文件存储在puppet服务器上通常不是一个好主意。

    希望这可以帮助!

    我没有这方面的任何硬数据。 然而,从我在这里和那里读到的,这是我的感觉,任何代理可以从主服务器获取任何文件,如果该文件在Puppet文件服务器树内,并且Puppet文件服务器的configuration允许代理访问树。 我也觉得在编译代理configuration之前,在master上执行file(),template()和extlookup()函数,然后再发送给代理。

    因此,将敏感文件存储在Puppet文件服务器树之外并使用file()来访问它们应该是相当安全的。 这样,他们应该只能由他们打算的代理人访问。

    “如果你不想在傀儡服务器上存储重要的文件,你会有什么build议呢?

    我想, 木偶图书pipe理员也许可以帮助在这种情况下..据此创build一个特定于客户的木偶文件,并将其应用到客户端(可能甚至没有木偶大师)。

    所以,一个典型的情况可能是ssh进入方块,从已知的安全远程或本地位置抓取一个puppet文件,并使用它来安装所有依赖模块(和或configuration文件),然后触发手动木偶运行..我想你可以用capistrano或类似工具轻松自动完成这一套任务。