译者 | 李睿
审校 | 孙淑娟
开发人员的思维方式是理解问题,构建解决方案,然后找出如何将健壮且安全的解决方案部署到生产环境中。
不幸的是,一旦实现,将安全优秀实践嵌入到解决方案中通常会操作更加复杂和成本高昂,而快速发布创新的压力往往会导致DevOps团队发布安全债务。最佳Devsecops实践是将知识、最佳实践和安全性“左移”到开发过程中,以便敏捷开发团队更有可能将安全性直接融入微服务、应用程序或数据库中。
但是持续集成(CI)/持续交付(CD)管道呢?当构建、集成、打包和交付代码到环境的人工步骤在CI/CD工具中编写脚本时,这种自动化提高了部署的可靠性。具有强大CI/CD实施的Devops团队通常会采取下一步措施,并考虑为生产环境进行持续部署,这会带来更多风险,但可以实现更频繁的部署。
开发人员需要考虑以下这些建议和最佳实践,以确保安全和强大的CI/CD管道。
1.在CI/CD之前建立安全开发实践
咨询机构凯捷公司敏捷和开发主管KulbirRaina分享了一个首要原则:“安全和质量必须嵌入到代码中,在处理CI/CD管道中的自动化时,不应该让质量关卡来控制。开发人员需要在他们的集成开发环境中集成安全工具,以便正确地检查代码。”
Linting是一个由识别编码风格偏差和不安全实践的工具执行的过程。更复杂的静态应用程序安全测试(SAST)工具可以发现缓冲区溢出、SQL注入缺陷和其他问题。Raina建议将SAST集成到持续集成中。
Redgate Software公司Devops倡导者Steve Jones表示,工具很重要,但就像任何Devops流程一样,确保随着时间的推移不断学习和成长。他说:“定期对开发人员进行安全编码实践方面的教育,并确保他们找出简单的漏洞(例如SQL注入),这一点至关重要。”
Buildkite公司联合创始人兼联合首席执行官Tim Lucas分享了其他的一些最佳实践。他建议查看来自开源和第三方的依赖项,以了解常见漏洞和暴露 (CVE)。Devops团队不要将易受攻击的软件投入生产。他建议,对供应商软件使用可验证的签名,这样如果供应商受到威胁,企业的安全供应链也不会受到损害。
Sonatype公司现场首席技术官lkka Turunen对此表示赞同。他建议说,“最佳实践之一是在搜索开源软件项目时具有选择性,这就像在传统制造业中一样,并非所有部分都是平等的。寻找由敬业且负责任的开发人员维护的项目,不仅可以提高软件供应链的可维护性,还可以减少技术债务、返工和安全风险。”
这些建议只是在软件开发生命周期中应用最佳安全实践时的冰山一角,但它们是开发安全交付管道的关键先决条件。
2.在CI/CD管道中构建持续测试
重要的是要认识到CI/CD不仅仅是交付代码。这也是采用左移测试并发展持续测试策略的机会。然后,将测试作为核心原则的团队可以在触发CI/CD管道将版本部署到任何环境之前寻找验证安全性的机会。除了集成SAST安全测试之外,开发团队还应关注:
- 触发渗透测试以发现后门和其他入口点漏洞。
- 验证安全控制和测试授权。
- 使用动态应用程序安全测试 (DAST)工具测试OWASP十个主要的高严重性问题。
测试自动化还应该考虑修复常见问题的步骤、通知正确的团队以及回滚过程。
3.自动化CI/CD内的数据安全程序
CI/CD管道还应该用于自动化具有代码和构建依赖项的安全过程。需要关注的一个领域是数据安全,因为版本可能包括新的数据库、更新的数据模型或新的数据集。
一项经常被忽视的功能是使用从生产环境中提取的数据来更新开发和测试环境。开发团队应使用最近提取的数据来验证功能和测试体验,并使用数据屏蔽来隐藏个人身份信息和其他符合数据合规要求的数据。
Accelario公司首席技术官兼联合创始人Roman Golod建议:“数据屏蔽是CI/CD期间安全自动化的关键部分。开发和测试团队需要真实的数据来确保一切在生产中都能顺利运行,但非生产系统通常不够安全。”
其他技术包括使用合成数据和服务虚拟化。Golod补充说,“模拟真实事物的合成数据集将进一步加强安全性,因为如果该数据库遭到破坏,威胁参与者将一无所获。”
Copado公司战略服务高级副总裁Daniel Riedel为开发团队增加了一个关键起点。他说:“开发团队需要了解自己的数据,特别是监管该数据的安全和合规政策。一旦了解了这些政策,需要仔细构建一个出色的安全自动化框架,而该框架经过充分测试,涵盖了这些政策中规定的规则和控制。”
4.应用零信任原则来保护CI/CD管道
Devops团队应该如何锁定管道,以便只有授权的人员才能触发它们?Redgate Software公司的Devops倡导者Grant Fritchey提出了一项建议:“在Devops管道中实现安全性自动化的关键与始终保持良好安全性的关键是完全相同的:最小特权原则。如果确保只为管道提供足够的权限,那么在管道内部、周围和内部实现安全自动化将很简单,并提供想要的结果。”
一些基本实践包括隐藏API密钥、在CI/CD工具中定义基于项目和角色的安全凭证,以及确保远程Devops团队成员的访问安全。
5.通过将CI/CD与AIops和安全自动化集成来验证部署
一旦将代码部署到生产环境,Devops团队的职责就不会结束。这就是对可观察性和监控的投资成为重要的运营反馈工具的地方。Devops团队应与运营团队和工具合作,以响应事件并识别技术债务何时成为运营或安全问题。以下是一些细节:
- AIops工具集中运营数据,将警报与事件相关联,并帮助围绕性能和可靠性问题自动响应事件。
- 安全自动化可以防止威胁和攻击,同时启用设置权限、修补系统和响应安全事件的自动化。
- 许多CI/CD工具提供与AIops、安全自动化和其他通用IT自动化工具的双向集成。作为CI/CD管道的一部分,DevOps团队应触发这些工具的通知,以通知操作和信息安全有关代码交付的信息。它们还应该允许IT运营和信息安全自动化来触发构建或回滚,以支持运营和安全需求。
Devops工作流程显示了从规划到监控部署的连续路径,以确保团队可靠、安全地规划、交付、发布和运行系统。CI/CD是主要的Devops实践之一,因此在管道之前、内部和之后嵌入安全性是一项关键的责任。
原文标题:5 best practices for securing CI/CD pipelines,作者:Isaac Sacolick