应用软件系统安全性设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

应用软件系统安全性设计

应用软件系统安全性设计

引言

应用程序安全是一个广泛的领域,类似于OSI网络分层

模型,存在不同的安全层面。为了确保一个应用系统是安全的,必须在不同层面上都具备足够的安全性。本文将讨论应用系统本身的安全问题。

安全多层模型

应用系统安全涉及哪些内容

1) 系统级安全

系统级安全是应用系统的第一道防护大门,包括访问IP

段的限制、登录时间段的限制、连接数的限制、特定时间段内登录次数的限制等。

2) 程序资源访问控制安全

程序资源访问控制安全对程序资源的访问进行安全控制。在客户端上,为用户提供和其权限相关的用户界面,仅出现和其权限相符的菜单、操作按钮;在服务端则对URL程序资源和业务服务类方法的调用进行访问控制。

3) 功能级安全

功能级安全会对程序流程产生影响,如用户在操作业务记录时,是否需要审核,上传附件不能超过指定大小等。这些安全限制已经不是入口级的限制,而是程序流程内的限制,在一定程度上影响程序流程的运行。

4) 数据域安全

数据域安全包括两个层次,其一是行级数据域安全,即用户可以访问哪些业务记录,一般以用户所在单位为条件进行过

滤;其二是字段级数据域安全,即用户可以访问业务记录的哪些字段。

应用系统安全设计

应用系统安全设计需要考虑多个层面,包括系统级安全、程序资源访问控制安全、功能级安全、数据域安全等。在设计时,需要根据应用系统的组织机构特点来决定选择何种授权模型。同时,需要在不同层面上都具备足够的安全性,确保应用系统的安全性。

应用系统的安全可以从四个层次进行分类,依次为系统级安全、程序资源访问控制安全、功能性安全和数据域安全。不同的应用系统对系统级安全的关注点有所不同,有些业务系统甚至不需要考虑系统级安全问题。对于无明显组织机构的系统,例如论坛和内容发布系统,一般没有数据域安全问题,数据对于所有用户都是一视同仁的。

不同的应用系统对数据域安全的需求有很大的差别,其中业务相关性比较高。对于行级的数据域安全,可以分为以下几种情况:大部分业务系统允许用户访问其所在单位及下级管辖

单位的数据,此时组织机构模型在数据域安全控制中扮演着重要的角色。还有一些系统允许用户访问多个单位的业务数据,这些单位可能是同级的,也可能是其他行政分支下的单位。对于这样的应用系统,一般通过数据域配置表配置用户所有有权访问的单位,并通过这个配置表对数据进行访问控制。在一些保密性要求比较高的系统中,只允许用户访问自己录入或参与协办的业务数据,即按用户ID进行数据安全控制。还有一种比较特殊情况,除进行按单位过滤之外,数据行本身具有一个安全级别指数,用户本身也拥有一个级别指数,只有用户的级别指数大于等于行级安全级别指数,才能访问到该行数据。例如在机场入境应用系统中,一些重要人员的出入境数据只有拥有高级别指数的用户才可查看。

一般业务系统都有行级数据域控制的需求,但只有少数业务系统会涉及字段级数据域控制,后者控制粒度更细。字段级数据域安全一般采用以下两种方式:通过配置表指定用户可以访问业务记录哪些字段,在运行期,通过配置表进行过滤;业务表的业务字段指定一个安全级别指数,通过和用户级别指数的比较来判断是否开放访问。

程序资源访问控制安全是最常见的应用系统安全问题,几乎所有的应用系统都会涉及到这个安全问题。它的粒度大小界于系统级安全和功能性安全两者之间,而且业务相关性很小,容易总结出通用的模型,甚至可以通过的框架解决。例如最近开始流行的Acegi安全框架就为解决该问题提供了通用的方案。

程序资源访问控制分为客户端和服务端两个层面,类似于表单数据校验分为服务端和客户端校验两个层面。客户端和服务端访问控制都是程序资源访问控制的重要层面。

联合描述

这种方式是将编码和程序资源描述结合起来,形成一个统一的程序资源描述,如Java中的注解。这种方式将程序资源

和访问控制逻辑解耦,维护性较好,但需要在程序中使用注解来描述程序资源,增加了一定的开发工作量。

通过配置文件描述

将程序资源描述信息放在配置文件中,通过读取配置文件来实现程序资源的访问控制。这种方式的优点是可扩展性好,程序资源的描述信息可以在不修改程序代码的情况下进行修改,但需要在程序中读取配置文件,增加了一定的运行时开销。

2)程序资源如何进行访问控制

程序资源的访问控制方式有两种:基于角色的访问控制和基于权限的访问控制。基于角色的访问控制是将用户分配到不同的角色中,每个角色拥有不同的程序资源访问权限。基于权限的访问控制是将用户分配到不同的权限中,每个权限对应一个或多个程序资源。

3)程序资源如何进行授权

程序资源的授权方式有两种:静态授权和动态授权。静态授权是将用户授权信息存储在数据库中,程序在运行时根据用户的授权信息进行访问控制。动态授权是将用户授权信息存储在缓存中,程序在运行时先从缓存中获取用户的授权信息,如果缓存中不存在,则从数据库中获取。

4)程序资源如何进行审计

程序资源的审计是指对程序资源的访问进行记录和分析,以便及时发现和处理异常情况。程序资源的审计方式有两种:基于日志的审计和基于监控的审计。基于日志的审计是将程序资源的访问记录保存在日志文件中,通过分析日志文件来发现异常情况。基于监控的审计是通过监控程序资源的访问情况来发现异常情况。

很多应用系统在设置用户访问控制权限时采用了一种简单的方式,即仅将系统所有的菜单列出,通过为用户分配菜单的

方式分配权限。然而,这种方式仅仅实现了客户端的访问控制,没有真正实现程序资源的访问控制,应该说是一种初级的解决方案。因此,更好的做法是在建立程序资源和权限的关联关系的同时建立程序资源和界面功能组件(菜单、功能按钮)的关联关系,以实现程序资源的访问控制。

在访问控制中,界面功能组件是调用程序资源的入口,而真正需要保护的是执行业务操作的程序资源。因此,权限分配应该以程序资源为基础,而非界面上的入口。虽然有些应用系统通过菜单分配权限,在服务端也对程序资源进行控制,但这种权限分配的方式有点本末倒置。

访问模型包含程序资源、界面功能组件、权限、角色、岗位、用户、用户组和组织机构等概念。其中,角色是权限的集合,岗位是特殊的角色,表示一个职位对应的所有权限。用户是系统的操作者,拥有若干个权限。用户组是用户的集合,有别于行政意义的单位。组织机构是行政体系的上下级单位构成的组织机构,用户是组织机构的成员,在进行授权时,组织机构扮演着重要的角色。

相关文档
最新文档