zoukankan      html  css  js  c++  java
  • 对DevSecOps的一点认识

    DevSecOps从单词上来看可以分为 Dev(开发)、Sec(安全)、Ops(运维)三个部分,是用来实现企业代码的安全开发的,那么它和SDL(安全开发生命周期)有什么关系和区别呢?DevOps、敏捷开发、CI/CD这几个概念又是什么呢,和DevSecOps又有什么联系呢?

    前置概念

    1. 敏捷开发

    在软件开发过程中常见的有瀑布模式、敏捷模型。瀑布模型就是假定产品经理先设计出完整的产品需求、需求在制定过后就是一成不变的,开发人员只需要按照需求文档流水式的开发就行了;然而在现实中需求可能受到市场、客户等商业因素的影响,是会动态的改变的,敏捷模型就是用来适应这种情况的,强调拥抱变化、快速迭代、持续交付,并且提出了scrum的概念:一个scrum需要负责一个模块的端到端的所有工作,模块整个开发、质量都有scrum负责,直到发布。

    2. DevOps

    从字面上看DevOps和Dev(开发)和Ops(运维)有关,没错,敏捷开发解决的是需求和开发之间的关系,强调开发需要适应不断变化的需求、快速迭代,而DevOps更多是强调软件部署和运维管理的关系。


    传统的软件开发过程中(无论是瀑布模式还是敏捷模式),都是先由开发团队完成编码后交由测试团队测试,然后再整个的“交付”给运维团队来部署上线,以及线上运行的稳定维护。这增加了研发人员和运维人员之间的沟通成本,大大影响了客户交付的效率,DevOps(Development和Operations的组合词)强调软件开发和运维部署之间的高效协作,实现缩短开发交付周期、不断迭代、快速交付的效果。

    传统的开发方式是线性的,开发与运维之间存在隔阂而且沟通效率低下。而DevOps使开发与运维的流程形成了一个闭环,打破了隔阂,各部门协作更紧密,提高了协作效率。DevOps 通过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。具体来说,就是在软件交付和部署过程中的提高沟通与协作的效率,旨在更快、更可靠的的发布更高质量的产品。

    3. CI/CD

    DevOps是依托自动化工具把开发、测试、发布、部署的过程整合,实现高度自动化与高效交付的,CI/CD就是实现这一过程的工具:持续集成(CI)、持续部署、持续发布(CD)。
    持续集成(Continuous Integration)简称CI, 只要开发人员有提交新的代码,立刻会自动进行构建、单元测试,确保新的代码集成到原有代码,并且单元测试通过,快速集成代码。持续交付(Continuous Delivery)代码通过测试之后,自动部署到贴近真实运行的环境中评审验证。当新加的代码通过在相似的真实环境中运行一段时间之后,就可以持续部署(Continuous Deployment),自动部署到生产环境。

    DevSecOps

    1. DevSecOps是什么

    行业权威的分析机构Gartner早在2012年就提出了这个概念:

    从字面上看,DevSecOps在DevOps的基础上增加了Sec,可以理解成在遵循DevOps的理念下,将安全融入其中,是DevOps的升级版。DevSecOps强调安全是团队每个人的责任(无论研发、测试、运维),安全的理念需要贯穿在产品的生命周期中,同时解决了安全测试的孤立性、滞后性、随机性、覆盖性、变更一致性等问题;通过固化流程、加强不同人员协作,通过工具、技术手段将可以自动化、重复性的安全工作融入到研发体系内,让安全属性嵌入到整条流水线。

    2. DevSecOps实现工具

    DevSecOps vs SDL


    SDL即Security Development Lifecycle (SDL),是微软提出的从安全角度指导软件开发过程的管理模式,它的核心理念是将软件安全的考虑集成在软件开发的每一个阶段 需求分析、设计、编码、测试和维护,SDL缺乏对运维过程安全的关注。

    面对DevOps理念和实践的快速发展SDL也变得不太适用当前的开发模式。传统的DevOps关注研发、测试、运维之间的协作,并没有把安全纳入考虑,DevOps中的频繁交付对旧有的SDL这类研发安全管控思想、流程和工具形成了很大的挑战,也让研发安全问题越发不可控:

    • 软件设计阶段的安:安全人员无法参与其中;
    • 快速迭代和交付:敏捷的开发模式大大降低了研发交付周期,传统的SDL已不再适用;
    • 云环境下的安全挑战:云、微服务、容器等技术的发展依赖于DevOps的方式来实现,而在云环境下的脆弱点、攻击面也需要在整个交付周期中实现。

    工作中的案例告诉我们,安全从来都不是安全部门独自努力就能够完成的事,需要每个工程师都具备安全意识、对自己职责内的工作承担安全责任。DevSecOps是一种工作理念,将安全融入到设计、开发、测试、运维中的每一环,让团队中的每个成员都参与进来、共同担责。

    参考

    https://mp.weixin.qq.com/s/_jBmFdtyXY5D_YrrTUP1iQ
    https://mp.weixin.qq.com/s/F_aTerDwxccEVLPIHiZ78g
    https://mp.weixin.qq.com/s/yOykOPU9wn77doz95s5LeA

  • 相关阅读:
    窗体的扩展样式GWL_EXSTYLE用于SetWindowLong
    内存映射对于大文件的使用
    Delphi实现全局鼠标钩子
    全局键盘钩子(WH_KEYBOARD)
    实现拦截API的钩子(Hook)
    JBoss + EJB3 + MySql : 开发第一个EJB
    取PE文件的引入表和导出表
    Webbrowser中模拟连接点击(非鼠标模拟)
    打造无DLL版穿透防火墙Downloader
    Delphi 常用属性+方法+事件+代码+函数
  • 原文地址:https://www.cnblogs.com/ffx1/p/13356359.html
Copyright © 2011-2022 走看看