顾名思义,DevSecOps是DevOps(链接)概念的延续,为应对安全漏洞日益严重的当下DevOps可能存在的安全问题而提出,旨在最大程度减少软件开发全生命周期(Software Development Life Cycle,SDLC)中的产品漏洞,以避免安全问题可能导致的经济与法律问题。

安全“左移”
在软件复杂度高速增加的大趋势下,避免安全漏洞成为了棘手的难题。即便在舍弃传统瀑布式线性开发、避免冗长测试报告过于拖进度而采用DevOps的情况下,开发团队与运维团队的界限已被打破,但安全问题往往仍处于被忽视的状态。
测试“左移”是广为人知的凭借更早执行测试任务提高产品质量、缩短SDLC的概念,DevSecOps可同样理解为安全“左移”。DevSecOps强调从软件构建起就注重安全性,并将安全检查部署至CI/CD流水线(点击查看详情)的每个自动化测试步骤中,比起传统在研发完成后才确认安全性更易实践,也更符合软件安全性要求。
Security as Code:安全即代码
对外行而言,实现安全“左移”只需在CI/CD流水线中设置一处安全需求限制即可,但此解决方式或因实施时间太久而被忽略,或将导致流水线整体陷入停滞、产品发布无限期推迟,DevOps最关键的团队凝聚力也将因此受损。
安全“左移”暂时没有放之四海而皆准的可供实践的解决方案,但以下观点和技术将能确保一定程度上的SDLC集成安全。
1. 指定安全专员
通过知会让开发团队对软件安全负责是远远不够的,而且掌握最新的安全漏洞、攻击媒介及恶意插件并非易事,让全员具备同样水平是既不必要也不现实的。指定一位安全专员全职负责此类事项,通过分享最佳实践来指导团队将有助于建立企业安全合作文化。
2. 让安全成为约束
将安全设定为审查会议的核查项,在增加新功能前先讨论其可能带来的安全风险及其解决方案,使安全成为每位开发人员的责任。可采用如STRIDE、OWASP等寻找潜在威胁并建立对抗的威胁建模策略来推动DevSecOps文化落地。
3. 添加自动化安全测试
自动化是DevOps的核心所在,可在编写自动化单元测试、集成测试、端到端测试时将安全视作必要条件。添加自动化安全测试可使安全自然而然地贯穿SDLC始终。
4. 使用专业工具
除了执行自行编写的测试用例,测试人员还可利用各种专为自动化设计的安全测试工具。静态应用程序安全测试(Static Application Security Testing,SAST)工具可通过静态代码分析检查源代码安全漏洞,如缓冲区溢出、SQL(Structured Query Language,结构化查询语言数据库)注入。由于SAST工具存在语言限制,测试人员可在集成开发环境(Integrated Development Environment,IDE)中按需运行测试,更快修复问题,同时也可设置特定警报驳回以避免误报。
动态应用程序安全测试(Dynamic Application Security Testing,DAST)工具独立于应用程序的代码细节,是外部的漏洞扫描程序,可通过黑盒测试检查跨站点脚本、命令及SQL注入。DAST工具需要部署至测试环境进行使用,因此往往被使用于CI/CD流水线后期。

5. 检查依赖项
几乎每个代码库都包含开源库和其他组件,处处都存在安全漏洞的可能。软件成分分析(Software Composition Analysis,SCA)工具可在CI/CD流水线早期运行自动化安全测试,保障开源组件和代码库的可见性,帮助企业管理组件安全、规避许可证相关风险。
SCA工具可以生成开源组件的全面列表,包括从应用程序构建阶段解析到项目的任何依赖项,输出开源组件的版本、来源、文件路径等基本信息,还可作为IDE插件即时提供反馈。
6. 设置“红队”
可参考战争游戏中的“红队”概念,将部分开发人员划分为“红队”,不参与被测系统的开发,跳出既有测试框架,在与生产环境尽可能类似的暂存环境中以非预期的方式使用软件,以便找出软件可能存在的弱点。
7. 对安全问题与错误一视同仁
DevSecOps需要每位成员都对安全性负责,将安全漏洞与Bug同等对待,有助于提升团队的专业知识,在更多项目中受益。
8. 保持关注
为降低随时可能发生的黑客攻击而毁掉先前所有努力的风险,可应用新型应用安全保护技术——运行时应用程序自我保护(Runtime Application Self Protection,RASP),使程序具备自我监控能力并识别有害输入及行为,以便运维人员立即响应和进行及时处理。
DevSecOps:如何应用
DevOps的应用意味着SDLC将频繁迭代,而将安全纳入CI/CD流水线则意味着应用程序安全的反馈将与软件状况反馈一样易于获取,可像改进其他功能一样改进安全设置,通过检查和防范安全漏洞让软件保持足够的安全性。
最后,DevSecOps与DevOps一样,需要团队文化的渲染与配合,其关键在于营造责任共担的安全合作文化,每位团队成员都应对安全的重要性有着明确认知及责任意识。
传统嵌入式软件的DevSecOps实践,往往由于其过分依赖硬件而难以深入,可使用SkyEye作为辅助工具进行推进。SkyEye,中文全称天目全数字实时仿真软件(点击查看详情),是基于可视化建模的硬件行为级仿真平台,支持用户通过拖拽的方式对硬件进行行为级别的仿真和建模,使嵌入式软件可以不加修改地在PC机上运行。其内置的自动化测试脚本,可以在每个代码提交节点触发持续集成工作流进行安全性测试,是实践嵌入式DevSecOps的最佳拍档。
参考链接
https://www.jetbrains.com/teamcity/ci-cd-guide/what-is-devsecops/
原文链接:https://mp.weixin.qq.com/s/XeF-XpFCO1LsyZGu5Z0_pg
我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A
在Ruby中是否有Gem或安全删除文件的方法?我想避免系统上可能不存在的外部程序。“安全删除”指的是覆盖文件内容。 最佳答案 如果您使用的是*nix,一个很好的方法是使用exec/open3/open4调用shred:`shred-fxuz#{filename}`http://www.gnu.org/s/coreutils/manual/html_node/shred-invocation.html检查这个类似的帖子:Writingafileshredderinpythonorruby?
Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功
我正在使用ruby2.1.0我有一个json文件。例如:test.json{"item":[{"apple":1},{"banana":2}]}用YAML.load加载这个文件安全吗?YAML.load(File.read('test.json'))我正在尝试加载一个json或yaml格式的文件。 最佳答案 YAML可以加载JSONYAML.load('{"something":"test","other":4}')=>{"something"=>"test","other"=>4}JSON将无法加载YAML。JSON.load("
默认情况下:回形针gem将所有附件存储在公共(public)目录中。出于安全原因,我不想将附件存储在公共(public)目录中,所以我将它们保存在应用程序根目录的uploads目录中:classPost我没有指定url选项,因为我不希望每个图像附件都有一个url。如果指定了url:那么拥有该url的任何人都可以访问该图像。这是不安全的。在user#show页面中:我想实际显示图像。如果我使用所有回形针默认设置,那么我可以这样做,因为图像将在公共(public)目录中并且图像将具有一个url:Someimage:看来,如果我将图像附件保存在公共(public)目录之外并且不指定url(同
我在一个ruby文件中有一个函数可以像这样写入一个文件File.open("myfile",'a'){|f|f.puts("#{sometext}")}这个函数在不同的线程中被调用,使得像上面这样的文件写入不是线程安全的。有谁知道如何以最简单的方式使这个文件写入线程安全?更多信息:如果重要的话,我正在使用rspec框架。 最佳答案 您可以通过File#flock给锁File.open("myfile",'a'){|f|f.flock(File::LOCK_EX)f.puts("#{sometext}")}
关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是偏离主题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,describetheproblem以及迄今为止为解决该问题所做的工作。关闭8年前。Improvethisquestion我需要实现具有各种灵活需求的密码安全。这些要求基本上取自Sanspasswordpolicy:Strongpasswordshavethefollowingcharacteristics:Containatleastthreeofthe
网站的日志分析,是seo优化不可忽视的一门功课,但网站越大,每天产生的日志就越大,大站一天都可以产生几个G的网站日志,如果光靠肉眼去分析,那可能看到猴年马月都看不完,因此借助网站日志分析工具去分析网站日志,那将会使网站日志分析工作变得更简单。下面推荐两款网站日志分析软件。第一款:逆火网站日志分析器逆火网站日志分析器是一款功能全面的网站服务器日志分析软件。通过分析网站的日志文件,不仅能够精准的知道网站的访问量、网站的访问来源,网站的广告点击,访客的地区统计,搜索引擎关键字查询等,还能够一次性分析多个网站的日志文件,让你轻松管理网站。逆火网站日志分析器下载地址:https://pan.baidu.
安全产品安全网关类防火墙Firewall防火墙防火墙主要用于边界安全防护的权限控制和安全域的划分。防火墙•信息安全的防护系统,依照特定的规则,允许或是限制传输的数据通过。防火墙是一个由软件和硬件设备组合而成,在内外网之间、专网与公网之间的界面上构成的保护屏障。下一代防火墙•下一代防火墙,NextGenerationFirewall,简称NGFirewall,是一款可以全面应对应用层威胁的高性能防火墙,提供网络层应用层一体化安全防护。生产厂家•联想网御、CheckPoint、深信服、网康、天融信、华为、H3C等防火墙部署部署于内、外网编辑额,用于权限访问控制和安全域划分。UTM统一威胁管理(Un
我尝试使用Net::HTTP向Twitter发送GET请求(出于隐私原因替换了用户ID):url=URI.parse("http://api.twitter.com/1/friends/ids.json?user_id=12345")resp=Net::HTTP.get_response(url)这会在Net::HTTP中引发异常:NoMethodError:undefinedmethodempty?'for#from/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:1