转载

轻松筹韩晋:解构SDL落地的关键点

前言

很多甲方安全团队的工作都是从救火开始的,SDL很少会成为企业在进行安全建设时优先考虑的事项。“事前不用力、使不上力,事后补漏洞”可能是很多安全团队的写照,这种情况背后存在很多的原因,比如没有实现与DevOps交付模式的有机结合,SDL的门槛对于企业现状来说难以满足,SDL的推动跟不上业务模式的发展以及各种各样的历史遗留问题导致SDL落地难等等。

要实现SDL在企业内部的良好落地,要求的不仅仅是技术层面的体系化建设能力,面对不同实施对象、粒度粗细要求各异的业务,还需要超越技术层面的思维和协调能力,整个流程中有太多的事情是需要上下一心、横向对齐。市面上有很多讲如何企业SDL落地的书籍和文章,从架构设计到落地推动等等不一而足,讲得也比较透彻,但是对于真正从零开始推进SDL的安全负责人或安全团队而言,往往少了一些真实的案例和能够参考的抓手。

作为信息安全负责人,韩晋和团队里的小伙伴一起,从零开始在轻松筹内部推进SDL的落地,期间有一些曲折,也取得了很多成绩。本期安全大咖专访笔者连线韩晋,来解构一下他是如何以业务为导向,安全为基石, 有重点有选择有顺序 地推动SDL在轻松筹的落地。

韩晋其人

韩晋,中国科学院大学信息安全方向在读博士,现任轻松筹信息安全负责人,领导轻松筹安全团队从零搭建安全纵深架构,推动SDL在轻松筹的落地。曾担任Circle中国信息安全负责人、中国金融认证中心信息移动安全负责人、中兴通讯安全测试经理。拥有丰富的企业安全建设经验,是一名全栈安全工程师。

*全文为韩晋本人口述,FreeBuf仅做整理,无任何修饰或故事化,原味呈现最真实的企业安全人心声。

0×01 抓手

抓住最佳实践

SDL在国内企业的落地与推动过程中,或多或少都会碰到各种形态的阻力。我的总体思路是以业界的最佳实践为抓手,并在最佳实践落地时因地制宜把握好程度、优先级。

所谓最佳实践(Best Practice),是那些已经在别处产生显著效果并且能够适用于此处的优秀实践,包括已经产生的经验、教训、理论、流程、框架、方法论等内容。针对SDL的最佳实践,韩晋首推的是经过数十年验证的微软SDL。

微软在传统软件开发生命周期的基础上,从安全角度对各阶段增加了安全活动,包括培训、要求、设计、实施、验证、发布、响应几种,每种活动下也拆分为各种具体项目,比如在安全设计中,需要涵盖减小攻击面、深度防御、最小权限原则、安全默认设置等主题,而在实施过程中,需要涵盖使用批准的工具、不安全函数、避免溢出和SQL注入等主题,这些指导可以直接在微软官网下载。

以微软SDL为代表的业界最佳实践能够给与企业安全团队很有益的指导,但要注意的是,有了最佳实践指明方向后,企业安全负责人依然需要深入了解业务之后进行梳理:哪些是最佳实践没有涵盖的;哪些是中短期不用上马的,毕竟是他山之石,不能照搬。企业的业务重点不同,在落地过程中需要把握好程度和各阶段的优先级,对于安全的投入也要进行量化并考虑投资回报率。

韩晋在加入轻松筹后,优先解决了有无问题并设立了一些中短期目标,包括WAF、统一登陆系统、全链路审计、日志收集及处理、代码审计、EDR等,这些是未来推进DevSecOps的基础设施。他强调,考量业务侧对安全的需求很关键,业务侧最关心的安全问题基本直接与利润挂钩,所以可以考虑在SDL的落地中适当增加其优先级,解决这些问题对组织来说更能体现安全的价值。同时,在推进过程中肯定会有一些计划之外的阻力,所以需要进行周期性复盘,微调中短期目标,必要时可进行更换。在达到各个里程碑时,还可以进行宣传式的总结,让组织知晓当下阶段的工作价值,形成良性循环。

企业的安全负责人要根据公司的现状先上马贴合公司规模、现有业务最急需的模块,比如日志审计系统,有些企业可能连这个都还没上就急着做流量分析,这样先后顺序就不对。架构设计需要参照最佳实践指定的方向,基于公司自己的业务逻辑的侧重点,有先后地去落实,有时候会需要安全负责人针对最佳实践的理论定义做一些符合现实的改动。

以轻松筹为例,轻松筹是一家从事公益慈善、大病筹款、公众健康保障的互联网公司,数据会包含很多个人隐私信息,比如身份证号、病历、姓名和手机号等等,因此核心关注点是数据安全。这些数据会在轻松筹数据库上存在一定程度的中转,这种情况下,韩晋带领团队围绕着数据建立了相应安全功能机制的模块。

具体的做法是围绕着数据的传递展开,从东西向到南北向流量、数据流的每一个节点(比如用户在C端——APP或者微信H5,进行本地数据输入开始)保护数据的完整性、统一性和可用性,然后数据会通过网络传输到轻松筹的CDN,之后回源并经过WAF和SLB,经过SLB之后再经过中间服务器传输到后端的各个子业务。轻松筹的后端服务来处理任务,期间与数据库交互,还会传输到大数据部门进行二次的数据集成和混合计算。

期间数据经过的每一个节点,安全团队都会采用相应的安全措施来保证数据的安全三要素。所以从数据安全入手来推进SDL落地,是贴合轻松筹业务并取得突破的一个点。用一句话来概括,轻松筹安全团队围绕着数据传输,以保护用户个人隐私为核心,来推动SDL安全架构的落地。

采用开源工具

SDL工具是自行研发,还是基于开源或者收费软件进行二次开发,一者要看开源软件是否满足安全需求,二者取决于企业面临的安全需求是否迫切,哪种方式能迅速带来效益以解决目前的风险点。除此之外,商业现货能否在成本覆盖的情况下满足需求,以及对工具或平台的后期期望都是SDL架构设计和软件开发过程中要考虑的因素。

轻松筹是一家发展中的创业公司,基于开源软件二次开发是其首选的方式。假如经过通盘考虑之后开源和收费软件都无法满足需求,那么必须考虑自行研发了。但就目前而言,自行研发给轻松筹带来的人员成本很高,只能作为最后的选项。

有时候我们宁愿多花点时间等待开源软件的发展,密切关注它的下一个版本是否会引入我们所需的功能,然后跟进升级。

在谈到轻松筹SDL采用的工具时,韩晋如是说。SDL的推进、落地与企业的规模、市值呈一个直接的正比关系,一般而言投入多少精力、成本和资源就能够带来相应的成果。从现状出发,企业规模越大越会关注SDL整个流程是否完善,但是对于像轻松筹一样规模还较小的企业来说,如果一开始就投入很多资源来实现SDL全流程推进,这样的做法并不可取,业务与安全发生了本末倒置,这样一来安全也得不到发展。

可以说这样的指导思想是韩晋在实际工作中一以贯之的,其采用的现实策略确实给轻松筹带来了看得见的便利和成本节约,比如轻松筹采用的开源数据引擎Elasticsearch就是一个很好的例子。在推进SDL的过程中轻松筹部署了Elasticsearch,当时的6.4版本还没有满足流程所需的Index生命周期管理功能,员工还在使用脚本处理相关任务,十分不便,时间一长对于人力成本颇有影响。

我们考虑过自行开发一个交互操作友好、具备可视化UI界面的工具。后来发现Elasticsearch从6.6版开始,官方引入了该功能,且具备满足轻松筹当前所需的特性。当正式版释出后我们立刻将其整合到现有流程中进行测试,通过后就部署到生产环境中了。

这样的策略看似被动,实则对于大多数与轻松筹体量和发展阶段相似或者更小的企业而言,是符合成本考量的做法。企业在发展中的特定阶段和形势下,安全如果比业务跑得太快,有可能会变成反作用力,导致业务和收入的迟滞,甚至倒退。

0×02 推动和落地

开发与落地的难点

谈及SDL开发与落地过程中的难点时,韩晋表示SDL的落地在不同类型的企业中侧重点不同,比如金融企业面临着更高等级的监管要求,极端重视数据安全这一方面等。而轻松筹平台上有大量资金流动,但与大部分出售产品或服务的互联网公司不太一样:

我们主要是通过互联网化的方式搭建一个正能量的平台,在开发和运营的过程中大家的热情很高,这是我们的特点。

在这股巨大热情的推动下轻松筹发展非常快,也导致初期的流程和制度没有完善,这也是很多同类企业面临的问题:

1. 上线流程比较直接;
2. 除抗DDoS外无应用层防护;
3. 老旧业务没有及时下线;
4. 安全基线和代码审计没有部署等等。

轻松筹安全体系的建设基本是从零开始的,韩晋举了两个实例。

轻松筹的业务依托公有云开展,大量系统在云端,中间隔着公网,这种特点导致安全团队需要着重关注开发过程中的代码数据传输和访问的安全风险。对此,安全团队上线了代码管理平台https,增加公网IP白名单,确保只有轻松筹员工有权访问。这样引申出一个问题,如果员工想要移动或者异地办公,怎么办?那就上线VPN。部署VPN解决方案后发现了一些风险:是不是可以通过访客网络访问代码平台及其他系统?因为WI-FI输入密码即可进入,是否存在比较明显的风险让未授权设备进入内网,访问系统并进行内网渗透?

这样的担忧推动安全团队实施了统一登陆计划,建立了接入大多数系统的统一账号平台,所有系统账号的登录操作全都可以关联到一个人身上,确保每个链接和活动可控可溯源,在减小攻击面的同时为业务侧提供了便利,这也是推进SDL时带来的利好。

对中小企业,尤其是互联网和金融领域的企业来说,韩晋认为数据是核心,有利于提升安全的初始地位。未来云技术带来的安全效率和成本的改善会影响越来越多的企业上云,加速自动化和AI的融入。

另一个实例是内部网络中威胁情报分析和实体关系。由于历史原因,轻松筹后端服务在没有良好规范约束的前提下发展很快,导致服务之间的关系较为复杂,难以梳理,造成了安全部门部署防控策略时没有清晰的线索,比如不知道要关闭哪些业务端口,向开发团队咨询也得不到明确的答案。此外内部网络的流量关系分析也是关注的安全重点。

基于这两点,韩晋的安全团队提出了“两个环境”的方案:一个办公网环境,一个公有云环境。办公网使用流量旁路连接到一台抓包服务器,然后实时加密同步至Logstash集群再到ES, 公有云将重点服务器流量复制到ES,并使用在所有主机服务器部署Angent采集实体信息发送至ES,同时调用ES API实时查询威胁情报库进行威胁查询并离线存储,对流量数据进行建模,实体信息进行可视化关系展示。将这套方案投入到业务线运行一段时间后获得了良好的效果,业务也梳理地比较清晰。

这两个案例是韩晋在推动SDL开发过程中碰到的典型技术问题。他表示从整体流程看,推动起来比较有挑战性、成本比较高的还是沟通,这一点也是许多公司安全团队面临的挑战。

推动SDL的落地需要打通业务线的所有部门,获得他们的支持就显得尤为重要。客观上也会占用他们的一部分资源,这点难以避免,也是我们需要逐渐优化的部分。

打通业务线需要高级管理层的支持,但即便支持到位了,在业务急速发展的过程中,要让开发团队兼顾去做不在OKR列表中的工作也很考验技巧。韩晋的方法是确保SDL的落地与开发团队利益一致,让兄弟团队理解安全并不是站在敏捷开发的对立面,在DevOps过程中加入安全能力,能够形成三角支撑,更好地帮助业务顺利上线和开展。在某些安全与开发之间的问题难以调和时,安全团队可临时牺牲一些可控的安全措施,确保不会给业务带来太大阻力,在大方向上稳步推进。

向上教育与平行沟通

SDL属于典型的体系化建设,从上往下推可以起到事半功倍效果,但是,很多公司高管安全意识的现状不太乐观。

有一部分原因与安全部门的向上教育是否有效相关,导致国内企业的高管在信息安全方面大多都是事件驱动的。就当前大环境而言,韩晋认为要实现从高级管理层到安全团队、研发团队的全链条推进, 安全的初始地位很重要

可以看到有一些公司的安全部门角色比较尴尬,有些团队把安全问题汇报给运维,有些汇报给风控,相对成熟一些的汇报给类似CTO的管理层人员,在较低的位置做向上教育会带来很高的成本。

针对这样的状况,韩晋的药方是什么?他认为努力让高管明白和理解安全工作的内涵以及价值,并且要保持一定的持续性。加入轻松筹后他制定了一系列计划并进行了实践,包括:

1. 成立风控管理委员会;
2. 定期做安全意识培训;
3. 针对热门安全事件进行分享;
4. 对公司业务的漏洞进行分析讲解;
5. 通过友好的安全模型解释安全现状及影响等等。

此外,韩晋还实现了安全与运维的统一管理,除开发测试环节基本不产生内耗。不过他强调这一点仅适用于轻松筹,企业的内部环境各异,不一定可复制。

如果高层支持到位了,工作会相对明朗一些。此外,这些举措对于研发团队也很适用,能否处理好安全团队与研发团队的关系,从推动SDL的全局角度来看至关重要。

推动研发团队的认可很多方面与做公司高级管理层的工作一样,从对于安全工作的认识出发,一是让研发团队了解安全团队在做什么,二是让他们知道这样做的重要性,从认识上达成一致,解决这一部分阻力之后剩下的基本是技术问题。

在沟通技术问题时,韩晋表示要考虑到研发团队成员的技术背景与工作强度,可借鉴“PDCA管理循环”的理念,采取较为直接的方式阐述技术问题,节约研发团队时间。他的经验是循序渐进,避免步子跨太大产生反效果,比如:

1. 直接向研发团队说明想要的结果;
2. 阐明过程中的技术问题,并提出自己的思路;
3. 对思路与过程进行讨论,对结果有个初步判断;
4. 达成初步一致后立刻进行实践。

由于轻松筹的业务务线较多,每个业务线推动的进程状态也不同,让韩晋欣慰的是公司高级管理层的有力支持下,有的业务线已经把安全问题纳入了考核,并且安全团队在全部上线流程上可以一票否决。

两个层面的策略

首先从 管理层面 看,管理策略直接决定了SDL和研发流程能否劲往一处使。

把安全意识融入到企业文化中是我们追求的目标,在这个过程中我对安全团队的要求是将“做能力范围内的事情”扩展到全公司,如果兄弟部门碰到问题且安全团队有能力解决,不论是否与安全相关都要尽量协助,在这个过程中可以加深相互的理解。在日常的安全宣传中,我们也会以培训、海报、不定期的安全测试、信息安全电子漫画的方式让大家逐渐明白和理解安全工作,但这些方法需要有足够的时间才能体现出价值。

在SDL推进过程中韩晋遇到的阻力可大致分为两种情况:

第一种是流程或机制太简单或者太繁琐,这种情况下需要当事团队间进行沟通,可先以达成简单目标作为过渡,然后为加强安全措施设定一个期限。

第二种是同事们表达方式太过直接导致在方案上没有达成一致的情况。这样的事件要拆开之后具体分析,如果责任划分上的事情不好区分,韩晋一般会主动承担,减少矛盾激化,但还是要坚持公平公正公开的原则,抓住以下几点进行突破:

1. 保持与公司业务目标一致
2. 做好向上教育
3. 跨部门沟通要维持良好状态
4. 安排好事情优先级
5. SDL过程中的角色分配至各个职能

技术角度 来看,轻松筹还在逐步推进DevSecOps的落地,已经实现了多项功能和模块的自动化,包括白盒代码审计、各系统操作审计、主机扫描、线上业务状态监控、云端资产配置等。这些功能实现后客观上加快了一些上线流程,也能够让开发团队理解安全不会增加太多额外负担。除了自动化功能外,轻松筹还在黑盒测试上投入了一定的人力资源进行人工测试。

我更愿意将SDL中不同的关注点进行拆分,按需规划落实,具体哪个环节需要多资源,要根据企业业务规模和对安全的定位。同时,需要有一个具备专业知识和工程能力的人长期跟进,准确评估当前的紧急需要,将整体计划拆分下发分段完成,否则难以有效落地。针对重要模块还要提前准备Plan B,防止意外出现。

轻松筹发展速度很快,目前已有员工一千余名,业务和流程方面也在快速形成机制,在SDL的实践过程中韩晋也是将SDL所包含的内容拆分为可落地、可实现的多个模块来进行,进一步分解为目标清晰的事项来完成,而不是一开始就从很高的角度来谈SDL架构。

SDL在轻松筹的落地过程始终是一步一个脚印,韩晋告诉笔者一些基础设施的成功建立让他获得了很多成就感,比如主要系统纳入统一登陆管理之后,SDL覆盖到的系统都可以进行粒度细化到个人的、从办公网到生产网络的全链路审计。还有ELK集群搭建配置完毕后,实现了扫描结果、主机、流量、操作审计、威胁情报等各种行为数据的收集,并且构建了实时可视化及报警功能,还能作为机器学习的数据集进行建模分析等等。

SDL建设无法一蹴而就,整个过程中会遇到很多技术问题和取舍,原则是从用户和公司的利益角度出发,优先处理不可控的技术风险,先做好从0到1,再做从1到100。如果业务上线进程比较着急,来不及完成太多安全检测,这时可以评估风险暴露之后对用户和公司的影响,确保在可控范围内及时响应,并加强安全监控。

0×03 结语

SDL的推进与企业本身的动态变化息息相关,SDL不仅要切合现实顺应这些变化,而且要快。就现阶段而言,我们有很长的路要走,安全还不能比业务跑得太超前。未来我们会根据企业发展规模和安全资源朝着更细化的方向发展,降低小伙伴对安全的关注成本,最终做到安全意识变成习惯,安全机制无感知的目标。

互联网公司总是在跟时间竞速,跟同行业中的其他竞争对手赛跑,跑得快就能节省出更多时间成本去快速试错,调整方向沿着正确的轨道发展。这个过程中会有很多坎坷,韩晋也是带领着团队一步一步在摸索中前进。

*FreeBuf官方报道,未经许可禁止转载。

轻松筹韩晋:解构SDL落地的关键点

原文  https://www.freebuf.com/articles/people/202562.html
正文到此结束
Loading...