我们正在使用持续集成服务来自动运行我们的产品测试套件。每次我们将代码推送到我们的中央 Git 存储库生产分支时,CI 服务都会收到通知并获取代码以运行测试套件。
CI 服务允许我们编写一个构建后脚本,它可以在测试通过时自动将代码推送到我们的 Heroku 生产服务器。
然而,我们担心如果攻击者闯入 CI 服务,他可以将他想要的任何代码更改推送到我们的生产服务器。
我们计划更改此架构,以在测试通过时让 CI 服务 ping 我们的特定“部署”服务器。这个“部署”服务器将从我们的中央 Git 存储库获取最新的生产分支代码,并推送到我们的 Heroku 生产服务器。
这样,如果 CI 服务受到威胁,攻击者就无法从 CI 服务将任何他想要的代码推送到我们的生产服务器。他将不得不闯入我们的“部署”服务器。
这种新架构的目标是将风险从 CI SaaS 转移到我们的服务器上。部署所需的 Heroku 凭据不再托管在 CI SaaS 上,而是托管在我们的服务器上。
是否有意义?或者在使用 CI 服务时(除了设置和保护自己的 CI 服务器)还有其他更简单的选择吗?