太长不读版:试图从安全的全局视角触发,探讨安全的重要性,讨论如何识别安全问题的方法,介绍.NET提供的与安全相关的基础设施,以及一些与时俱进的安全问题,为读者建立体系化的安全思考框架。
引言
关于"安全"二字,"一千个读者有一个哈姆雷特",有人说安全就是杀毒软件,有人说安全就是第三方软件的安全扫描,有人说安全就是渗透性攻击,而提到安全开发,大部分人则基本上没有进一步的认知,这又是什么新词?
由于不同理解的存在,使得企业应用开发者们很难从全局视角看待安全问题。如果我们联系当下的互联网新故事,或许会对这个概念有进一步的理解。
近期大事件:
近期互联网大厂系统有点不太稳定,前不久发生的热点:
阿里云崩了,由于RAM 系统出现故障,长达两小时的时间,使用了ak/sk 的应用调用都出现了问题,没过几天,阿里云的数据库也崩了,影响范围之大,一度被人以为是"年度之最"。然而,没过几天滴滴又崩了,据滴滴通报,由于底层系统原因,造成系统故障。本次事故预计持续时间长达20小时,由于滴滴面向全国人民、打车也是许多人日常出行的首选,其影响范围堪称空前绝后,刷新年度之最。随后,腾讯视频也出现了一些故障,与前两者相比可能没那么大,但事故方同样作为互联网顶流,自然而然也就备受关注。连续几起事故,使大家不得不怀疑,怀疑过去大厂所吹嘘的"安全",搞不好都是人肉运维的功劳。
再往前,某直播平台CEO失联,有人说是平台上出现了赌博行为,一些主播利用直播平台进行操作,吸引观众下注,从中获取收益,有些"房间"一度每天流水几个亿,这种骚操作真的让人想都想不到。
再往前,某大型电商平台出现了个人信息泄漏事故,据说几十亿订单数据被人打包贩卖,根据图片来看,订单数据中包含用户真实姓名、订单号、商品名称型号、订单网址、用户手机号、地址等详细隐私信息。国人为数不多的隐私数据又一次当成了商品。
当然,除了国内有这种事故,国外也有,年初,推特推特发生信息泄漏,约2.35亿用户个人信息被泄。由此说明人类命运相互联系,跨越时空,无论你身处何处,总会被人关注,而你我的隐私数据,也是一些人最为关注的金矿。
安全是什么,安全开发是什么?
新闻再多,只要没发生在自己身上,终究只是故事,但只要发生在我们身边,就得成为"事故",如果我们悲催的成为当事人,到时候肯定没办法去冷静的旁观事态的发展,得想尽办法去做各种善后措施,所以如果我们能利用这些教训,将助我们快人一步。
总结经验有三种方法,一种从别人的教训中总结经验,一种从自己的教训中总结经验,还有一种是从不总结经验。这些大厂们付出了巨额代价,给我们留下了思考:我们该怎么做以便避免此类事故的发生?这便是个安全话题。
安全,从广义上分为内容安全,数据安全,设备安全,行为安全。通俗理解,内容就是合规性问题,数据是指数据的产生、存储、分发的安全,行为是指操作过程和方法,设备就是主机和环境,通过这四个维度,使安全得以全方向的覆盖。
在软件开发过程中,如何将代码与各大安全结合起来,这就是属于安全开发的工作范围,笔者认为,安全开发贯穿在四大安全主题之中,是软硬件架构的一大核心关注点。这就要求我们在开发过程中,建立一套好的安全开发指导规则,这种开发准则不应受到软件部署架构复杂性的影响,放诸单体和服务化而皆准。
这就意味着我们应升维思考,不仅仅需要考虑解决问题,更需要考虑如何识别和防范问题,问题STRIDE和TARA 方法是两种常见的威胁建模分析方法。这两种方法,各有利弊,有时候可能还要结合起来使用。
作为成熟的企业应用框架,ASP.NET CORE 也推出了一系列与安全相关的基础设施,依托这些基础设施,使得我们能快速的将安全融入到产品开发之中。这些基础设施涵盖四大安全主题,如认证和鉴权,即便成熟如斯,它也在不断的升级完善,加密算法库又进一步充实,在应对安全性问题面前,我们的弹药又多了一点。
时代在发展,新技术也在不断涌现,以DevOps为代表的新型生产方式既在推动产业变革,也带来了新的挑战,而安全性问题首当其冲,引入的工具并非高枕无忧,说不定哪天就引入了新的风险因素,例如Jenkins ,作为一款专业的持续集成工具,它也几度因安全问题而带来骂名,容器也同样如此,一个小小的日志就可能把主机给打崩了。
结语
软件开发,看似稀松平常,奈何总有***民想要谋害我们(当然,有时候可能是自己人挖坑),所以有时候我们需要提前防范。作为一位开发者,笔者由于经常关注这些问题,形成了一些思考,并在.NET Conf China上与业界同仁共同探讨,期待能借助.NETCONF这个平台,抛砖引玉。
欢迎大家通过扫描二维码关注,同时还有几张讲师权益票,需要的朋友可以联系我,先到先得,送完为止。