总结

在本章中,你已经学习了如何通过扫描容器和基础设施即代码(IaC),确保代码和配置的一致性,以及对整个流水线进行安全加固,从而保护你的发布流水线和部署。

在下一章中,我们将讨论软件架构对软件交付性能的影响。

案例研究

直到现在,Tailwind Gears一直支付外部公司进行架构安全评审,协助进行威胁建模和风险分析,并在重大发布前进行安全测试。公司从未遭遇过安全 breach,且迄今为止,大部分投资都集中在网络安全上。然而,随着越来越多地使用云服务,Tailwind Gears已经意识到他们需要采取措施,才能够检测、响应并恢复安全事件。

IT部门已经开始使用Splunk作为他们的SIEM和ITIM解决方案,并整合越来越多的数据源,但到目前为止,IT部门无法确定是否能实时检测到正在进行的攻击。为了改变处理安全的方式,Tailwind Gears与安全合作伙伴沟通,并计划了第一次红队/蓝队模拟演练。模拟场景是对DevOps试点团队的Web应用进行内部攻击。

此次模拟演练持续了3天,红队通过以下两种方式成功入侵生产环境:

  • 一次针对另一团队几名开发人员的鱼叉式钓鱼攻击成功,泄露了其中一名开发人员的凭证。通过BloodHound,红队发现该开发人员可以访问之前的Jenkins服务器,该服务器上运行着GitHub Actions Runner,尚未完全迁移到Kubernetes解决方案。该服务器没有启用MFA,mimikatz工具帮助捕获了一个测试账户的凭证。该测试账户能够访问测试环境,进而捕获了一个管理员账户的凭证,允许提取暂存环境的数据(在模拟演练中,该环境被视为生产环境)。

  • 由于所有开发人员都可以读取所有仓库,红队分析了Web应用的依赖项,发现一个存在XSS漏洞的依赖项没有被修复。该组件是一个搜索控件,红队通过与另一团队的前端开发人员合作,利用该漏洞在其他用户的上下文中执行脚本。他们在一个内部GitHub仓库中开设了一个问题,并使用GitHub API在每次执行时向该问题发表评论,作为证据。

模拟演练的结果产生了许多待办事项,团队将在接下来的几周内进行处理。某些事项与DevOps团队无关,例如为所有内部系统启用MFA,或定期进行钓鱼模拟以提高员工的安全意识。

但也有许多事项涉及到DevOps团队。Tailwind Gears决定将安全性融入开发流程。这包括秘密扫描、依赖项管理(通过Dependabot)和代码扫描。团队还将与IT部门合作,安全地加强发布流水线,通过将构建服务器迁移到Kubernetes,实施全流水线的安全日志记录,并使用OpenID Connect和安全的密钥库来处理秘密。

大家都期待着三个月后的下一次红队/蓝队模拟演练。

进一步阅读

以下是本章的参考文献,你可以进一步阅读以获取有关这些主题的更多信息: