通过前面的文章,已经把用于功能开发的整体技术架构搭建好了,缓存和异步消息架构也确定好了。
接下来看看系统安全方面的架构设计。
一:威胁分析
首先,需要分析哪些方面有安全威胁?然后才能针对性地做安全方面的架构设计,给出具体的解决方案。
常见需要分析的有:
1:数据方面
哪些数据属于机密或敏感数据,会面临什么样的威胁?
被纂改、被破坏、非法访问等
2:软件方面
这方面的安全问题会很多,列举几个常见的:
(1)身份伪造:通过纂改数据,来以其它人的身份使用系统
(2)越权操作:通过一些措施,超越系统分配给自己的权限,访问了本来无权访问的资源。
(3)权限滥用:滥用自己的权限,做出破坏系统的行为
(4)抵赖:不承认自己收到的信息或所做的系统操作
(5)泄密:把机密信息泄露给他人,比如:忘记删除调试代码,显示了短信验证码
(6)纂改:非法修改信息,破坏信息系统完整
3:硬件方面
硬件设备故障,比如磁盘坏了,内存坏了之类的。
4:服务方面
网络服务故障、
操作系统故障
网络安全服务故障
等等
5:管理
这个也是一个不容忽视的方面,虽然系统对此基本无能为力,因为管理方面多半是人为的问题,但要引起大家重视。比如:
(1)操作失误
(2)物理攻击:直接物理接触、物理破坏
6:其它
(1)黑客攻击:利用黑客工具或技术,对系统进行攻击,如:密码猜测攻击、缓冲区溢出攻击、拒绝服务攻击等等
(2)恶意代码和病毒:这个没啥可说的
(3)物理环境威胁:比如断电、火灾、地震等等
大家会看到,一个系统面临的威胁,来自方方面面,还是比较多的。
其实除了威胁分析,还需要做漏洞评估、风险分析等,它们也会影响到安全,只不过跟软件开发的关系不是那么紧密,这里就不去多说了
二:确定整体的安全体系架构
1:确定访问协议
不同的访问协议,会有不同的技术要求和实现,比如我们确定项目中使用访问协议: