DevSecOps 工具

确保 DevOps 工作流安全的 DevSecOp 工具

Kev Zettler 头像
Kev Zettler

全栈 Web 开发人员


尽管软件公司倾尽全力,但仍会出现安全漏洞。自 2000 年以来,预计有 35 亿人发现自己的个人数据被盗。此问题的部分原因在于:随着软件应用代码库规模和复杂性的提高,安全漏洞和漏洞利用的攻击区域也在扩大。

此外,随着越来越多的组织采用 DevOps 方法,自动执行和集成软件开发团队和 IT 团队之间的流程,传统的安全工具往往已不再够用。如今,开发人员需要将安全措施嵌入到开发工作流的每个阶段。当涉及到 DevOps 工作流的安全性时,这种实践就称为 DevSecOps。

什么是 DevSecOps?


DevSecOps 是一种将安全性集成到持续集成持续交付持续部署管道中的实践。通过将 DevOps 价值观整合到软件安全中,安全性验证成为开发过程中的一个活动的集成部分。

DevSecOps 与 DevOps 很相似,它是一种将项目管理工作流与自动化 IT 工具相结合的组织和技术方法。DevSecOps 可将主动的安全审计和安全测试集成到敏捷开发和 DevOps 工作流中,以便将安全性内置于产品中,而不是应用于成品中。

要实施 DevSecOps,团队应该:

  • 在整个软件开发生命周期中引入安全性,以尽量减少软件代码中的漏洞。
  • 确保包括开发人员和运营团队在内的整个 DevOps 团队共同承担遵循安全最佳实践的责任。
  • 通过将安全控制手段、工具和流程集成到 DevOps 工作流程中,在软件交付的每个阶段启用自动安全检查。

借助 DevSecOps,应将安全性应用于典型 DevOps 管道的每个阶段:规划、构建、测试、部署、运营和观察。

连续性是 DevOps 管道的一个差异化特征。这包括持续集成、持续交付/部署 (CI/CD)、持续反馈和持续运营。每个功能都具有持续性,而不是一次性测试或有计划的部署。

工具图标
相关资料

了解有关 Snyk for Bitbucket Cloud 的更多信息

下载图标
查看解决方案

了解 Snyk for Bitbucket Cloud

DevSecOps 无限循环

规划


规划阶段是 DevSecOps 中自动化程度最低的阶段,涉及协作、讨论、审查和安全分析策略。团队应进行安全分析,并制定概述将在何处、以何种方式以及何时完成安全测试的计划。DevSecOps 备受欢迎的其中一款规划工具就是 IriusSisk,即一种用于威胁建模的协作设计工具。其他工具包括事务跟踪和管理工具(如 Jira Software)以及诸如 Slack 之类的通信和聊天工具。

构建


一旦开发人员将代码提交到源代码存储库,构建阶段便告开始。DevSecOps 构建工具专注于针对构建输出工件的自动安全分析。重要的安全实践包括软件组件分析、静态应用软件测试 (SAST) 和单元测试。可以将工具插入现有的 CI/CD 管道以自动执行这些测试。

开发人员会定期安装和构建第三方代码依赖关系,这些依赖关系可能来自未知或非受信来源。外部代码依赖关系可能会意外或恶意地包含漏洞和漏洞利用。在构建阶段,审查和扫描这些依赖关系是否存在任何安全漏洞至关重要。

执行构建阶段分析的一些知名工具包括:OWASP Dependency-CheckSonarQbeSourceClearRetire.jsCheckmarxSnyk

用于编码阶段的 DevSecOps 工具可帮助开发人员编写更安全的代码。重要的编码阶段安全实践包括静态代码分析、代码审查和提交前挂钩。

当安全工具直接插入到开发人员现有的 Git 工作流中时,每次提交和合并都会自动触发安全测试或审查。这些工具支持不同的编程语言和集成式开发环境。部分更为流行的安全代码工具包括 GerritPhabricatorSpotBugPMDCheckStyleFind Security Bugs

测试


在创建工件并成功部署到预备或测试环境后,就会触发测试阶段。执行全面的测试套件需要相当长的时间。此阶段应很快便会出现问题,以便将更昂贵的测试任务留到最后。

测试阶段使用动态应用安全测试 (DAST) 工具来检测动态应用流,例如:用户身份验证、授权、SQL Injection 以及与 API 相关的端点。注重安全的 DAST 根据一系列已知的严重性为高的事务(例如:OWASP 10 问题中列出的问题)来分析应用。

很多开源和付费测试工具均可使用,它们可为语言生态系统提供各种功能和支持,包括 BDD 自动安全测试jBroFuzzBoofuzzOWASP ZAPArachiIBM AppScanGAUNTLTSecApp 套件

部署


如果之前的阶段成功通过,现在就应该将构建工件部署到生产环节。部署阶段需要解决的安全问题就是那些只会在现实生产系统中出现的安全问题。例如:应该彻底检查生产环境与之前预备和开发环境之间的配置差异。针对即将进行的续订,应验证和审查生产 TLS 和 DRM 证书。

部署阶段是使用 OsqueryFalcoTripwire 等运行时验证工具的好时机,它们可以从正在运行的系统中提取信息,以确定系统是否按预期运行。组织还可以通过在系统上进行实验来运行混沌工程原理,以建立对该系统承受动荡条件能力的信心。您可模拟现实中的事件,例如:服务器崩溃、硬盘故障或网络连接断开。Netflix 以其 Chaos Monkey 工具而闻名,该工具运用了混沌工程原理。Netflix 还利用 Security Monkey 工具来查找配置不当的基础架构安全组中的违规或漏洞,并断开所有易受攻击服务器的连接。

在 DevSecOps 周期的发布阶段,应用代码和可执行文件应经过全面测试。本阶段专注于通过检查环境配置值(例如:用户访问控制、网络防火墙访问和机密数据管理)来保护运行时环境基础架构。

最低权限原则 (PolP) 是发布阶段的主要关注点。PolP 意味着任何用户、程序或流程只有最低访问权限来执行其功能。这涉及审计 API 密钥和访问令牌,因此负责人只具备受限的访问权限。如果没有此类审核,攻击者便可能会发现一个能够访问系统非预期区域的密钥。

配置管理工具是确保发布阶段安全性的关键要素,因为它们可提供对动态基础架构静态配置的可见性。然后,便可对系统配置进行审计和审查。配置将变为不可变状态,而只能通过提交到配置管理存储库进行更新。部分受欢迎的配置管理工具包括 AnsiblePuppetHashiOrp TerraformChefDocker

安全社区提供了关于强化基础架构的最佳实践的指南和建议,例如:互联网安全中心 (CIS) 基准NIST 配置清单

持续安全


一旦应用部署在线上生产环境中并稳定下来后,就需要采取额外的安全措施。公司需要通过自动安全检查和安全监控回路来监控和观察实用应用是否存在任何攻击或泄漏。

运行时应用自我保护 (RASP) 可自动实时识别和阻止入站安全威胁。RASP 充当反向代理,可以观察传入的攻击,以便应用自动重新配置,而无需人工干预,以便响应显式条件。

有备而来的内部或外部团队可通过故意破坏系统来执行渗透测试,以发现漏洞利用或漏洞。另一种安全技术就是实施缺陷赏金计划,该计划会向报告安全漏洞利用和漏洞的外部人员支付费用。

安全监控通过分析来检测和监控与安全相关的关键指标。例如:这些工具将请求标记到敏感的公共端点,如用户帐户访问表单或数据库端点。部分受欢迎的运行时防御工具示例包括 Imperva RASPAlert LogicHalo

总之...


随着越来越多的开发团队不断改进自己的流程并采用新工具,他们需要认真对待安全问题。DevSecOps 是一个循环过程,应持续迭代并应用于每次新代码部署。漏洞利用和攻击者在不断进化,现代软件团队的发展也至关重要。

启动 DevSecOps 测试的最佳切入点就是使用 Bitbucket Pipelines 自动进行测试。另外,请务必查看 Atlassian Marketplace 上提供的测试自动化工具和资源。

Kev Zettler
Kev Zettler

Kev 是领先的全栈 Web 开发人员和连续创业者,拥有十多年使用敏捷方法构建产品和团队的经验。他是 DevOps、加密货币和 VR/AR 等新兴开源技术的热情贡献者、作者和教育者。闲暇时,他会参加独立游戏开发活动。


分享这篇文章
下一个主题

推荐阅读

将这些资源加入书签,以了解 DevOps 团队的类型,或获取 Atlassian 关于 DevOps 的持续更新。

Devops 示意图

DevOps 社区

Devops 示意图

DevOps 学习路径

地图插图

免费试用

注册以获取我们的 DevOps 新闻资讯

Thank you for signing up