如何以代码的形式提供安全性:11个入门提示

发布者:上海IT外包来源:http://www.lanmon.net点击数:1203

今天,作为代码和安全设计的安全性是会议的热门术语。但这些短语到底意味着什么,你怎么能开始在你的组织中采用它们?
正如Grupo Banco Santander安全研究主管Daniel Cuthbert在“为开发人员召唤武器:以安全为代码进行革命”中写道:
现在是时候把精力集中在防御 - 而不是攻击 - 并让那些能有所作为的人成为英雄:开发者。
Jim Bird是BIDS Trading Technologies的首席技术官,他是一位在金融服务技术方面拥有20多年经验的软件和项目经理,在O'Reilly的报告中写道:

代码的安全性是关于在DevOps工具和实践中构建安全性,使其成为工具链和工作流的重要组成部分。您可以通过绘制如何更改代码和基础结构以及查找添加安全检查和测试和门的位置来实现此目的,而不会引入不必要的成本或延迟。

- 吉姆伯德


那么您的团队如何从概念转变为行动?有11个提示可以帮助您入门。
1.理解'安全SDLC'的含义
了解安全软件开发生命周期(SDLC)将帮助您评估如何在特定的DevOps情况下构建安全性。您可以犯的最大错误是尝试在不知道它是什么的情况下强制执行安全性。
该主题的权威来源是OWASP Secure SDLC备忘单;虽然它仍处于草案模式,但它提供了一个很好的概述。下图显示了在开发周期的每个步骤中发生的活动。
Application Security如何以代码的形式提供安全性:11入门提示
显示“向左移动”的箭头说明了通过实施安全实践尽早嵌入安全性的概念,如下面进一步定义的那样。图片由OWASP提供。
2.使用SAMM评估您的情况
软件保障成熟度模型(SAMM)是一个开放式框架,可帮助组织开发和实施针对组织面临的特定风险量身定制的软件安全策略。但是,有些人认为这个框架实施起来很复杂。
在您的组织充分掌握SAMM之前,这些问题将帮助您快速评估DevOps流程的安全组件:要求:您是否正在收集特定于您正在构建的软件的安全和隐私要求?
设计:您是否在每个sprint上建模威胁?
开发:您使用静态分析和代码审查吗?
测试:您是否使用动态分析和安全测试来验证安全要求?
部署:您是否计划使用笔测试评估最终版本或使用错误奖励计划进行风险评估?
如果您的大部分答案都没有,那么您处于实施安全性的早期阶段 - 换句话说,您的DevSecOps工作处于非常低的成熟度级别。
许多组织将他们的安全工作集中在周期的最后阶段,并在笔测试后进行部署。不幸的是,如果您发现一个主要漏洞,这种方法的成本最高。而且一个很大的风险是笔测试可能无法检测到确实存在的任何重大问题。
相反,“左移”运动越来越注重从一开始就嵌入安全性,降低成本,降低风险。
3.注意DevOps中固有的安全挑战
DevOps是嵌入安全性的一个具有挑战性的过程。例如,考虑到诸如“最小权限”之类的安全原则,开发人员可以访问生产环境并进行任何更改。这与大多数最佳实践安全概念相矛盾,但是当安全性作为代码存在时,它仍然希望嵌入安全性。
安全性不能成为业务的障碍,但有必要在没有安全性的情况下在安全开发和敏捷之间找到平衡点。
4.尽快将安全性作为代码实施
在敏捷冲刺期间嵌入安全性应该是完美无缺且几乎是自动的。这是理想的情况,但很难做到正确。
另一种方法是在此过程中尽可能自动化,包括应该可用的特定安全DevOps管道。团队中的每个人都应该保持一致并坚持这些想法。
5.早期威胁模型
在sprint开始之前至少一天计划威胁建模会话。所有潜在的问题和风险应该成为安全故事的一部分。
6.尽早定义安全要求
确保在sprint开始时定义安全性要求,包括威胁建模问题。 (提示:使用OWASP ASVS 2.0来支持此过程。)
创建安全请求安全性故事并将其添加到sprint backlog。
在sprint定义期间,计算实现和创建测试用例以解决这些安全性故事/任务所需的工作量。 (提示:使用OWASP测试指南。)
在开发阶段使用OWASP Active Controls,并确保在每个sprint期间这些控件成为例行任务。
7.使用SAST/DAST工具
在构建过程中插入静态和动态分析工具(SAST/DAST)。从这些扫描中获取常规sprint错误的结果。这应该在清理任务之后完成,例如以确保消除尽可能多的误报。
如果代码变化太大,您可能会重新考虑如何应用SAST,因为当代码发生很大变化时会有很多误报。
如果您的组织无法负担付费工具,请查看开源替代方案,例如OWASP依赖项检查,以至少找到易受攻击的组件。
8.尽可能执行代码审查
一项任务是执行代码审查作为sprint的一部分。在sprint结束时,此处发现的任何问题都将成为错误。
9.衡量风险并确定优先顺序
产品所有者 - 或在决策中履行指定角色的人员 - 应具有适当的安全背景,以便了解问题并优先处理需要高度关注的问题。
10.准备安全代码主干
应该使用代码手动完成对环境的任何更改(QA/UAT/PROD)。对配置的所有更改都应通过代码,使用源存储库并跟踪所有更改。这可以使用任何流行的构建,源代码和部署工具来完成。这是代码安全概念的支柱。
在整个过程中,DevOps管道应关注嵌入自动化持续交付流程中的活动。以下是需要关注的事项:
所有环境中的配置更改都应该由源控制和同行评审。
构建过程应该是自动化和集成的。
在考虑安全性的情况下,请仔细检查容器的配置。
应将SAST工具集成到构建过程中,并将发现的问题反馈到sprint中。
11.定期评估,冲洗和重复
举行SAMM评估会议以检查实施安全性的完整性,并创建特定的短期任务以实现此目标。一步一步是关键。
向左移动可以帮助您保持领先
与开发人员部署应用程序或发布应用程序后相比,向左移动的组织更有效地发现缺陷,修复损失并降低成本。
但快速交付的压力使设计安全性变得更加困难。 DevOps团队负责在短时间内验证安全要求。 “作为代码的安全性”在此可以发挥重要作用,因为它有助于自动化安全部署过程,使过程更容易,更快捷。
IT外包
>
400-635-8089
立即
咨询
电话咨询
服务热线
400-635-8089
微信咨询
微信咨询
微信咨询
公众号
公众号
公众号
返回顶部