应用软件系统安全性设计.pdf
应用软件系统安全性设计
应用软件系统安全性设计
引言
应用程序安全是一个广泛的领域,类似于OSI网络分层
模型,存在不同的安全层面。为了确保一个应用系统是安全的,
必须在不同层面上都具备足够的安全性。本文将讨论应用系统
本身的安全问题。
安全多层模型
应用系统安全涉及哪些内容
1)系统级安全
系统级安全是应用系统的第一道防护大门,包括访问IP
段的限制、登录时间段的限制、连接数的限制、特定时间段内
登录次数的限制等。
2)程序资源访问控制安全
程序资源访问控制安全对程序资源的访问进行安全控制。
在客户端上,为用户提供和其权限相关的用户界面,仅出现和
其权限相符的菜单、操作按钮;在服务端则对URL程序资源
和业务服务类方法的调用进行访问控制。
3)功能级安全
功能级安全会对程序流程产生影响,如用户在操作业务记
录时,是否需要审核,上传附件不能超过指定大小等。这些安
全限制已经不是入口级的限制,而是程序流程内的限制,在一
定程度上影响程序流程的运行。
4)数据域安全
数据域安全包括两个层次,其一是行级数据域安全,即用
户可以访问哪些业务记录,一般以用户所在单位为条件进行过
滤;其二是字段级数据域安全,即用户可以访问业务记录的哪
些字段。
应用系统安全设计
应用系统安全设计需要考虑多个层面,包括系统级安全、
程序资源访问控制安全、功能级安全、数据域安全等。在设计
时,需要根据应用系统的组织机构特点来决定选择何种授权模
型。同时,需要在不同层面上都具备足够的安全性,确保应用
系统的安全性。
应用系统的安全可以从四个层次进行分类,依次为系统级
安全、程序资源访问控制安全、功能性安全和数据域安全。不
同的应用系统对系统级安全的关注点有所不同,有些业务系统
甚至不需要考虑系统级安全问题。对于无明显组织机构的系统,
例如论坛和内容发布系统,一般没有数据域安全问题,数据对
于所有用户都是一视同仁的。
不同的应用系统对数据域安全的需求有很大的差别,其中
业务相关性比较高。对于行级的数据域安全,可以分为以下几
种情况:大部分业务系统允许用户访问其所在单位及下级管辖
单位的数据,此时组织机构模型在数据域安全控制中扮演着重
要的角色。还有一些系统允许用户访问多个单位的业务数据,
这些单位可能是同级的,也可能是其他行政分支下的单位。对
于这样的应用系统,一般通过数据域配置表配置用户所有有权
访问的单位,并通过这个配置表对数据进行访问控制。在一些
保密性要求比较高的系统中,只允许用户访问自己录入或参与
协办的业务数据,即按用户ID进行数据安全控制。还有一种
比较特殊情况,除进行按单位过滤之外,数据行本身具有一个
安全级别指数,用户本身也拥有一个级别指数,只有用户的级
别指数大于等于行级安全级别指数,才能访问到该行数据。例
如在机场入境应用系统中,一些重要人员的出入境数据只有拥
有高级别指数的用户才可查看。
一般业务系统都有行级数据域控制的需求,但只有少数业
务系统会涉及字段级数据域控制,后者控制粒度更细。字段级
数据域安全一般采用以下两种方式:通过配置表指定用户可以
访问业务记录哪些字段,在运行期,通过配置表进行过滤;业
务表的业务字段指定一个安全级别指数,通过和用户级别指数
的比较来判断是否开放访问。
程序资源访问控制安全是最常见的应用系统安全问题,几
乎所有的应用系统都会涉及到这个安全问题。它的粒度大小界
于系统级安全和功能性安全两者之间,而且业务相关性很小,
容易总结出通用的模型,甚至可以通过的框架解决。例如最近
开始流行的Acegi安全框架就为解决该问题提供了通用的方案。
程序资源访问控制分为客户端和服务端两个层面,类似于
表单数据校验分为服务端和客户端校验两个层面。客户端和服
务端访问控制都是程序资源访问控制的重要层面。
联合描述
这种方式是将编码和程序资源描述结合起来,形成一个统
一的程序资源描述,如Java中的注解。这种方式将程序资源
和访问控制逻辑解耦,维护性较好,但需要在程序中使用注解
来描述程序资源,增加了一定的开发工作量。
通过配置文件描述
将程序资源描述信息放在配置文件中,通过读取配置文件
来实现程序资源的访问控制。这种方式的优点是可扩展性