诸子笔会2022 | 朱文义:企业安全开发技术组件化初探
自2022年5月起,“诸子笔会第二季”正式拉开帷幕。经过对首届活动复盘,我们在坚持大原则、大框架、主体规则基础上,优化赛制特别是奖项设置和评奖方式。13位专家作者组成首批“笔友”,自拟每月主题,在诸子云知识星球做主题相关每日打卡,完成每月一篇原创。除了共同赢取10万元高额奖金,我们更要聚焦甲方关注,发掘最佳实践,弘扬分享精神,实现名利双收。本期发文,即诸子笔会月度主题来稿之一。
企业安全开发技术组件化初探
文 | 朱文义
朱文义
某企业高级应用安全架构师
在各类外部交流中我们听到过太多SDL和DevSecOps的实践经验,其中在软件开发的每个环节都涉及了不少的安全活动,如安全需求分析、威胁建模、代码安全审计和上线前安全测试等,如下图1所示。
图 1 SDL常见安全活动
虽然各家的实践看起来相差不大,但仔细研究下来,企业具体选择哪些安全活动是与企业开发安全的发展阶段、安全团队的规模、企业文化强相关的,别人的成功经验未必能通过“拿来主义”解决我们自己面临的问题。针对如何提升安全开发工作的效果,我们今年也进行了探索,今天特与大家做个简单分享。
第一步我们分析了我们企业软件开发面临的困境,主要包括以下几个方面:
一是外部采购的软件仍占据相当的比例,特别是一些长尾类的互联网应用,尽管采取了要求供应商提供第三方安全测试报告等措施,仍很难保证其安全性。
二是外包开发人员占比较高,人员流动性较大,安全意识和安全技能培训很难达到预期效果,难以沉淀。
三是面对成千上百的应用和紧锣密鼓的项目,传统的上线前安全测试的工作成本越来越高,就像“打地鼠”游戏一样,很难确保安全漏洞被及时发现,整改成本也居高不下。
四是开发人员面对安全要求的抵触情绪越来越强烈,受害者心态明显,总是反复沟通和修改才能实现安全要求,停留在“就事论事”层面,无法形成安全能力。
五是组件化、微服务化、低代码化开发趋势明显,开发人员越来越习惯于采用“乐高拼装式”方式开发业务应用,逐渐要求安全团队提供安全组件以帮助开发人员专注业务功能开发。
第二步我们分析了企业安全开发时通常面临的两条道路。
其中一条道路是安全人员持续强化安全管理、安全培训和安全检查工作,重度依赖开发人员对安全技术的掌握能力,不关注实现方式只关注最终结果,由开发人员自行想办法落实安全要求。
另外一条道路是安全人员除负责安全管理、安全培训和安全检查之外,还需要负责安全技术能力建设,以SDK形式将安全技术向开发人员赋能,减少开发人员对安全的认知负荷。这两条道路的关键区别在于安全开发人员是否掌握和提供安全技术的开发能力,能否持续增加安全“机控”能力,而不仅仅局限于安全管理、安全培训和安全检查等外围类工作。
第三步我们认真分析了选择第二条路的优劣之处。其优点在于,将安全技术能力封装成安全组件后,无论对开发人员还是安全人员都有明显的好处。
安全组件建设可以给开发人员带来以下好处:
一是安全组件可以将监管安全要求和安全需求使用代码方式落地,通过安全逻辑封装降低开发人员对安全要求的认知负荷;
二是安全组件通过预制品方式可以帮助开发人员降低安全实现成本,专注业务功能开发,符合安全和开发共同服务业务目标的要求;
三是安全组件可以帮忙开发人员以快速标准化方式修复常见的安全漏洞。
安全组件建设可以给安全人员带来以下好处:
一是帮助安全人员减少对安全实现细节的关注和跟踪,减少在日常工作中的繁琐的安全支持类工作;
二是方便安全开发人员形成标准化的检测方法,方便对应用的安全落地效果进行验证,如建立安全组件库以后,可以调整源代码审计的检测规则,可以通过组件库是否被引用来判断某个安全需求是否得以响应;
三是可以帮助提高安全人员的美誉度,使得开发人员与安全人员合作更为紧密,沟通更为平等。
当然选择第二条道路也存在一定的缺点,安全组件的建设和推广工作需要一定的人力和物力,这对安全团队的技术能力提出了一定的挑战,同时也可能会出现业务应用开发人员因安全问题无法及时修复而指责安全组件支撑不力的现象。
第四步我们分析企业内部开展安全组件建设的有利形势。
一是领导重视和支持安全技术组件化工作,强烈支持通过“机控”措施实现安全要求。这一点是非常重要的,毕竟人力、物力的资源投入都需要领导的批准和支持。
二是应用架构工作得到广泛认可并在企业内部广泛开展。安全工作与应用架构中的应用管理、技术组件管理、技术方案评审有着千丝万缕的联系,安全架构工作可以与应用架构工作协同开展,应用架构相关的技术管控活动可以帮助识别安全组件需求和推广安全组件。
三是统一开发平台正在企业内部陆续推广,统一开发平台与安全组件的目标都包括“落实规范”和“降本增效“,安全组件恰好可以借助统一开发平台推广的东风进行推广,相比只推广安全组件阻碍要少的多。
第五步是我们完成了详细的安全组件的规划。围绕常见的安全问题,针对不同类型的组件进行了细分设计,并确定了安全组件的建设路径和推广路径。
安全组件可以划分为业务安全类、数据安全类、WEB安全类、前端安全类和安全工具类,每类组件定位解决不同类别的安全问题,每个组件都有其对应解决的目标安全问题,如图2所示。
图 2 安全问题与安全组件对应关系
另外我们计划结合企业内部每一类安全问题的发生频率分步建设安全组件,并优先在互联网应用中陆续推广,逐步减少和消灭对应类别的安全问题。
综上所述,面对众多应用表现出的共性安全问题,我们不得不重新思考”七分靠管理,三分靠技术“这个安全工作思路中“管理”的真正含义,重新思考如何依靠技术提升安全管理的效率和效果,重新思考如何围绕安全技术落地更好地开展安全管理工作。
思考之后我们觉得安全技术组件化是一条值得尝试的道路,希望在这条路上遇到越来越多的同行者。
【12月主题:回顾与展望,无题】
【11月主题:考场,战场与职场】
孙瑜 王忠惠 朱文义 陈圣 回顾【10月主题:过与不及】
【9月主题:查漏补缺】
【8月主题:红与蓝】
刘志诚 张永宏 王忠惠 孙琦
肖文棣 孙瑜 杨文斌 陈圣 回顾
【7月主题:误区与陷阱】
刘志诚 张永宏 孙瑜 王忠惠 肖文棣
朱文义 杨文斌 孙琦 陈圣 回顾
【6月主题:远程办公与安全】
王忠惠 于闽东 刘志诚 孙琦 朱文义
张增斌 肖文棣 杨文斌 张永宏 孙瑜 陈圣 回顾
【5月主题:安全之变】
王忠惠 张永宏 朱文义 于闽东 刘志诚 杨文斌
孙琦 孙瑜 半藏咸鱼 肖文棣 王振东 陈圣 回顾
2021首届诸子笔会
齐心抗疫 与你同在