当前位置: 首页 > 科技观察

DevSecOps实施步骤及常见错误

时间:2023-03-11 20:48:15 科技观察

只要实施得当,DevOps足以为各个企业组织带来可观的回报,例如改善团队之间的协作,加快产品上线,提高整体效率,提高客户满意度,等等等等。但是,如果不现实地考虑安全和安保,上述任何积极因素都无法真正转化为收益。忽视安全问题,所有使用DevOps改进工作流程的努力都将是徒劳的。DevSecOps有望解决这一困境。在本文中,我们将共同了解DevSecOps的各种实施步骤和常见陷阱。在DevOps出现之前,组织仅在软件开发生命周期(SDLC)的最后阶段对产品进行安全检查。由于重点主要放在应用开发环节,相当于变相认定安全不如其他环节重要。当工程师进行安全审查时,大部分产品开发过程已经结束,因此即使发现安全漏洞,也意味着需要重写无数行代码,这是一项费时费力的工作。正因如此,企业往往会选择能修则修,能修则延。换句话说,安全已经成为一种“安慰剂”,而不是真正需要推动和投资的重要事物。IT基础设施在过去十年中经历了巨大的变化。但大多数安全和合规性监控工具并未同步更新。最终结果是大多数工具无法根据典型DevOps的要求快速测试代码。此外,网络犯罪攻击继续以惊人的速度扩大。JuniperResearch发布的一份报告预测,随着越来越多的业务基础设施相互连接,到2020年,单次数据泄露造成的平均损失将超过1.5亿美元。很明显,实施DevSecOps将产生立竿见影的积极影响,将坚固的盾牌放在我们手中,以抵御潜在攻击的挑战。安全贯穿DevOps流程的所有阶段。“快速交付代码和代码安全”听起来像是相互矛盾的要求。但DevSecOps表示不信奉这种邪教。DevSecOps是一种以“安全生产,人人有责”为立场的IT安全工作方法。它需要将安全实践纳入DevOps流水线,希望实现安全保障全面渗透到软件开发工作的各个环节。但是,这种全过程的保护方式显然与传统的只关注软件开发生命周期最后阶段的安全保护方式相冲突。如果您的企业已经在推进DevOps,那么考虑转向DevSecOps无疑是个好主意。DevSecOps的核心与DevOps原则高度契合,因此切换并不是特别困难。通过转型,企业可以汇集不同学科的技术人员,全面提升现有安全流程。DevSecOps的常见误解DevSecOps也有很多误解。说,“我们需要‘超级开发者’来启用D??evSecOps”。但事实上并非如此。DevSecOps的实施不需要那种“超级英雄”级别的开发人员。只要配合适当的技术和理念培训,充分引导员工关注DevSecOps,每个人都可以成为这股浪潮中的浪花。而且DevSecOps一直强调打破功能孤岛,因此开发团队要吸收不同技能的人,为他们提供DevSecOps流程和方法的培训课程,最终匹配整个产品交付流水线。所以,只需要培养现有的队伍,不需要雇佣全新的独立军队。另一个常见的误解是“DevSecOps可以取代敏捷”。事实上,DevSecOps只是对敏捷的补充,并不能替代敏捷本身。两者必须共存,才能保证企业自身的商业利益最大化。敏捷强调促进协作和持续反馈,但与DevSecOps不同,敏捷不涉及软件测试、质量保证(QA)和生产。DevSecOps需要通过敏捷的力量全面增强现有的业务流程。第三个误区是,“肯花钱就能实现DevSecOps”。并不真地。我们只能购买流程工具,比如发布管理、CI/CD等工具,不能直接购买整个DevSecOps流程。DevSecOps代表了一种理念和方法。真正对业务有直接影响的东西,即团队之间的高效协作和团队成员的责任感,是不能直接买来的。随着越来越多的公司意识到DevSecOps的重要性,DevSecOps工程师越来越受到人才市场的追捧。那么,最优秀的工程师应该具备哪些素质呢?DevSecOps工程师角色本身必须掌握一些互补的技能,例如对DevOps核心原则、实践和文化取向的深刻理解。考生还应精通Python、Java、Ruby等语言。此外,一名优秀的DevSecOps工程师应该能够轻松使用Chef、Puppet、Checkmarx和ThreatModeler等程序。此外,DevSecOps专业人员还需要了解风险评估和威胁建模技术的复杂性,了解最新的网络安全威胁、现代最佳实践和其他相关软件。工作经验方面,有DevSecOps经验当然是最好的。但纯粹的IT安全(不涉及DevOps)经验足以支撑DevSecOps工程师敏锐的安全意识。DevSecOps优秀实践在DevSecOps的规划和实施中,这些因素起着重要作用:第一,安全编码实践。安全编码的意义在于开发出对安全漏洞具有高抵抗力的软件。不安全的编码实践会导致各种软件安全风险,例如泄露组织内的机密信息。因此,最重要的是要保证开发者有足够的技能储备,并在时间和成本投入上积极支持。此外,企业应该建立并遵循编码标准,以帮助开发人员编写出更多高质量的代码。其次,拥抱自动化。自动化在DevSecOps中和在DevOps中一样重要。为了使安全保障的速度与CI/CD环境中的代码交付速度相匹配,安全也必须迈向自动化的新时代。如果没有这个前提,大型企业组织根本无法有效保护开发人员每天提交的大量代码版本。对于自动化安全测试,我们必须考虑周全。为错误的目的选择错误的自动化工具会造成很大的伤害。静态应用程序安全测试(SAST)工具目前广泛用于开发周期早期的持续检测和问题识别解决方案。只有选择合适的符合实际需求的安全自动化工具,才能真正有效地保障产品的顺利交付。三、左移法。左移测试方法的核心是在周期的早期将安全性构建到应用程序中,而不是等待交付链的最后阶段。这种方法的主要优点是可以更快地识别潜在漏洞并立即解决。虽然这种方法本身有很多优点,但也带来了很多隐患。左移方法的一个常见挑战是它会暂时中断现有的DevOps工作流程。这确实是一个问题,但如果企业下定决心采用DevSecOps,从长远来看,左撇子方法仍然是不可或缺的最佳实践。第四,人、流程和技术。就DevSecOps的成功实施而言,人、流程和技术可谓三位一体,缺一不可。不管其他条件多么完备,如果员工对文化创新不感兴趣,那么成熟有效的DevSecOps环境无从谈起。虽然说服高级管理团队接受这种重大转变可能很困难,但应认真对待由于安全状况不佳而导致的重大数据泄露事件的频繁发生。因此,除了安全专家的指导,尽可能培养安全倡导者对于DevSecOps的良好运行也至关重要。任何流程都由多个环节组成,其中最重要的当然是工作流标准化和文档化。一般来说,一个企业组织中的各个团队需要实施不同的流程,而DevSecOps则需要团队就统一的流程达成一致,通过协同执行来加强开发周期中的安全级别。同时,技术可以帮助人们高效地执行DevSecOps流程。其具体实践涉及的常用技术包括自动化和配置管理、安全即代码、自动合规扫描和主机加固。如何实施DevSecOps可以想象,DevSecOps的实施将是一个复杂的过程。我们现在将此过程分解为以下具体步骤。虽然没有具体的、连续的路线图式的步骤设计,但大部分都涵盖了以下几个环节。首先,一切从计划开始。规划的战略层次和简洁程度,将直接决定最终的实施效果。因此,仅仅描述功能特性是不够的。专家还需要建立测试验收标准、用户设计和威胁模型。下一阶段是开发,团队应首先评估现有实践的成熟度。在这个阶段,您可以从多个来源收集资源来指导您的方法,或者您可以设置一个代码审查系统。由此支撑的统一架构将成为DevSecOps后来成功的重要基础。然后是构建环节,自动化构建工具无疑是这个阶段的绝对主角。使用此类工具,我们可以构建脚本、将源代码汇编成机器码等。自动化构建工具不仅提供了多种强大的功能和丰富的插件库,而且还拥有多种易于使用的用户接口,其中一些甚至可以自动检测易受攻击的库并及时替换它们。接下来就是测试,通过稳定可靠的测试实践,将强大的自动化测试框架全面引入流水线。部署通常通过IaC工具完成,这些工具可以自动化流程并加快软件交付。作为另一个关键步骤,运维无疑是运维团队的一项常规职能。考虑到零日漏洞可能造成的巨大威胁,运营团队必须引起重视;此外,运营团队还需要关注人为错误的蔓延,包括使用DevSecOps通过IaC工具快速有效地保护企业拥有的基础设施。该过程中的另一个重要因素是使用强大且持续的监控工具来确保安全系统按预期运行。规模也不容忽视。虚拟化技术的出现,意味着企业不再需要浪费资源维护大型数据中心。相反,一旦发生任何威胁,企业也可以直接扩大IT基础设施的规模来吸收突如其来的冲击。以上只是DevSecOps实施中的一些基本步骤。根据项目的确切规模和复杂性,路线图可能需要涵盖特定的额外步骤。DevSecOps的挑战当然,DevSecOps的实施必然伴随着一系列的挑战。阻止大多数公司转向DevSecOps的头号挑战是文化阻力。毕竟,人们更喜欢呆在他们熟悉的舒适区。另外,在传统的软件开发模式中,安全保护更多的是一种事后诸葛亮的措施,聊胜于无。此外,DevSecOps还强调统一开发人员和安全专家,共同建立协作环境。不过,两支球队之间始终存在着一定程度的摩擦,他们甚至认为对方总是与自己作对。这种观点导致两者“形影不离”,直接违背了DevSecOps的核心原则。只有改变这两个端点,DevSecOps文化思维才能在企业内部成熟开花。另一个常见的挑战是,人们通常认为安全会减慢工作速度,甚至阻碍创新尝试。为了满足现代业务需求,开发人员期望不断加快代码交付。然而,安全团队的核心重点是确保代码安全,而这两个截然不同的目标使得团队之间很难相互理解并协同工作。根据Cyber??securityVentures发布的一份报告,到2021年全球将有多达350万个网络安全职位空缺。由此可以推断,尽管安全漏洞和攻击一直在增加,但仍然缺乏足够的网络安全工程师市场人才。为此,安全专家的稀缺很可能成为中小企业组织面临的一个巨大问题。与开发和安全团队之间的协作不同,将操作和安全相结合的复杂性通常更高。对于前两个,我们只需要向开发人员传授安全最佳实践,并引导他们与安全团队密切合作。虽然所有这些确实改变了开发人员的一些日常习惯,但总体上不会有太大改变。但当试图引导运营团队与安全团队合作时,情况就完全不同了。当运营工程师看到任何异常情况时,他们通常不会想到是安全漏洞。对他们来说,最大的隐患往往来自软件配置错误或基础设施故障。但对于安全团队来说,异常让他们本能地意识到可能存在潜在的漏洞。因此,运营工程师必须重新调整他们对运营环境的分析方法。DevSecOps的好处DevSecOps最重要和最明显的好处是有助于提高整体安全性。如前所述,您可以在管道的早期发现错误,从而更容易修复它们。通过持续监控,DevSecOps还可以增强威胁搜寻。从商业角度看,产品安全程度越高,营销难度越低。从SDLC的一开始就寻找错误意味着可以以较低的成本修复它们。多个团队将齐心协力解决安全问题,提高问责制。这种协作还有助于提出更快、更有效的安全响应策略,进而导致更强大的安全设计模式。DevSecOps还可以最大限度地减少安全瓶颈的发生频率。安全专家不必等待开发周期完全完成就可以运行安全检查。这两个因素进一步加快了产品交付速度。DevSecOps还可以帮助公司更好地遵守行业标准法规。《通用数据保护条例》(GDPR)等法规要求人们更加谨慎地处理数据。DevSecOps以框架的形式为管理者提供更全面的合规要求印象,降低合规难度。总结毫无疑问,DevSecOps将彻底改变企业实施安全的方式。然而,由于对DevSecOps本质缺乏正确认识、员工态度消极、预算有限、术语定义模糊等种种原因,许多中小企业对DevSecOps仍持怀疑态度。但必须承认,DevSecOps完全有能力从技术层面和业务层面为企业带来巨大收益。虽然初期总会出现一些小问题,但从长远来看,DevSecOps的实施将帮助企业一步步重塑自我,帮助企业迎来一条意想不到的发展道路。

猜你喜欢