企业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. 架构资源库 在一个企业,尤其是在一个大型企业中,建设一个成熟的架构往往会产生大量的工作产品.为了很好地管理和利用这些工作产品,企业需要制定一个正式的针对不同类型架构资产的分类方法,并且还需要专门 ...
随机推荐
- 浅谈华为验厂对MES系统的要求
众所周知,华为对供应商在管理.防错.品控.追溯等方面的要求都非常严格.在华为验厂时,对供应商的信息系统,尤其是MES系统的评估也是有非常具体的要求.那么我们今天就来谈谈华为验厂时,对MES系统有哪些具 ...
- SAP常见查询组合
做SAP开发的,SELECT是必不可少的.新语法出了不少'新鲜'的语法,用法也是五花八门. 新语法有新语法的好处,老语法有老语法的优势. 新语法里把很多的逻辑处理,分组,排重,内表处理全都放到一些关键 ...
- Centos7允许使用密码登录
现在使用云主机比较多,所以一般都是使用秘钥登录,当做一个集群的时候需要几台机器之间免密登录时,就需要修改他的配置文件了,刚做运维那会儿,很熟练,现在忘得差不多了,特此记录一下,下次又这个需求时就不 ...
- ETHINK组件取值手册
Ethink组件取值手册 一.取值 Sql查询配置中取值方式:所有可以对外过滤的组件都可以用id.output取值 就是取组件setOutput()里输出的值 ,具体分为以下两种: 1)$p{OBJ_ ...
- MySQL容器化详细教程
前言: 上篇文章介绍了Docker工具的安装及常用命令使用.本篇文章我们会介绍如何在Docker中运行MySQL实例,可能有的小伙伴会问:为什么要在Docker里运行MySQL呢?因为在Docker ...
- 利用DNS日志进行MySQL盲注
0x01 技术原理 这里是利用load_file这个函数利用smb请求方式请求域名机器下的一个文件,由于计算机对该域名不熟悉所以需要优先请求DNS,所以我们通过DNS日志记录中的内容来获取回显.解决了 ...
- 【SSH错误】ssh_exchange_identification: read: Connection reset by peer
进行远程登录时,ssh root@xxxxxxxxx出现如下错误 ssh_exchange_identification: read: Connection reset by peer 解决方案:登录 ...
- 配置管理-git研究(版本管理)
1. 安装git2.7 git2.7具体安装步骤如下: [root@host1 ~]# yum install curl-devel expat-devel gettext-devel openssl ...
- 第03节-BLE协议各层数据格式概述
本篇博客根据韦大仙的视频,整理所得. 对于BLE系统,它分为上下两块.上面那一块,我们称为host主机.下面这一块是controller,你可以简单的认为它就是一个蓝牙芯片. 对于host这一块,它运 ...
- ubuntu下vi/vim 的基本用法
https://blog.csdn.net/weixin_37657720/article/details/80645991 :q! 不保存强制推出. :wq 保存并退出.