在过去十年里我们见证了越来越多的企业开始或已经采用云技术,这也意味着云安全的重要性也越来越高。当谈及安全威胁,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. 基于jquery+html开发的json格式校验工具

    json简介 JSON是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Programming Language, Standard ECMA-2 ...

  2. shell脚本之语句(条件、循环)

    条件语句 1.测试 使用[]时要使用空格,注意格式  格式1:test 条件表达式  格式2:[ 条件表达式 ]#注意空格  注意[]空格,否则会失败  测试 是否成功使用 $?返回值来判断  [ 操 ...

  3. 7/10 luoguRound 10 庆典 div3T1

    #include<bits/stdc++.h> using namespace std; int m,n,x; int arr[100005]; int maxi = -1,maxn = ...

  4. testre

    f5看到关键代码判断 猜测这是flag或者是加密后的结果,直接将其当作flag答案不对,所以猜测为加密后的结果,然后再通过其他函数了解 跟进第一个函数发现编码表 本来想试试base解密,可是当时只试了 ...

  5. 《最新出炉》系列初窥篇-Python+Playwright自动化测试-31-JavaScript的调用执行-上篇

    1.简介 在做web自动化时,有些情况playwright的api无法完成以及无法应对,需要通过或者借助第三方手段比如js来完成实现,比如:去改变某些元素对象的属性或者进行一些特殊的操作,本文讲解pl ...

  6. javaweb项目搭建|前端项目【包含增删改查,mysql】二

    首先,新建一个javaweb项目[前提已经下载tomcat,mysql,此实验idea版本为2022,其他版本可能位置不一样] File->New->Project 起一个项目名称(随便起 ...

  7. Spring优雅关闭之:ShutDownHook

    转载自:https://blog.csdn.net/qq_26323323/article/details/89814410 2020/02/26重新编辑一下 前面介绍ShutDownHook的基本使 ...

  8. [ARC168E] Subsegments with Large Sums

    题目链接 看到严格选 \(k\) 个,不难想到 WQS二分.定义 \(f(x)\) 为分成 \(x\) 段,最多有多少个超过 \(S\) 的.然后你会发现他不是凸的.因为他有很多平段,比如把两个很小的 ...

  9. [ABC318G] Typical Path Problem

    Problem Statement You are given a simple connected undirected graph $G$ with $N$ vertices and $M$ ed ...

  10. 阿里云AnalyticDB基于Flink CDC+Hudi实现多表全增量入湖实践

    湖仓一体(LakeHouse)是大数据领域的重要发展方向,提供了流批一体和湖仓结合的新场景.阿里云AnalyticDB for MySQL基于 Apache Hudi 构建了新一代的湖仓平台,提供日志 ...