我们在Windows下有一个Jenkins设置,其中有一个主实例和一个工作实例,每个实例都在AWS的EC2上运行。我们在每个实例中都设置了一个单独的帐户,该帐户用于在每个实例上运行Jenkins服务。我们使用Git bash通过SSH生成密钥,并将公共(public)密钥复制到Bitbucket,从而允许主实例从存储库中获取Jenkinsfile,并允许工作实例获取整个构建库。当前,我们手动生成密钥,它们位于服务器(位于防火墙后面)上,但是为了使脚本简单,密钥缺少密码短语。我们对此的舒适度很低,因此我们正在寻找其他选择。我们知道AWS拥有KMS,它将使我们能够生成和旋转密钥,但是我们不确定如何将SSH与AWS KMS连接起来。无论是关于AWS KMS和SSH还是一种更好的密钥安全保护方法,任何建议或想法都将受到赞赏。
最佳答案
是!可以使用KMS来存储您的密钥,但是该过程并非如您所描述的那样直接。 KMS实际上仅生成和管理用于加密或解密内容的密钥,因此您将需要开发诸如平台的中间件来与KMS交互并协调此过程。
在Fugue博客上,有一个有关如何使用KMS存储数据库密码的示例:
https://blog.fugue.co/2015-04-21-aws-kms-secrets.html
在该示例中,credstash是中间件/平台,用于协调获取和存储数据库密码的步骤。您还可以使用credtstash安全地存储ssh密钥,然后在jenkins服务器上再次检索它。密码的传输将由credstash保护。
脚步:
1)生成ssh密钥
2)使用credstash将ssh密钥字符串放入dynamo中(credstash使用dynamo DB来存储加密的数据)
3)使用credstash获取ssh密钥并将其写入jenkins。
关于git - 在Windows的Jenkins中,是否可以使用AWS KMS通过SSH进行 key 管理?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41981952/