在过去十年里我们见证了越来越多的企业开始或已经采用云技术,这也意味着云安全的重要性也越来越高。当谈及安全威胁,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 实践,来了解其是否运作良好以及是否需要进行更改。

DevSecOps 安全即代码基础指南的更多相关文章

  1. Linux命令之Nano基础指南

    Nano基础指南 1.  Nano基础 目的 这是篇nano简明使用指南,帮助你快速了解nano的基本用法.如想获取更多的帮助信息,请参阅: http://www.nano-editor.org 打开 ...

  2. 《Google 代码风格指南》

    <Google 代码风格指南> https://github.com/google/styleguide

  3. python的PEP8 代码风格指南

    PEP8 代码风格指南 这篇文章原文实际上来自于这里:https://www.python.org/dev/peps/pep-0008/ 知识点 代码排版 字符串引号 表达式和语句中的空格 注释 版本 ...

  4. python代码风格指南:pep8 中文版

    本文档所提供的编码规范,适用于主要的Python发行版中组成标准库的Python代码.请参阅PEP关于Python的C实现的C编码风格指南的描述. 本文档和PEP257(文档字符串规范)改编自Guid ...

  5. C++代码风格指南总结

    C++代码风格指南 代码风格的重要性 今天我收到thougthwork笔试没过的消息, 心里确实很难受, 然后师兄说我代码写得很糟糕 细想一下, 我写代码确实是随心所欲, 并没有遵循什么规范; 所以现 ...

  6. PEP 8 - Python代码样式指南

    PEP 8 - Python代码样式指南 PEP: 8 标题: Python代码风格指南 作者: Guido van Rossum <python.org上的guido>,Barry Wa ...

  7. Android逆向-java代码基础

    作者:I春秋作家——HAI_ 0×00 前言 看这篇可以先看看之前的文章,进行一个了解.Android逆向-java代码基础(1)Android逆向-java代码基础(2) 之前看到有大佬用smali ...

  8. Google JavaScript代码风格指南

    Google JavaScript代码风格指南 修正版本 2.28 Aaron Whyte Bob Jervis Dan Pupius Eric Arvidsson Fritz Schneider R ...

  9. 003-Python3-基础语法-运行方式、代码基础要求、运算符[算数运算符、比较运算符、赋值运算符、位运算符、逻辑运算符、成员运算符、身份运算符]、运算符优先级

    一.基础语法 参看地址:https://www.runoob.com/python3/python3-tutorial.html 1.1.运行方式 1.文件方式 编写一个hello.py文件, pri ...

  10. 大神的JS代码风格指南

    js代码风格指南:1.缩进使用空格,不要用制表符2.必须用分号3.暂时不用ES6(modules)例如export和import命令4.不鼓励(不禁止)水平对齐5.少用var 都应该使用const或者 ...

随机推荐

  1. 词!自然语言处理之词全解和Python实战!

    本文全面探讨了词在自然语言处理(NLP)中的多维角色.从词的基础概念.形态和词性,到词语处理技术如规范化.切分和词性还原,文章深入解析了每一个环节的技术细节和应用背景.特别关注了词在多语言环境和具体N ...

  2. 前端本地导出文件 导出txt sql (简版版的字符串案例)

    1.首页明确要导出的根据 一般有图片 excel  文字.针对不同的文件类型 配置不同的参数 2.知识点 Blob          URL.createObjectUrl new Blob( arr ...

  3. [NOIP 考前备战] 线段树刷题

    备战线段树 T1 AcWing .1275. 最大数 查询最大值 + 单点修改 #include <bits/stdc++.h> #define int long long using n ...

  4. 四载磨砺,一群青年“识瘤者”以AI助力医疗创新

    ​​本文分享自华为云社区<[先锋开发者云上说]四载磨砺,一群青年"识瘤者"以AI助力医疗创新>,作者:Gauss松鼠会小助手2 . 一群青年"识瘤者" ...

  5. Linux中execl函数详解与日常应用!

    Linux中execl函数详解与日常应用 execl是Linux系统中的一个系统调用,用于执行指定路径下的可执行文件.本文将详细介绍execl函数的使用方法和参数含义,并探讨其在日常开发中的常见应用场 ...

  6. 浅析MySQL代价模型:告别盲目使用EXPLAIN,提前预知索引优化策略

    背景 在 MySQL 中,当我们为表创建了一个或多个索引后,通常需要在索引定义完成后,根据具体的数据情况执行 EXPLAIN 命令,才能观察到数据库实际使用哪个索引.是否使用索引.这使得我们在添加新索 ...

  7. 关于C#反射概念,附带案例!

    反射 C#中的反射是一种使程序在运行时能够动态地获取类型信息并调用其成员的技术.通过反射,程序可以在运行时进行类型的动态加载.创建对象.调用方法和属性,以及访问和修改字段等.反射可以使程序更加灵活,但 ...

  8. C++学习笔记三:变量与数据类型(浮点型)

    1. 数据类型与所占内存大小 类型 大小 精度 注意 float 4 7   double 8 15 默认 long double 16 >double   精度就是有效数字. 2. 声明和初始 ...

  9. teleport 服务端配置文件说明

    teleport 服务端配置文件说明 teleport配置文件位于/usr/local/teleport/data/etc目录下.服务器端包含两个配置文件: core.ini 和 web.ini,其中 ...

  10. 华企盾DSC客户端图标不显示常见处理方法

    1.检查是否启用了360桌面.猎豹桌面之类的(兼容腾讯桌面),打强制显示客户端图标的补丁 2.是否被杀毒软件查杀 3.用Autoruns查看explorer项图标那一栏前10个是否有我们图标没有的话把 ...