网站规划与建设重点内容,网站建设5000费用,天津圣辉友联网站建设,做网站在哪接单一、前言一般安全都属于运维部下面#xff0c;和上家公司的运维总监聊过几次一些日常安全工作能不能融入到DevOps中#xff0c;没多久因为各种原因离职。18年入职5月一家第三方支付公司#xff0c;前半年在各种检查中度过#xff0c;监管形势严峻加上大领导对安全的重视(主… 一、前言一般安全都属于运维部下面和上家公司的运维总监聊过几次一些日常安全工作能不能融入到DevOps中没多久因为各种原因离职。18年入职5月一家第三方支付公司前半年在各种检查中度过监管形势严峻加上大领导对安全的重视(主要还是监管)所有部门19年的目标都和安全挂钩。由于支付公司需要面对各种监管机构的检查部分安全做的比较完善经过近一年对公司的熟悉发现应用安全方面比较薄弱。这部分业内比较好的解决方案就是SDL和各厂商交流过之后决定自己照葫芦画瓢在公司一点一点推广。上图为标准版的SDL,由于运维采用DevOps体系测试也使用自动化进行功能测试版本迭代周期比较快,安全人手不足加上对SDL的威胁建模等方法也一头雾水、如果把安全在加入整个流程会严重影响交付时间。在这种情况调研了一些业内的一些做法决定把SDL精简化 。精简版SDL如下.二、精简版SDL落地实践安全培训SDL核心之一就是安全培训所以在安全培训上我们做了安全编码、安全意识、安全知识库、安全SDK安全编码我们在网上找了一些java安全编码规范、产品安全设计及开发安全规范结合公司实际业务出了一版。因为各种监管机构对培训都有要求借此推了一下安全培训定期对开发和新员工入职的培训。安全意识公司有企业微信公众号大部分员工都关注了在公众号推广了一波。宣传完之后答题答题满分送小礼品因为人手不足而功能测试和安全测试本质上有很多相通的地方测试部门也比较配合针对测试人员做了一些安全测试相关的培训但是效果并不是太理想。安全知识库在漏洞修复过程中开发很多不太了解漏洞原理、修复方案所以我们建立了安全知识库开发先到安全知识库查相关解决方法。找不到的再和安全人员沟通安全人员对知识库不断更新形成一个闭环。安全SDK由于公司有架构部门开发框架基本是架构部门提供。我们将一些常见的漏洞和架构部门沟通之后让架构将一些漏洞修复方式用SDK实现开发只需要导入JAR包在配置文件中配置即可。其中也挺多坑的需要慢慢优化。三、 安全需求设计公司有项目立项系统所有的项目立项都需要通过系统来进行立项安全为必选项评审会安全也必须要参与这个时候基本上项目经理会找安全人员进行沟通copy了一份VIP的产品安全设计规范根据需求文档和项目经理确定安全需求。确认好安全需求之后将按需求加入到需求文档并确认安全测试时间此流程只针对新项目已经上线的项目的需求并未按照此流程后续在安全测试时候会讲到这部分的项目是怎么做的。四、开发、安全测试安全测试主要分为代码审计漏洞扫描手工安全测试。由此衍生出来的安全产品分为3类。DAST动态应用程序安全测试 (wvs,appscan)、SAST静态应用程序安全测试 (fortify,rips)、IAST交互式应用程序安全测试 (seeker雳鉴),这三种产品的详细介绍可以参考https://www.aqniu.com/learn/46910.html,下图为三种产品的测试结果对比。这几类产品实现了自动化可以继承到DevOps中。接下来我们将这些工具融入到开发测试阶段。IAST的实现模式较多常见的有代理模式、VPN、流量镜像、插桩模式本文介绍最具代表性的2种模式代理模式和插桩模式。一些调研过的产品如下图具体测试结果就不公布了。开发阶段在对几类产品调研的时候发现IAST的插桩模式可以直接放到开发环境开发环境和测试环境的代码区别主要还是在于application.yml配置文件所以可以提前将该模式放到开发阶段。开发写完代码提交到gitlab部署到开发环境启动应用的时候开发需要验证一下功能是否可用这个时候就可以检测出是否存在漏洞。公司在测试环境使用rancher把IAST的jar包放入到项目的gitlab,在部署的时候把代码拉到本地通过修改Dockerfile文件把jar包添加到容器。ADD shell/xxx.jar /home/app/xx/lib
由于公司项目基本统一使用spring-boot所有的项目都通过一个start.sh脚本来启动应用start.sh和Dockerfile一样需要添加到项目的gitlab同时修改start.sh脚本文件即可。-javaagent:$APP_HOME/lib/xx.jar -jar $APP_HOME/app/*.jar --spring.profiles.activedev $APP_HOME/logs/startup.log 21
测试项目如下忽略错别字开发提交代码部署完之后访问一下正常的功能即可在平台上看见是否存在漏洞。部分产品同时还会检测第三方组件包。公司使用harbor来对镜像进行当仓库镜像项目部署完成之后会打包成一个镜像上传到harborharbor自带镜像扫描功能。测试阶段开发完成之后进入到测试阶段。这个阶段我们进行静态代码扫描功能测试安全测试。静态代码扫描利用静态代码扫描工具对代码在编译之前进行扫描并在静态代码层面上发现各种问题其中包括安全问题。部分工具列表静态代码扫描我们采用sonarQube集成我们使用的是FindbugSecurity,精简规则然后在持续构建过程中进行静态代码bug,安全扫描。静态代码扫描的同时也可以扫描第三方依赖包OWSAP的Dependency-Check就可以集成到持续构建过程中由于IAST类产品支持该功能不多做介绍。功能测试功能测试方面公司测试部门实现了自动化测试平台前期我们并未使用agent的方式检测一开始使用开源的gourdscan加上openrasp利用openrasp的默认开启不拦截模式和漏洞记录功能来检测服务端无返回的漏洞。只需要在自动化平台上配置代理IPopenrasp漏洞记录后来测试反馈扫描的脏数据太多效果也并不是很好就放弃了此方案。改用开发阶段的IAST的插桩方式同样在测试环境也和开发环境一样利用agent来检测问题。功能测试完成之后。由于测试人员对漏洞并不是太理解所以定的流程为测试人员到平台查看报告和安全人员沟通哪些问题需要修复然后将问题写入到测试报告安全测试在测试阶段已经将安全加入到整个流程里面所有需求更改完成都需要通过功能测试也就是所有的流程过一遍安全测试这样安全人手也不是很足决定采用内外服务区分的办法来确定是否需要安全人员介入漏洞管理漏洞管理这一块制定了漏洞管理制度根据影响程度对漏洞进行评级严重漏洞必须改完之后才能上线高中低危漏洞且影响较小需要排期安全人员定期跟踪漏洞修复情况。五、 监控支付公司一般安全设备基本都有这一块基本上将设备的syslog打到日志中心可视化并定制对应的规则实现告警即可六、结束语个人知识和经验不足对sdl的体系并不是很熟悉没什么经验所以只能做到目前的程度。后续还有许多地方可以优化增加流程等。如果有什么好的建议欢迎交流来源 https://xz.aliyun.com/t/5656