随着计算机技术的发展和普及,软件管理形式由复杂繁琐的手动管理方式向自动化、 规范化的平台管理模式过渡, 特别是当需要管理的软件数量众多时,采用平台管理模式能够极大地提高软件管理的灵活性和可靠性,在降低对工作人员专业知识要求的同时能提高软件安装/升级的可靠性,降低故障率,在实际应用中发挥着不可替代的作用[1]。 软件仓库作为最常见的软件管理平台,是操作系统上各类应用软件中的重要组成部分,在软件管理过程中其安全性能的好坏直接影响应用软件的安全性。 当软件仓库存在潜在安全风险时,恶意人员会趁机利用其来达到目的,如对仓库中的应用软件植入木马病毒、修改软件执行流程、软件滥用等,这会给软件使用者带来重大损失,同时也会给软件公司造成负面影响。 要想保证软件仓库中应用软件的安全性,软件仓库在设计上就应充分考虑到安全性问题。
当前,典型的软件仓库包括由桌面系统发行商自身开发维护的如微软的Windows应用商店、苹果的Mac App Store、 优麒麟的Ubuntu Kylin软件中心等与操作系统结合比较紧密的软件仓库,以及由一些第三方应用软件公司开发的如360软件管家、腾讯软件管家和百度软件管理等管家类软件仓库。 他们都能为桌面操作系统获取应用软件提供便利,使分散的软件开发者、使用者和管理者得到有效整合,进一步方便了开发者发布软件、使用者下载、安装、升级软件与管理者维护软件。 其中,开发者根据自己的知识背景、实际应用需求,设计开发出各种方便人们使用的应用软件,管理者则负责将开发者开发出的各种应用软件进行审核后发布到软件仓库中,这样当用户有应用软件需求时,就可以直接到可信任的软件仓库下载,极大方便了计算机用户,也为应用软件的统筹发展提供了便利平台,软件管理平台任务的直观描述如图1所示。
C/S和B/S作为应用程序的两大主流开发模式技术架构,各有优缺点[2]。 软件仓库通常采用的是C/S架构,该架构的突出优点就是可以将任务合理分配到Client端和Server端来实现,可以充分利用两端的硬件环境资源。 基于C/S架构的软件仓库通常由软件包管理和软件包分发系统组成,软件包分发系统部署在服务器端,由专门的管理人员进行管理维护,并通过网络向用户提供软件包信息获取和下载服务;软件包管理部分部署在客户端,负责帮助用户对获取来的软件包格式和内容进行解析从而完成相应操作。 软件管理系统通过这两部分的协调配合,更好地解决了软件的获取、安装等问题。 图2给出了开源操作系统下软件仓库的基本框架。
通过以上对软件仓库任务与框架的分析,软件仓库的安全隐患来源可以归纳为四类实体、两条途径和两处存储。 四类实体分别为分散在各处的开发者、管理员、用户、恶意人员;两条途径分别为途经开放网络的开发者上传与用户下载过程;两处存储涉及服务器端软件包、索引的存储与客户端已下载安装软件包、索引的存储。 影响软件仓库安全的主要因素包括软件包的保密性、完整性、自身安全性与不可抵赖性。 软件包内容需经过加密处理,无权限人员无法获取软件包,即使通过非法手段获取也无法破译出软件包源代码;应用软件包的内容应该确保管理员最终认定原则,之后的其它任何改动都将被视为破坏原有软件包的完整性;防止恶意开发人员在开发软件包中植入后门等;开发者、管理员依次对软件包进行签名,保证软件包来源的可靠性与不可抵赖性。 为了尽可能地消除安全隐患,针对应用软件本身可以采取的保护措施有水印、加密狗、代码混淆、签名认证及软件加壳等, 针对软件仓库采取的保护措施有设计合理的仓库架构、 构建安全性能高的数据传输通道等。
在保证软件仓库安全的保护措施中,角色管控是非常重要的一环,如果能够阻止未经授权人员获取软件,可以有效防止软件滥用,同时,在某些特定机构以及大型企业内部,由于其维护软件包的使用权限不同,有效的角色管控也能够为企业软件管理提供便利。
访问控制技术产生于20世纪60年代,是能够实现既定安全策略的系统安全技术[3], 它通过验证访问者是否对被访问资源拥有权限,能够有效管理使用者对系统资源进行访问, 从而确保对非法用户访问资源和合法用户非法访问资源的有效控制。
访问控制策略有3种,分别是自主访问控制策略(Discretionary Access Control,DAC)、强制访问控制策略(Mandatory Access Control,MAC)和基于角色的访问控制策略(RoleBased Access Control,RBAC)。目前最受大家认同的是基于角色的访问控制策略[4],角色权限管理模型最初是由美国国家标准局(National Institute of Standards and Technology,NIST)在1992年提出的[5],RBAC的核心思想是将系统资源的访问权限进行分类或者建立层次关系,抽象为角色的概念,在用户和权限之间引入角色,然后根据安全策略将用户和角色关联,实现用户和权限之间的对应,避免直接给用户分配权限的复杂性,简化了权限管理。R.Sandhu等人于1996年提出的RBAC96模型[5]是一个模型族,包括4个子模型,分别为RBAC0、RBAC1、RBAC2和RBAC3,综合如图3所示。R.Sandhu等人在RBAC96模型的基础上又先后提出了ARBAC97管理模型[7]和ARBAC99管理模型[8]。
权限控制通俗的讲是解决who,what,how 3者之间的关系,即who(用户、角色)对what(对象)能进行how(何种)操作,在软件仓库这一应用领域解决的就是用户对软件包的下载、安装和升级等操作的控制。 在RBAC管理模型中角色和权限的定义、分配默认是由一组管理人员集中管理的,而且管理权限和规则是预先制定好的、静态的,具有以下特点:
1)授权管理简单:只需将角色赋予用户;
2)赋予最小特权:可以将角色配置成完成任务所需要的最小权限集;
3)责任分离:可以调用相互独立互斥的角色来共同完成敏感任务;
4)数据抽象:通过对权限的抽象体现数据抽象;
5)文件分级、灵活、系统管理模式明确、管理开销小。
综合以上特点,RBAC策略将用户和许可进行分离,使彼此相互独立,权限的授权认证更加灵活,适合用在软件仓库的权限控制模型中,文中以开源软件管理平台为对象,构建了RBAC软件仓库权限控制模型。
对于软件仓库,通常当用户安装好客户端并进入图形化界面后能够看到分类存放的可以从软件源获取并安装的应用软件列表,以及已安装的可升级软件列表和已安装的可卸载软件列表,用户可以根据需求进行简单便捷的操作。 对于某些对安全性要求较高的特殊软件仓库应用环境,需要根据应用软件安全情况建立安全分级的应用软件管理平台,不同权限人员对软件仓库中维护的不同级别的应用软件具有不同的权限(指对软件仓库中的索引、软件包进行下载的许可及可操作的权利),要求软件仓库具有权限控制功能。 将RBAC策略引入软件仓库能够较好的解决这类问题,可根据不同级别用户权限来创建不同角色,同时把用户指定给相应的角色, 这样就利用角色这个桥梁将用户与权限更好的结合在一起, 避免直接把权限分配给用户带来的复杂性与繁琐性。 实际应用中,首先需要根据开源平台下众多软件包的特点对软件包的安全等级及其在服务器端的存放进行合理规划。 开源平台下软件包的特点有:
1)数量多: 不论是rpm包还是deb包, 数量多体现在软件包的个数和种类上;
2)包冲突:不同仓库里存在相同的软件、 不同的软件包中包含相同的文件列表;
3)依赖性强:只有在被依赖软件包安装的基础上依赖软件包才能正常安装运行。
针对以上特点,制定软件仓库中软件包的存放规则:
规则一:将所有软件包按照来源性质分为系统包、应用基础包和自主开发包分类存放;
规则二:同一个软件包存在且只能存在于一个目录下,软件包命名要规范化,尽量避免软件包中的文件冲突;
规则三:被依赖软件包的安全等级永远低于等于依赖软件包。
按照上述规则构建软件包存放分支,其中属于系统包、应用基础包的软件包权限设定为公开,合法注册用户都可以通过获取软件包索引获取软件包,自主开发包需按安全等级建立分支分别存储,不同级别用户具有不同获取权限。
图4对自主开发包以四级权限划分为例,给出了基于RBAC的软件仓库安全管理模型,该模型中将服务器端软件仓库中自主开发包分为密级1、密级2、密级3和公开四类, 通过调用索引生成程序分别生成相应索引并存储。 对应软件仓库中软件级别的划分,需要创建四类角色,分别为角色1、 角色2、角色3和角色4,角色与权限的对应关系由图4可以清晰地反映出来,这样就能更好地实现软件管理平台对用户的权限控制。由于软件包密级的制定遵循规则三,所以在安装依赖关系复杂的软件包用户获取被依赖软件包过程中不存在密级过高无法获取的情况。
基于RBAC的仓库权限控制模型通过在用户与软件包索引之间引入角色,避免了无角色时直接将软件包索引下载、 更新权限授予用户的复杂性,不管用户级别作出何种改变,只需根据数据库中用户等级信息将相应的角色授予用户,不同角色具有的权限一旦被初始化分配好后,无需调整,权限管理机制相对稳定。
引入RBAC权限控制策略后,软件管理平台的工作流程如图5所示。 用户首先需要进行注册,管理员根据注册用户的情况对用户进行分级并存储。 当用户登陆软件管理平台时,系统需要进行身份验证,以保证有效用户的登录,然后给验证身份通过的用户赋予相应的角色从而获取仓库中索引生成特定软件列表界面。
结合RBAC模型与软件仓库应用实际,在软件仓库数据库设计中必须包含用户表、角色表、资源表、操作表、权限表、 用户角色表(角色分配表)、角色权限表(授权表)。 其基本数据库模型设计如图6所示。
其中,通过权限表(RBAC_Prililege)将操作与资源相关联,通过授权表(RBAC_Impower)向角色分配资源,通过角色分配表(RBAC_Allot)将角色分配给用户,这样就实现了基于RBAC模型的软件仓库的权限控制。
图6软件管理平台RBAC数据库模型图Fig.6 The diagram of database model of software management platform based on RBAC 下载原图
结合3.1节中给出的RBAC数据库模型图,RBAC数据库中表结构的设计如表1到表7。
在表5中,权限编号1表示下载密级2自主开发包索引的权限,表6授权表中授权编号1将权限编号1授予角色编号为1的角色,即将下载密级2自主开发包索引的权限授予角色1,完成了角色授权。 当用户登录软件管理平台时,系统会根据用户注册时管理员给分配的用户表中的用户名、用户密码和用户等级对用户进行身份验证,验证通过后,系统通过判断将相应用户等级的的角色赋予用户,即填写角色分配表,这样用户就有了相应角色的权限,完成了用户的角色分配,同时将用户状态填为1,表示用户处于登录状态。
在分析软件仓库基础框架及其安全性的基础上,针对现有软件仓库特定应用需求中权限控制方面存在的不足和软件包的特点,结合RBAC访问控制模型,提出了一种基于RBAC的软件仓库安全管理模型, 并在此模型基础上进行RBAC数据库的设计。 该模型通过引入角色的概念,降低了用户操作权限授权的复杂性,增加了软件仓库的安全性和可控性,简单实用。
标签:
上一篇: 手机阅读平台仓库管理模块的设计与实现
下一篇: 横梁式货架仓库的智能化管理实现方案