我在想,因为我们已经有了一个用于访问服务器的秘密文件(ssh私钥),使用此文件作为Vault的密钥文件会有多大的安全风险?
好处是我们只需要保护ssh私钥,而不是使用另一个密钥库。
答案 0 :(得分:1)
我喜欢你减少秘密的想法,但我对使用ansible私钥感到担忧。
理想情况下,您提到的私钥仅存在于您的管理计算机上,您可以从中运行您的Playbook。我看待它的方式是,这个密钥在其他机器/系统中分布得越多,它就越有可能被泄露。 ansible私钥通常可以在系统中任何配置的计算机上访问root,这使它成为一个非常有价值的秘密。我从不为ansible私钥提供ansible本身(无论如何,至少在第一台管理机器上,这将是一种鸡蛋)。
我在这种方法中看到的一个潜在问题是在本地开发角色,例如,使用流浪汉。 您需要在本地使用管理系统中的私钥来解密秘密,并针对您的流浪盒运行您的剧本。 此外,在同一个ansible项目上工作的任何其他开发人员都需要本地私钥进行开发。
我的前提是私钥不会离开管理服务器。为了实现这一目标,您可以通过本地开发的方式开发您的角色,您不需要任何秘密解密,例如,为每个仅使用非加密伪造数据的生产组创建本地开发dev
对应项。这样,您只需要在管理机器上解密秘密,并且不需要本地私钥,但这当然会导致您的ansible项目的更高开发工作量。
我总是尽可能地尝试使用这种方法,但有时候你可能会发现自己仍然需要为你的流浪盒解密一些有效的api密钥。在某些项目中,您可能希望将ansible playbooks不仅用于生产服务器,而且还要为开发人员本地提供流浪盒,这通常是在您需要解密一定数量的有效秘密时。
另外值得一提的是,通过这种方法,只能使用私钥直接在管理服务器上对生产机密进行更改。
总而言之,我认为虽然理论上可以使用私钥作为保险库密码,但与额外安全问题带来的开销相比,减少一个秘密的好处太小了。