企业SDLC建设不成熟设想
一、说明
1.1 背景说明
之前在N市,面试的是“IT系统安全工程师”的岗位但合同上签的是“集成工程师”的名头(前阵子找之前的邮件offer才注意到的),工作内容现在看来还是和当时离职时表述一样基本一半是系统集成的工作一半是安全的工作。其好处是一方面对数据库、中间件、大数据平台等技术有比较深入的了解,另一方面对4A、SoC、安全基线等安全概念也有一定程度的认识。
来到S市,司职是正经的安全岗位“渗透测试工程师”,渗透能力逐渐形成了比较完整的知识体系,最后又演变成了当前的SDLC认识。
之所以说“不成熟”,一是因为从自己感觉上没有很完善,二是因为没有大量的实践证明其可靠性和可行性;而之所以要“强行描绘”,一是为了做个阶段总结,二是感觉后边去T公司后短时间内也没机会实践SDLC全流程。
其实感觉企业安全体系核心包括两方面,一是以SDLC为核心的单个应用的从设计到上线全流程,二是以SoC为核心的所有安全设备、安全系统的统筹管理。但对于后者一是自己概念就更模糊了,二是感觉即便在业界也未形成统一的认识,如果以后有更深的理解再说了。
1.2 安全行业一些不成熟预测
出身:即便到现在网上还可以经常听到某某黑客大佬不是信息安全专业出身、不是计算机学院出身、没读过大学、小学没毕业之类的说法。但就趋势而言,以后科班出身的比例会越来越高,专业知识掌握得越深的人走得越远。
入行:现在进入安全行业,主流途径一般是学校课上学计算机/信息安全的知识、课余自己找环境实操打打CTF,毕业后进入安全乙方安全公司、安全岗,积累一定程度后转入甲方安全岗。
归宿:在职业前中期更多要求技术深度,在职业中后期更要求知识广度;公司越大技术深度的存活度就越久。其实就和程序员类似,更多的出路就是管理岗,更多的公司要的就是你能给公司架起安全体系。
二、SDLC概念理解
2.1 关于SDLC名词来历
最开始听到的应该不是SDLC而是SDL,而最早开始听到SDL应该是在软件工程课上讲的微软的SDL;因为软件工程讲的是软件开发生命周期,所以我一直以为讲课一笔带过的微软SDL是“Software Development Lifecycle”。
近几个月听到很多公司很多安全岗位都讲SDLC,感觉虽然意思可以理解但安全直接占用开发的名词不太好吧,但回头一看其实出自微软的SDL并不是“Software Development Lifecycle”而是“Security Development Lifecycle”,确实本身就是一个安全名词。
一方面,可能安全人员之间说SDL或SDLC不会有歧义但与开发等交流就会有问题;另一方面,当下安全所谓的SDL就是指安全人员要介入到软件开发生命周期的整个流程中,在开发框架大体不变基础上建设安全。所以现在书面形式上更多使用S-SDLC(Secure Software Development Lifecycle)的说法(比如OWASP)。
2.2 SDLC的含义
我们前面说,当下在安全行业中,SDL、SDLC、S-SDLC都是一个意思,都是指介入到“Software Development Lifecycle”中建设安全,那具体怎么个建设法呢。
我们知道软件开发生命周期可以分为可行性分析、需求分析、设计、编码、测试、上线、运维几个阶段。在最开始的时候,软件一般是都不做安全的基本都是在运维阶段发现安全漏洞后再去进行修复;在开始做安全后发现很多漏洞完全可以在上线时自我检测发现(很多公司现在都是做到这一步在上线时设置安全关卡);在积累到一定程度后人们又发现,检测出的很多安全问题要么都是同类原因引起的(比如SQL注入都是因为使用拼接形式)要么就是因为软件架构原因修改工作量相当大(比如原来没有水平越权防护数据库的所有资源都没有权限标识),如果安全部门在编码等更早阶段介入那就可以更多避免”翻工“的情况。
总而言之,安全中的SDLC就是指将原来集中在软件开发生命周期后期进行的工作,散布到软件开发生命周期各个阶段去,在每个阶段做安全该做能做的事。
三、SDLC各阶段安全可做的事情
3.1 软件开发开始前
安全培训:主要是告诉开发安全是什么、安全要做什么、安全怎么做的。可选的一些主题,如”渗透测试方法“、”渗透测试工具使用“、”某种语言的安全编码规范“等。
3.2 可行性分析阶段
法律法规可行性分析----针对要开发的系统,衡量其是否违背法律法规,或者有哪些需要注意的点。
3.3 需求分析阶段
安全编码规范----参与需求分析会议,了解需求,针对需求拟定相应的安全编码规范。
3.4 设计阶段
各方案数据流图----要求开发提供数据流图、设计文档,对各方案进行安全评审。
3.5 编码阶段
静态代码审计(SAST)----使用Fortify、Sonarqube等工具对代码进行扫描,一方面理解代码是否按设计实现,另一方面看是否有存在问题的地方。注意静态代码扫描误报一般会比较大要注意先自己确认,而不要一把就给开发。
3.6 测试阶段
第三方组件列表----要求开发整理使用到的的第三方组件列表,作为运维阶段的输入。主要包括组件名称、组件官网、当前使用组件版本等列。
端口矩阵列表----要求开发整理端口矩阵列表。主要包括进程名、运行用户、监听IP、监听端口等列。
手工渗透----对系统进行手工渗透测试。可参考“渗透测试思路总结”。
3.7 上线阶段
基线扫描----自行编写基线规范检测程序,在上线时要保证主机和服务都符合基线规范。可参考“安全基线自动化扫描、生成报告、加固的实现(以Tomcat为例)”。
网络扫描----使用Nessus等网络扫描器对主机进行扫描,确保服务器上运行的服务软件没有什么重大漏洞。
web扫描----使用AWVS等扫描器对web进行扫描,确保别人使用这些通用工具也扫不出什么问题。
3.8 运维阶段
第三方组件最新版本跟踪----在提供的第三方组件列中中添加最新版本一列,编写自动追踪脚本每次运行就可以在“最新版本”列显示最新版本。可参考“Python3第三方组件最新版本追踪实现”。
第三方组件CVE跟踪----编写脚本,每天爬取更新的CVE并筛选出产品使用的所有第三方组件的CVE。可参考“最强半自动化抓鸡工具打造思路”。
应急响应中心----包括SRC邮箱、SRC网站。
企业SDLC建设不成熟设想的更多相关文章
- 企业安全建设之搭建开源SIEM平台
https://www.freebuf.com/special/127172.html https://www.freebuf.com/special/127264.html https://www. ...
- VI设计对于企业文化建设的重要性
VI设计对于企业文化建设非常重要,包括企业品牌形象塑造.企业价值提炼.企业文化建设等有着非常重要的作用.VI设计的发展趋势是什么? 第一 从静态到动态 中国过去一段时间以来的VI设计,也是以一种静止和 ...
- 安全管理中心(SOC)引导企业信息安全建设的思路
SOC即企业安全管理中心,该模型可帮助企业信息安全人员在进行安全建设方面提供整体性的参考.如下所示,以下模型分为数据采集部分收集了各类设备及日志等数据,这些数据收集到了以后提供给SOC安全管理中心,而 ...
- 企业高并发的成熟解决方案(一)video(笔记&知识点)
知识点 答案 什么是高可用(HA) 高并发发生在哪两处 app服务器会出现什么问题,有哪些解决方案? 数据库并发有什么要求? hadoop集群的作用 负载均衡的功能有哪些 负载均衡的分类 哪种负载均衡 ...
- 企业高并发的成熟解决方案(一)----搭建LVS负载均衡
企业整个架构分析 1. App服务器上边部署应用,如果是java的话,一般是tomcat: 2. 负载均衡服务器负责转发请求,这种既有主机又有备机的负载均衡成为高可用(HA): 3. 一般web服务器 ...
- 企业安全建设之搭建开源SIEM平台(上)
前言 SIEM(security information and event management),顾名思义就是针对安全信息和事件的管理系统,针对大多数企业是不便宜的安全系统,本文结合作者的经验介绍 ...
- 企业架构研究总结(38)——TOGAF架构能力框架之架构能力建设和架构治理
为了确保架构功能在企业中能够被成功地运用,企业需要通过建立适当的组织结构.流程.角色.责任和技能来实现其自身的企业架构能力,而这也正是TOGAF的架构能力框架(Architecture Capabil ...
- 从身份证管理系统思考企业CMDB的建设
关注嘉为科技,获取运维新知 对大部分中大型的企业来说,CMDB建设对于整个IT服务和IT运维管理的重要性不言而喻,但是目前仍然有非常多的企业无法建设好CMDB. 我最近刚好接触了一个公安系统的朋友,他 ...
- 企业架构研究总结(37)——TOGAF企业连续体和工具之架构资源库及架构工具的选择
3. 架构资源库 在一个企业,尤其是在一个大型企业中,建设一个成熟的架构往往会产生大量的工作产品.为了很好地管理和利用这些工作产品,企业需要制定一个正式的针对不同类型架构资产的分类方法,并且还需要专门 ...
随机推荐
- os.path.join()函数的用法
转:https://blog.csdn.net/hduxiejun/article/details/80289476 os.path.join()函数:连接两个或更多的路径名组件 1.如果各组件名 ...
- SpringMVC数组参数
前端 var moduleids = moduleArr.join(','); //一定要切换成,分割的字符串传到后台 后台 @RequestParam List<String> modu ...
- 前端Q的小小小里程碑
很多关注我的人都不太了解前端Q这个名字的由来,这篇文章就来讲讲前端Q的前世今生,顺便送大大福利(文末有惊喜),哈哈-- 恭喜!前端Q总用户数突破千啦~~ 前端Q前世 前端Q这个公众号,其实很早很早的时 ...
- Web API接口安全了解
2017版OWASP top 10 将API安全纳入其中,足以说明API被广泛使用且安全问题严重.自己尝试整理一下,但限于本人搬砖经验还不足.水平有限,本文只能算是抛砖引玉,希望大伙不吝赐教. 了解W ...
- uni-app项目记录
1.如何定义一个全局属性 在App.vue 文件中,以 global.属性名= XXX; 定义 在其他页面就以 global.属性名来调用 或者在min.js 中使用 Vue.prototype 挂载 ...
- 算法-memcopy与memmove的区别
memcpy()和 memmove()都是C语言中的库函数,在头文件string.h中,作用是拷贝一定长度的内存的内容,原型如下 void *memcpy(void *dst, const void ...
- 【团队项目1】 团队展示&选题
一.团队展示 1. 队名:这次稳了 2. 队员: 莫少政 3117004667 (队长) 黄思扬 3117004657 余泽端 3117004679 江海灵 3117004658 温治乾 311700 ...
- 一文搞定PGA_LGA_BGA
概述 什么是LGA.PGA.BGA类型的封装?众所周知,CPU封装的类型主要为三种:LGA,PGA,BGA,其中LGA封装是最常见的,intel处理器都是采用这种类型的封装,而PGA封装则是AMD常用 ...
- rhel7学习第四天
学习<Linux就该这么学>第二周,学习了最重要的几个文件操作命令
- Nginx基础知识介绍
Nginx基础知识介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Nginx概述 Nginx是免费的.开源的.高性能的HTTP和正向/反向代理服务器.邮件代理服务器.以及T ...