官方公众号企业安全新浪微博
FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。
FreeBuf+小程序
从乙方转至甲方已经有几年了,从业经历也从一开始的渗透测试到攻防、SRC、安全运营、应用安全到最后的完整的企业安全建设,整体的安全理念也从一开始“挖漏洞就是安全”到“以攻促防就是安全”,最后转变为现在的“内生安全”“安全工程”,希望能将自己的所学分享出来,做成一个连载,同各位师傅们一起讨论,一起寻找最优的解决方案;
1.什么是企业安全建设?
企业安全建设是一个很宽泛的话题,它没有一个标准答案;因为在安全没有开始之前,业务已经开展起来了,而安全本身包括了很多方面、很多层级,每一个层级又可以做很多工作,私以为,完美的企业安全建设是针对本公司定制化的,它需要结合公司的体量、具体的业务、预算、领导的思路、重视程度、现状,综合考量,将安全嵌入至企业建设的方方面面,列好计划,将具体任务排出再进行拆分,比如是先上设备还是先做sdl?先出规范还是先做流程?等等等等,都需要和公司领导共同拟定,出一个几年建设计划,按部就班的去完成
2.如何开展企业安全建设?
前面也有分享该如果去做,这里想说一下当你新加入一家公司,而这家公司又没有什么积累的时候应该如何开展;其实具体的工作思路也很简单:先去梳理当前公司的现状,这里的现状包括业务现状、企业建设现状、安全建设现状(包括网络层、应用层、主机层等)、梳理完现状之后,再根据具体的现状分析安全能在其中做哪些工作,比如网络层先梳理出网络架构再去考虑填充安全设备(填充哪些设备,为什么要上这些设备,上线后如何运营)最后考虑自动化,应用层先考虑当前完整的开发上线流程,再依据现有流程逐步加入安全,可以先从安全评审做起,因为仅作安全评审是不会给开发增加工作量的,当得到完全的信任和认可后再去慢慢加入安全设计、威胁建模等等(这里想说的一定是一定要得到认可,这里的得到认可是指让业务认为,安全是来和我一起解决问题的,而不是来甩锅的,具体有问题可以留言我们再沟通),主机层也是,如果你要上DLP、上云桌面,你需要先去调研,看看当前的现状,有哪些风险,再去考虑上对应的设备才更有说服力,其实总结下来就几点:
1.先说服领导再着手做事。事前先汇报。
2.以点着手,切勿着急全面铺开。
3.做好准备再去做。
4.做好资产收集与现状梳理
3.我想分享些什么?
企业安全建设是一个面,是一个框架,一个优秀的企业安全建设方案一定是一个完备的安全工程,一个内生安全的流程体系,因为我多次经历过企业安全建设,也搭建过相关框架,所以想把这些分享出来,和大家一起讨论如何去更好的完善这个框架;我会将每一个小点都详细的说明,从概念,到实例,到如何落地,到碰到的问题,到最后如何解决一个完整的闭环。大概分为以下几点:
应用安全:devsecops\sdlc全流程与细分、安全考核、安全解决方案
网络安全:安全设备、流量分析
数据安全:数据分类分级、密钥生命周期、具体场景细分等
安全运营:护网、渗透测试、SRC的建立、安全设备如何落地与运营、等保监管等等
此外还包括安全如何平滑的运行以及如何具体的从0到1的去做事情
这里我先和大家宽泛的聊一聊应用安全,后面的文章中再针对每一个点做具体的沟通与交流;
无论是sdl、sdlc、devsecops,当你的公司开始做应用安全的时候,安全的定位已经从“救火队员”转为为业务保驾护航了;这个时候“以攻促防”已经成了最后安全测试或者线上渗透测试、攻防演练所做的事情了,而整体的应用安全理念是一个“安全工程”的理念。安全的存在是为了去打造高质量的产品,作为高质量产品的一个重要的属性而存在,那么在打造高质量产品的这个框架中的每一个角色、每一个人都需要对安全负责,尤其是当人手不够的时候安全尤其需要去借力:这里的借力是指对外借用乙方公司的力量去安全测试、攻防演练、安全设备。对内就是应用的架构师协助安全做进行安全设计(方案与架构设计)、产品经理去做威胁建模、研发去做SCA等等;找好着力点很重要,一般来说,我会先从一个应用出发,先去同项目经理和架构师聊一聊,主要聊聊业务的现状,业务的重要程度,以及现有的一些安全风险,先尝试将安全加入进去,可以先让开发无感知,即先从安全需求评审和最后的上线前安全测试做起,比如在有新的需求出现时,做需求沟通会的时,拉着我一起看看有哪些安全风险点,点出来以及相关的危害,开发过程中需要刻意注意这些点,当研发在具体实现时有困难再进行答疑,这样的沟通机制就建立了起来,然后再针对具体的业务场景做一些安全设计,形成公司内部的安全设计库,最后再做轻量级威胁建模,在做安全编码等等等等,慢慢去着手做
那么应用安全的体系就大概包括如下:
1.安全培训:安全开发培训(java、php、js、安卓)、安全意识培训、服务器安全配置等
2.安全评审:安全需求评审(法律法规、安全标准、监管要求、功能收集分析、安全需求清单,根据需求进行分类,针对不同的类别,制作相应的需求安全检查表)、开源代码评审(开源软件治理)、质量标准建立
3.安全设计:针对业务场景设计安全方案(checklist)、华为安全设计方案,端、云分开 ——常见的安全机制(二次认证、加密混淆等通用的安全解决方案)
4.安全架构:安全需求嵌入业务架构
5.威胁建模:微软威胁建模模型、攻击面梳理
6.安全编码:安全开发checklist(端侧、云测:java,js,安卓)、代码审计、IAST\DAST\SAST、安全编码规范(java、JS、安卓)、漏洞知识库、安全编码库
7.安全测试
8.安全运营:安全设备的运营(WAF、RASP)
9.安全运维:应急响应、安全环境管理、安全设备运维、
10.安全加固:安全镜像、app加固、安全环境管理
11.一体化安全解决方案:安全SDK、统一认证服务、统一加密服务
12.安全体系:安全评审委员会、回溯机制(5W2H回溯机制)、安全接口人、安全质量打分
13.安全知识库:合规要求知识库、安全威胁库、安全需求库、安全设计库、编码规范库、开源组件库、代码示例库、漏洞库(安全开发规范)
安全文档:
体系管理:《软件安全开发管理细则》 《安全基线管理细则》
安全设计类:《应用系统安全设计通用规范》《应用安全客户信息保护设计规范》《API接口应用安全设计规范》
安全编码规范:JAVA PHP JS PYTHON C 等等等等
接下来的应用安全系列我会围绕以上同大家进行沟通交流。