DevSecOps是啥?
网友回复
DevSecOps 是将安全额外加入到企业 CI/CD 工作流程中。DevSecOps 并没有取代现有的开发模式。相反,它通过在整个开发周期中增加一个安全层来扩展和补充这一模式。DevSecOps 是一种解决开发人员将安全检查和测试保留在项目后期阶段的方法——通常是在项目接近完成和部署阶段。
在后期阶段才进行安全检查会导致两种问题。安全缺陷可能在被发现之前已经进入已发布的软件,而在软件开发生命末期发现的安全问题比早期发现的问题需要更多的时间、资源和资金来补救。 越来越短的开发周期以及降低项目管理成本和商业风险的需要,使得安全左移成为众望所归的方法。如果将项目进度想象成从左到右排列的时间线,那么左移意味着将安全检查移到项目的开始阶段。安全及其他操作上的考虑越往左移,它们就越有可能被纳入产品的设计和搭建之中。DevSecOps 的目标是在设计、构建、测试和部署软件的过程中,开发人员对安全问题的重视不亚于其他主要的软件特性。 当完全实现 DevSecOps 时,它将会带来以下好处: 为企业、客户及用户降低安全风险 在产品生命周期早期发现软件的安全缺陷及漏洞 更快修复安全问题 改善开发、安全和运维团队之间的沟通和协作方式 整体代码质量更好 然而,直接将安全纳入现有的敏捷开发流程中可能会带来一些弊端: 改变现有工作流程,可能会出现瓶颈 开发和安全团队都需要额外的培训以补充专业 知识 由于沟通不畅或为了达成零漏洞的目标而导致开发工作流程中断
创建现代化的 DevSecOps 框架
由于DevSecOps是对现有软件开发实践的扩展或增强,因此最简单的做法是从敏捷的角度考虑DevSecOps框架,以此来进行规划、编写代码、测试、部署和持续运维。 规划和设计 DevSecOps 在软件开发生命周期的早期阶段开始,通常是设计或规划阶段。例如,安全问题会影响 Sprint planning 期间的目标设置。DevSecOps 框架通过以下方式将安全目标引入规划阶段: 建立代码标准并进行同行评审。当开发者以不同的方式编写各部分代码时,安全缺陷可能进入产品中。一个团队如果建立并执行一套一以贯之的代码标准,并依据此套标准评估代码库,可以在极大程度上防止漏洞引入。同行评审可以确保代码确实符合标准并且能够发现常见的编程错误。 在IDE环境中使用安全插件。IDE是可扩展的平台,通常可以安装各类安全插件以检查代码中潜在的漏洞,就像 IDE 可以标注出缺少的标点符号或语法错误一样。基于 IDE 的安全检查会在开发者向代码库进行提交之前为他们提供静态代码分析。进行威胁模型分析。威胁建模鼓励开发者像黑客一样对待一个应用程序。开发人员应该考虑到程序会被滥用的潜在风险,同时应该在程序目标设置中考虑到防止滥用的方法。常见的威胁模型分析方法包括STRIDE、DREAD和OWASP。多种威胁模型可以结合起来,以加强设计的安全性。
写代码及代码管理 DevSecOps 不仅仅指有安全意识的代码标准和同行评审。同时还意味着将安全置于代码库管理和维护的中心,以避免引入漏洞。确保代码提交和管理的安全的常用技术包括: 管理依赖项的安全性。外部库、开源代码及重复使用的模块在软件开发中很常见。然而,外部代码可能并不遵循与企业内部工作流程一致的安全标准和防范措施。开发者应该检查所有依赖项的安全性,验证他们是否是官方发布的真实版本并安全地交付。 扫描代码和代码仓库。代码仓库扫描工具可以在构建执行前对提交到仓库的代码进行静态分析,检查是否存在漏洞、...点击查看剩余70%