开发运维安全(或称 DevSecOps)是一种在软件开发生命周期 (SDLC) 每个阶段优先落实安全流程的开发方法。
DevSecOps 将安全责任分散并共享给相关的开发、运营及安全团队。
强化开发运维安全的需求源于网络威胁无处不在的现状,这已成为当前环境的基本特征。盗窃与破坏并非人类行为的新元素,唯有被窃取的物资类型和实施犯罪的手段得到了更新。现代网络罪犯觊觎的不再是黄金财宝,而是价值连城的数据缓存,并通过电子盗窃实施犯罪。
此类犯罪分子已极度擅长利用软件系统各层级及各开发阶段的网络安全漏洞,因此前瞻性企业正着力在开发各阶段强化安全状况。DevSecOps 全面支持这一使命,致力于应对数据泄露等安全挑战,消除潜藏在开发流程各环节的安全隐患。
DevSecOps 的兴起标志着企业安全观念的转变。曾几何时,众多组织将开发运维安全视为事后补救措施。安全检测往往与 SDLC 末期的其他最终检查一并实施。这种做法容易形成信息孤岛,隐藏安全漏洞,而最终所需进行的修正成本,远高于在早期发现并修复时的代价。
此类陈旧观念依然存在,但对于大多数企业而言,开发运维安全已取得显著进步。DevSecOps 充分认识到软件开发团队当前面临各类威胁的高度复杂性,致力于在开发早期阶段处理网络安全问题,并将安全风险应对责任分散给多数或全部相关团队成员共同承担。
这种在项目早期阶段即强化安全性的概念被称为“左移”。该术语假设观察者正在审视从左至右的生产时间轴。 实施 左移测试 意味着在图表左端 (即项目启动阶段)就集成强化测试。
建立并确保安全性,需要诸多环节和不同实践方法协调运作。
定义软件行为规范的任务由既定的 DevSecOps 框架承担。框架提供与最佳实践、相关流程及安全工具相关的信息。它们还阐明如何将安全性集成到每个开发阶段,以及不同软件组件或系统之间存在哪些依赖关系。这有助于实施漏洞管理并保护生产环境。
在配置管理系统工程过程中,重点在于确保产品属性在其整个生命周期内保持一致。若非软件系统需要持续吸收大量变更,配置管理便无存在必要。配置管理能确保系统在经历变更后仍按设计运行。
漏洞管理并非盲目认定企业软件处于安全状态,而是预设其可能存在安全隐患,并易受各类安全漏洞影响。这是一种高度主动的防御策略,其基础是通过对代码库进行漏洞扫描来识别潜在漏洞,随后在网络犯罪分子利用这些漏洞之前采取修复措施。
密钥管理是另一相关学科,致力于解决持续存在的敏感信息安全需求。顾名思义,密钥管理帮助用户存储并管理密码、加密密钥(用于保护数据的密码)以及应用程序与程序编程接口 (API) 交互时所需的授权密钥等敏感数据。
云环境通常是数据高度密集的存储库,因此需要 DevSecOps 提供的额外保护。云原生应用必须能快速启动,而 DevSecOps 通过确保这些应用在快速开发周期中平稳运行来提供支持。开发运维安全还能保护工作负载免遭配置错误及其他网络威胁的侵害。
企业宣称正强化有效安全措施的实施固然容易。然而,要实现全面安全目标,组织除有效开发运维流程外还需践行安全最佳实践。以下是助力 DevSecOps 实现价值回报的核心理念。
传统安全观认为,安全只是开发运维团队需完成的又一项指派任务。而现代观点则主张,安全是 IT 运营团队、安全团队与开发团队共同承担的项目。实现协同效力的关键在于高效的跨团队沟通,从而成功管理预期并交付理想成果。
若不付出大量额外努力,便无法构建更强大的安全状况。这要求在各个环节实施强化安全策略。涵盖从代码分析(用于检测源代码潜在错误)等早期项目步骤,到基于同行的代码审查及安全测试等后期开发流程的全链条。
DevSecOps 最显著的优势之一在于它能为企业发布的软件提升速度与确定性。通过实施持续交付 (CD) 流水线,企业推向市场的应用程序及其他软件版本将具备安全代码,并更有可能满足必要的安全要求。
开发运维流水线的 CD 方法同样基于这样的指导原则:安全工作永无止境,相关教育培训也永不停止。须知:黑客始终在持续改进其攻击方法,因此总会有新技术需要侦测,总有新兴安全控制措施需要实施。
各类 DevSecOps 测试方案存在显著的专业化分工,如下列示例所示:
DevSecOps 方法具有多用途性,可应用于多种编程目标:
实现本地、云端或大型机上任何应用程序的自动化软件交付
。使用开发运维软件和工具,在多种设备和环境中构建、部署和管理云原生应用程序。
利用 IBM 的云咨询服务发掘新功能并提升业务敏捷性。了解如何通过混合云战略和专家合作共同制定解决方案、加快数字化转型并优化性能。