• 对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

  • 相关阅读:
    LeetCode 40. 组合总和 II(Combination Sum II)
    LeetCode 129. 求根到叶子节点数字之和(Sum Root to Leaf Numbers)
    LeetCode 60. 第k个排列(Permutation Sequence)
    LeetCode 47. 全排列 II(Permutations II)
    LeetCode 46. 全排列(Permutations)
    LeetCode 93. 复原IP地址(Restore IP Addresses)
    LeetCode 98. 验证二叉搜索树(Validate Binary Search Tree)
    LeetCode 59. 螺旋矩阵 II(Spiral Matrix II)
    一重指针和二重指针
    指针的意义
  • 原文地址:https://www.cnblogs.com/ffx1/p/13356359.html
Copyright © 2020-2023  润新知