当前位置: 首页 > news >正文

DevSecOps 安全即代码基础指南

在过去十年里我们见证了越来越多的企业开始或已经采用云技术,这也意味着云安全的重要性也越来越高。当谈及安全威胁,McKinsey 的一篇文章表明,云上大多数漏洞都是由于配置错误导致而非外部攻击造成底层云基础设施损坏。因此,从开发初期就拥有正确安全配置比构建一个安全独立的系统更靠谱、更有效。而实现这的最好方式就是安全即代码(Security as Code)。

什么是安全即代码 (SaC)

安全即代码(SaC)就是在软件开发的早期阶段将安全融入 DevOps 工具中,使其成为工作流程的重要组成部分。这能够帮助开发人员更早识别代码中易受攻击的部分,并引入相应的安全措施来规避相应安全风险。由于安全即代码在开发工作开始时已经在流程中发挥作用,因此企业无需将开发和安全分离,这也有助于企业提高开发效率。因为将安全融入到开发过程中,从而产生了 DevSecOps。

SaC 与持续交付

持续交付(Continuous Delivery)是在短时间内将所有对软件所做的更改交付给用户的能力。因此,将安全嵌入此过程是非常必要的。实施 SaC 有很多好处,主要体现在以下三个方面:

  • 高效: SaC 通过消除人工干预造成的问题改进了软件开发过程,它进一步加快了流程,由于安全已嵌入开发过程中,实现了无缝的安全工作流程。

  • 降低风险: 由于软件开发是一个广泛的过程,因此安全控制是整个软件开发生命周期 (SLDC) 要考虑的一个十分重要且相当困难的问题。这就是为什么通过 SaC 将安全嵌入开发阶段可以降低泄露风险的原因。

  • 业务支持: 云架构是大多数企业及其运营的核心。良好的云安全是加速软件和部署过程的核心。这就是 SaC 的用武之地,它可以帮助企业在不影响安全性的情况下有效地将其应用程序推向市场。

为什么 SaC 对 DevSecOps 很重要

SaC 的目的是为了让安全人员和开发人员达成同频共识。开发人员能够在开发过程中展示开发结果,同时也允许他们在开发过程中纠正问题,这种交流有助于形成一个持续的反馈循环。

通过 SaC,开发人员可以在安全和低影响故障的环境中测试所有新的代码,还可以将自动化安全扫描和测试集成在开发过程中,以便后期在所有项目中重复使用。通过将安全扫描集成到开发人员现有的工具和流程中,把安全注入开发过程,能够有效降低部署时间且保证开发过程不会中断。此外,SaC 还能够帮助开发人员识别漏洞。需要注意的是,开发人员需要接受相应的安全培训和教育才能够在发现漏洞后进行相应的修复工作。

SaC 的 7 个要素

DevOps 的目标是在不影响安全性的情况下尽快完成应用程序开发并交付,而通过 DevSecOps 将安全嵌入流程中能帮助实现安全开发高效交付。让我们看看在实施 SaC 时要注意的 7 个要素。

1. 定义安全要求

在开发开始时有预定义的安全要求(predefined security requirements)十分重要。比如 OWASP (Open Web Application Security Project)主动控制这样的安全模型应该在开发阶段实施,开发人员就能在开发过程中有规范的安全实践进行参照。

2. 检查代码依赖

在开发和构建应用程序时,代码之间必然会有错综复杂的依赖关系。依赖关系图(dependency graph)能够帮助开发人员深入了解代码库的每个部分,以及不同组件如何协同工作,帮助开发人员更好地识别和修复相应问题。

3. 为代码选择正确的安全工具

将安全工具集成到 SLDC 时需要考虑两个问题:安全工具集成到开发流水线的难易程度是怎样的? 这些工具如何能最好地帮助开发和安全团队无缝协作?安全工具的集成和功能必须是自动化的,这样开发人员就不需要花费额外的时间来启动扫描并验证其发现。安全工具还必须提供速度和准确性,确保不会出现误报。最后,安全工具应该能够实时识别、修复和防御漏洞,同时也能够解决开源中的风险。

4. 建立 DevSecOps 文化

由于开发和安全都是业务驱动,因此双方必须在建立和维护 DevSecOps 文化的同时承担共同的责任。建立良好的 DevSecOps 文化最重要的部分是相互尊重。安全和开发必须尊重彼此的工作,并齐心协力无缝工作。安全工具必须也是开发工具,并应根据必要的目的和要求进行集成。

5. 自动化安全测试

在开发期间的任何安全测试需要自动化,以匹配快节奏的 DevOps 环境。由于开发过程中不断有新的代码注入,安全控制十分必要,因此使用自动化安全测试工具在整个 SDLC 中不可或缺。这样有助于提供自动安全分析,帮助开发人员优先考虑首先修复哪些代码问题。

6. 进行威胁建模

威胁建模是一个可以识别安全要求和威胁的过程。它有助于衡量应对威胁所需的安全工作,并确定相应补救措施的优先级顺序。威胁建模通过识别应用程序设计中的缺陷来加强组织的安全架构,它有助于评估新的攻击形式。因此,在开发过程开始之前进行威胁建模是关键的。

7. 定期检查代码安全实践

企业的安全框架不仅有助于安全策略的实施,还有助于制定定期评估会议,以测试所实施策略是否有效。定期审查 SaC 实践,来了解其是否运作良好以及是否需要进行更改。

相关文章:

  • js字符串对比之localeCompare()方法-对字符串进行排序——大于0-升序、小于0-降序 对el-table的列进行排序sort-change
  • Vue开发环境安装
  • springboot小型命题系统毕业设计源码011508
  • 61-70==c++知识点
  • 一文快速上手 Nacos 注册中心+配置中心!
  • 云扩RPA携手中联教育引领财务机器人教学创新
  • 入阿里P6?最少啃完这本阿里最新Java多线程编程手册,建议收藏
  • 【毕业设计】深度学习人脸表情识别系统 - python OpenCV
  • 基于HTML仿华为手机网站电商项目的设计与实现
  • 【Java基础】方法重写、修饰符、权限修饰符及final、static关键字
  • 【C++】之const
  • Stream 的使用,我觉得使用它是非常方便的
  • Tomcat安装及配置教程
  • 图像也是一门语言?微软提出19亿参数的超大通用模型BEIT-3,刷榜多个CV和多模态任务!
  • 如何利用博途PLC PID_Compact 进行PID闭环仿真(一阶对象传递函数)
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • httpie使用详解
  • mysql外键的使用
  • SpriteKit 技巧之添加背景图片
  • 欢迎参加第二届中国游戏开发者大会
  • 一个JAVA程序员成长之路分享
  • 原生 js 实现移动端 Touch 滑动反弹
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • # Maven错误Error executing Maven
  • (4)(4.6) Triducer
  • (HAL库版)freeRTOS移植STMF103
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (二开)Flink 修改源码拓展 SQL 语法
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (算法设计与分析)第一章算法概述-习题
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (转)c++ std::pair 与 std::make
  • (轉貼) UML中文FAQ (OO) (UML)
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .NET C#版本和.NET版本以及VS版本的对应关系
  • .Net Core缓存组件(MemoryCache)源码解析
  • .NET Project Open Day(2011.11.13)
  • .NET 反射 Reflect
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • .net反编译工具
  • [ C++ ] STL---stack与queue
  • [<死锁专题>]
  • [20180129]bash显示path环境变量.txt
  • [2669]2-2 Time类的定义
  • [AMQP Connection 127.0.0.1:5672] An unexpected connection driver error occured
  • [Android] Android ActivityManager