Page 53 - 《软件学报》2021年第10期
P. 53
戴启铭 等:DevSecOps:DevOps 下实现持续安全的实践探索 3025
力 [59] .它利用了代码混淆技术,让应用程序中的代码变得混乱和复杂,使应用程序的二进制文件更加难以分析,
进而增强了应用程序的防护能力.此外,应用屏蔽技术也能够保护应用软件的资产安全,极大地提高了逆向工程
所需的工作量,能够有效阻止盗版、数字信息盗窃等情况的出现,从而让企业在同类产品的竞争中占据一定的
优势.
为缩短产品的发布周期,让用户尽早享受到新的产品和功能,发布阶段的相关安全实践也应当以自动化的
方式进行.在保证产品质量和组织利益的前提下,通过对产品添加额外的安全保护,以保证高质量产品的发布过
程.在完成产品发布后,组织将会在实际生产环境中部署上线该版本的产品.
3.1.6 部署阶段
部署阶段会将待发布的版本部署到生产环境中,并让其持续地对外提供服务.DevOps 提倡的是持续部署,
它需要以自动化的方式简化整个部署过程并完成上线.因此,对即将部署上线的产品和基础设施的安全保护也
应当集成到这个自动化的过程中,这些实践能够切实消除运维人员的操作风险,实现对所交付的产品的进一步
加固.为此,我们总结了以下几点实践.
强化云部署
由于 DevOps 与云技术结合得十分紧密,运维人员在多云环境中进行安全部署时更需要考虑上线后的诸多
问题.比如:在确保系统安全的情况下,如何保障计算资源的高可用、如何实现相对均衡的负载、如何对存储资
源进行合理分配等.为解决好上述问题,在对基础设施中的众多组件进行安全配置时 [18] ,有时需要依赖运维人员
的个人经验,但这无疑会增加基础设施的安全风险.强化云部署将通过验证的部署准则和经过测试的配置集成
到一套框架中,并依赖自动安全配置检测机制来加快部署进程,避免发生错误的部署 [60] .这大大简化了运维人员
的操作,也能够强化对基础设施的集中式管理.
容器加固
容器技术的出现,极大地方便了软件的开发和部署.对容器进行安全加固,是 DevSecOps 中必要的一项安全
措施 [61] .Taylor 也强调了企业在转向 DevSecOps 的过程中,保障容器安全的重要性 [62] .容器技术具有轻量级、灵
活性高、低成本等优势 [63] ,但由于容器本身的权限较大,将容器部署到基础设施中时,必须对它采取安全加固措
施,以减小潜在的攻击面.常见的加固措施相对较多,可以通过容器原生的安全功能设置访问控制组、清除不必
要的 root 权限等方式进行加固,也可以使用外部工具,如 Bench Security 脚本,对容器安全进行测评和必要的修
补,还可以对容器镜像进行安全扫描以保证镜像源的完整性等.
DevOps 强调自动化软件部署过程,但这一过程仍离不开运维人员的参与.运维人员需要根据组织的基础设
施、可能的部署方式等实际情况制定最佳的部署方案,完成线上的部署工作.当待发布版本的部署上线后,产品
便运行在生产环境下对外提供服务,组织就开始了对它的日常运维工作.
3.1.7 运维阶段
在日常的运维过程中,线上的产品时常会受到来自外部或内部的恶意攻击,从而丧失正常提供服务的能力
或造成大量信息泄露等安全问题,可能给企业造成巨大的负面影响.为保障线上产品的稳定和安全,运维团队应
当与安全团队紧密配合,在实际的生产中去检验产品和服务的安全性能,积极提高组织处理突发安全问题的能
力.为此,我们总结了以下几种典型实践.
红蓝对抗
红蓝对抗是一种在生产环境下模拟网络持续攻防场景,提高企业的安全防御能力的一项实践 [21] .它能够在
了解企业实际安全状况的基础上,针对企业重要的核心业务模拟真实的网络攻防,从而揭示系统实际存在的脆
弱环节,帮助业务提升安全能力.红蓝对抗的范围较广,涉及外网安全、内网安全、数据库安全等多个方面,并与
系统的实际业务场景紧密结合.在持续的对抗中,组织内部也需要不同团队之间的互相沟通、配合,共同抵御来
自内部或者外部的网络攻击.
混沌工程
混沌工程是一项在生产环境中对软件系统进行实验的方法,其目的是为了建立系统能够成功抵抗意外情