不同学科如何合并以提高效率是一件令人兴奋的事情。2009年,DevOps被创造出来,以解决开发和运维团队之间的摩擦。结果,行业朝着合并这两个团队的方向发展,使开发团队负责整个周期,从编写代码到生产部署。当然,谁会比开发它们的人更了解复杂性呢?
在这种转变之后,我们看到功能被迅速交付,新功能的上市时间也迅速缩短。DevOps也为许多其他实践奠定了基础,如MLOps、DataOps、GitOps,毫无疑问还有许多其他实践涌现。
今天我们将讨论一个你们许多人可能熟悉的实践,即称为DevSecOps(开发安全运维)。那么,什么是DevSecOps?
传统上将安全视为事后才考虑的问题,团队首先将功能发布到生产环境,然后在安全审查或事件发生后急忙部署安全修复措施。随着网络安全、供应链和其他复杂攻击的激增,行业迅速意识到,与开发和运维一样,安全也应该成为流程的一部分。它应尽早嵌入到开发生命周期中,因为后期处理安全问题可能是昂贵的(无论是从架构还是运维的角度来看)。
现在,让我们讨论如何将其应用到我们开发生命周期的各个阶段,以确保我们发布的代码不仅高效,而且安全。
通常,发布一个功能的过程包括:
- 开发 – 在此阶段,功能被构建
- 分发 – 在此阶段,创建和准备交付物品
- 部署 – 在此阶段,功能被发布 到生产环境中
让我们讨论在开发阶段我们可以采取哪些步骤来增强我们正在构建的功能的安全性姿态。
在开发阶段,一个功能经历设计审查、编码,然后是拉取请求审查。作为设计审查的一部分,功能所有者讨论API合同的外观,我们使用的数据库类型,索引,缓存策略,用户体验等等(并非详尽列表)。在安全优先的文化中,执行威胁建模也很重要。
执行威胁建模
简单来说,威胁建模 是”识别漏洞、进行风险评估并实施推荐的缓解措施,以确保产品/组织的安全状态不受损害。”
让我们举个例子来理解。假设您正在开发一个 API,该 API:
- 列出产品目录中的产品。
- 搜索产品或产品类型。
GET /api/products?search=laptop
威胁模型可能如下所示:
functionality | vulnerability | risk assessment | recommended mitigation |
---|---|---|---|
未经身份验证的用户可以搜索产品 | 威胁行为者可以执行分布式拒绝服务 (DDoS) 攻击,使数据库和 API 基础设施不堪重负 | 高 – 可导致服务中断并降低可用性 | 使用 API 网关或速率限制器防止 DDoS 攻击。 |
用户输入搜索字段的查询字符串 | 可能执行像插入”1=1″这样的 SQL 注入攻击 | 高 – 攻击者可以删除生产表 | 确保对输入进行适当验证/净化。 |
用户接收产品详情 | 暴露内部字段,如数据库ID、状态代码和版本号,可能会让攻击者获取关于数据库或底层系统结构的关键信息。 | 中度风险 – 攻击者可以利用这些内部实现执行诸如信息收集等攻击。 | 只发送用户所需的细节。 |
这些是我们在查看产品端点时可以考虑的事情。最好的部分是,您不需要是安全专家也能识别这些漏洞。
像微软威胁建模工具和OWASP威胁龙这样的工具可以帮助识别它们。
微软威胁建模工具中的威胁模型示例
分析视图
威胁建模工具的分析视图显示了API可能遭受的不同攻击。
与团队一起审查威胁模型可以作为一个头脑风暴会议,以识别和尽可能减轻许多安全漏洞。
- 弱加密使用。例如,使用SHA1或MD5被认为是不安全的。CA530 是C#在代码中使用任何弱哈希函数时创建的警告示例。
- SQL注入攻击。 CA2100 是检查代码是否容易受到任何注入攻击的示例
- 硬编码 密码,弱身份验证和授权机制,以及 基础设施配置错误 也可以通过静态分析器检测。。
这个领域中也有现有的工具。SonarQube、CodeQL、Roslyn Analyzer、OWASP 依赖检查和 Snyk 在这个领域有一些很棒的产品。
将静态分析集成到构建管道中也是重要的。它提供了以下优势:
- 为您的开发人员提供一致的漏洞检测体验。
- 改善您服务的安全态势,因为每个生产部署都必须经过这些步骤。
从安全角度进行代码审查
虽然代码审查传统上专注于识别错误和确保最佳实践,但从安全角度评估它也很重要。 通过考虑每个拉取请求的安全影响,您可以主动防止未来的威胁并保护应用程序的完整性。结论
总之,随着网络安全领域的日益复杂,重要的是考虑安全问题 在早期阶段,而不是将其留到最后。作为其中的一部分, 将威胁建模和自动静态分析纳入 到您的常规开发周期中。
在接下来的文章中,我们将讨论在分发过程中可以纳入哪些安全实践,包括扫描容器镜像、动态应用安全测试(DAST)和制品签名,以保护服务免受供应链攻击。
Source:
https://dzone.com/articles/building-security-into-design-phase