我们在 Windows 下有一个 Jenkins 设置,它有一个主实例和一个工作实例,每个实例都在 AWS 的 EC2 上运行。我们在每个实例中设置了一个单独的帐户,该帐户用于在每个实例上运行 Jenkins 服务。我们使用 Git bash 通过 SSH 生成密钥并将公钥复制到 Bitbucket,从而允许主实例从存储库中获取 Jenkinsfile,并允许工作实例获取整个存储库以进行构建。目前,我们手动生成密钥,它们位于服务器上(位于我们的防火墙后面),但为了使脚本简单,密钥缺少密码。我们对此的舒适度非常低,因此我们正在寻找其他选择。我们知道 AWS 有 KMS,它允许我们生成和轮换我们的密钥,但我们不确定如何将 ssh 与 AWS KMS 连接起来。
问问题
6075 次
1 回答
1
是的!可以使用 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。于 2017-08-22T15:03:49.387 回答