数据访问对象

2024-07-20

数据访问对象(精选九篇)

数据访问对象 篇1

数据库技术主要解决信息处理过程中大量数据的有效组织和存储问题, 其主要优点在于减少数据存储冗余、实现数据共享、保障数据安全以及高效的检索和处理数据。但在实际应用中, 数据库系统存在操作复杂, 界面不直观等问题, 影响了工作人员的使用效率。

在日常办公中, 很多事情Excel能够比数据库做的更好, 包括计算、分析和绘制图表等, 并且其在普通人群中也有很高的普及率。通过Excel能够对数据库中的数据进行访问, 常见的数据库类型有:Access、SQL Server、Oracle等, 本文以Access数据库为例, Access数据库类似于Excel工作表, 其中包括多个行列数据。

VBA (Visual Basic for Application) 是微软开发的、在其桌面应用程序中执行通用的自动化任务的编程语言。Excel是最早支持VBA的Office组件, 现在所有的Office组件都支持VBA编程。

1 Excel中使用ADO对象访问数据库

ADO (ActiveX Data Objects, 即ActiveX数据对象) 是微软最新的数据访问技术, 用来提供通用数据访问。使用ADO是Excel中快速有效的访问数据库的最佳方法。其中主要包括三个对象成员以及相关的操作, Connection对象用来建立数据源, Recordset对象用来记录数据库访问结果, Command对象用来执行SQL语句。

本文在Excel文档中, 通过VBA代码来建立ADO对象, 根据用户输入和操作, 生成SQL命令, 实现数据库的查询操作, 并且将结果显示到表格中。

程序流程如图1所示。要在VBA中使用ADO对象, 必须先为当前工程引用ADO的对象库, 在“工具”-“引用”中选择“Microsoft ActiveX Data Ob-jects 2.8 Library”。然后按照如下步骤访问数据库:

(1) 使用Connection对象的Open方法创建一个新的Connection对象。

(2) 使用Command对象的Execute方法执行SQL查询语句, 查询结果记录到Recordset中。

(3) 从Recordset对象中, 获取需要的数据。

(4) 最后, 使用Connection对象的Close方法关闭打开的数据库连接, 释放内存。

2 人事数据查询示例系统流程

本文使用上述程序流程, 建立示例系统的流程如下:首先建立Excel文档, 加入列表框、文本框、按钮等控件, 让用户进行查询条件输入和操作, 并且在VBA代码中对输入结果进行自动检查, 在查询条件为空的情况下进行提示, 如图2所示。

如果输入条件不为空, 根据用户输入, 自动生成SQL查询语句, 通过ADO对象访问数据库。最终将查询结果保存到Excel文档中, 如图3所示。

结构化查询语言SQL (Structured Query Language) 是目前各种关系数据库系统广泛采用的标准语言。SQL语句通常用于完成一些数据库操作任务, 包括:查询、插入、更新、删除等功能。其标准格式如下:

SELECT * FROM table expression

[WHERE …]

[ORDER BY …]

该语句的功能是, 根据WHERE子句的条件, 从FROM子句给出的表或视图中检索记录, 按照SELECT子句中的字段形成结果表, ORDER BY子句将结果按指定顺序排列。

本文示例主要函数VBA代码如图4所示。

3 结束语

本文在Excel文档中通过VBA编程, 建立ADO对象来查询数据库系统, 并显示到表格中, 实现了一些最简单的查询操作。实际ADO技术可以和数据库进行复杂的交互, 除了查询外, Recordset对象还可以完成对数据的增加、删除、修改等操作, command对象也支持标准的SQL语句的执行, 这些都有待后续的深入研究。以上程序经过实际测试, 达到预期结果。

摘要:数据库技术在处理大量数据, 进行规范存储时具有很大优势, 但其操作技术复杂, 而Excel在日常工作中应用广泛, 并且在分析数据、绘制图表等方面简单易用。微软最新的ADO技术, 将Excel和数据库接合起来, 综合了它们的优点。文中以人事数据查询为例, 通过ExcelADO对象来访问数据库, 并且通过VBA代码自动化处理相关数据, 生成表格。

关键词:ADO,Excel,数据库

参考文献

[1]卜晓燕.基于EXCEL的数据报表系统的研究与实现[J].信息技术, 2010 (12) :32-34, 37.

[2]郝惠馨, 辛明影.基于Excel的数据处理方法[J].东北林业大学学报, 2010 (10) :131-132.

[3]夏芸, 赵诚.Excel中公式和函数教学的研究与探讨[J].电脑知识与技术, 2011 (7) :1705-1706, 1709.

[4]赵小娟, 王才善.基于Excel的报表生成系统的实现[J].铁路计算机应用, 2012 (4) :70-72, 75.

[5]万青.无组件生成Excel报表的研究和实践[J].科技信息, 2010 (33) :495-496.

数据访问对象 篇2

1.鼠标右键点击左上角图标,选择“自定义快速访问工具栏”:

2.点击“信任中心”,然后点击右侧“信任中心设置”:

3.点击“宏设置”,选择“信任对VBA工程对象模型的访问”,点击“确定”,

如何在 Excel 2007 中设置“信任对VBA工程对象模型的访问”EXCEL 2007

浅谈JSP及访问数据库技术 篇3

关键词JSP技术;HTML;XML;JAVA库单元;JDBC技术;连接池技术

中图分类号TP3文献标识码A文章编号1673-9671-(2010)072-0030-01

Java被公认为是第一个专门面向Internet和Web环境的语言。它具有面向对象的、分布式的、与平台无关的、高性能的、多线程的、动态的等许多优异的特点。这决定了它是发展数据库极好的语言。JSP是基于Java语言的脚本技术,可用于创建跨平台、跨Web服务器的动态网页,其中经常要调用数据库。

JDBC(Java Database Connectivity,简称为JDBC)是Java语言访问数据库的标准接口,是一种真正意义上通用的、与平台无关的数据库标准API。它允许各类系统互相兼容和共享,为网络上的跨平台数据库应用提供了一种简洁、有效、安全的实现手段。JDBC不仅解决了数据库的互操作问题和跨平台应用,而且客户机只需安装少量代码就可以通过JDBC访问数据库。

数据库连接池技术是建立在JDBC技术之上的优化数据库访问技术,它的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。更为重要的是我们可以通过连接池的管理机制监视数据库的连接的数量、使用情况,为系统开发﹑测试及性能调整提供依据。

1JSP技术

JSP(Java Server Pages)是以Jaca语言作为脚本语言的,JSP网页为整个服务器端的Java库单元提供了一个接口来服务于HTTP的应用程序。Java代码和特定的预定义动作可以嵌入到静态页面中。JSP句法增加了被称为JSP动作的XML标签,它们用来调用内建功能。JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。另外,可以创建JSP标签库,然后像使用标准HTML或XML标签一样使用它们。标签库提供了一种和平台无关的扩展服务器性能的方法。

JSP被JSP编译器编译成Java Servlets。一个JSP编译器可以把JSP编译成JAVA代码写的servlet然后再由JAVA编译器来编译成机器码,也可以直接编译成二进制码。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。JSP与Java Servlet一样,是在服务器端执行的,通常返回该客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。

2 JDBC技术及实现方法

JDBC(Java Database Connectivity)是Java的开发者SUN的Java soft公司制订的Java数据库连接技术的简称,可为各种常用数据库提供无缝连接技术。JDBC也是Java用于访问数据库的一套标准API,由Java语言编写的一组类与接口组成。JDBC作为一种数据库访问技术存在:易于掌握、使用方便、移植性强、良好的复用性和JDBC-ODBC桥技术等优点,所以在JDBC技术在网站开发过程中得到了广泛的使用。

目前,很多数据库系统都带有JDBC驱动程序,Java程序通过JDBC驱动程序与数据库相连,执行相应的处理操作。而对于只带有ODBC驱动程序而没有JDBC驱动程序的数据库,Sun公司开发了JDBC-ODBC桥,利用JDBC-ODBC桥可以使用带有ODBC驱动程序的数据库。JDBC-ODBC桥是将JDBC访问指令转换成ODBC指令,然后通过ODBC驱动程序完成对数据库的访问。所以Java程序能访问诸如MS SQL Server,Oracle,DB2,sysbase,MySQL等目前流行的各种数据库系统。下面就分析JDBC两种实现方法:

1)通过JDBC专用驱动程序实现数据库访问的方法是通过Java提供的用于各种数据库(MSSQL Server,Oracle,DB2,sysbase,MySQL等)的专用驱动程序来实现对数据库的访问。在使用这种方法之前,首先将相关的数据库专用驱动程序放到服务器的ClassPath路径下,然后在JSP程序中创建数据库连接就可以使用数据库中的信息进行数据处理操作。

2)通过JDBC-ODBC驱动桥访问各种支持ODBC驱动程序数据库,目前大多数的数据库如MS Access,MS SQL Server,Oracle,DB2,sysbase,MySQL等都支持这种方法。通过JDBC-ODBC驱动桥访问MS Access数据库的方法,对其它数据库进行访问的实现方法和它类似。为了提高Java代码的可重用性,完善其分布性應用体系的建立,Sun公司又开发了一种组件技术JavaBean技术,这种技术为软件开发者提供了一种极佳的解决方案,使他们可以利用JavaBean技术封装事务逻辑,很好地实现了业务逻辑和客户端操作的分离,使系统具有更好的适用性和灵活性。利用Java Bean技术进行数据库访问的工作原理是将数据库基本的处理逻辑封装在JavaBean包中,在JSP程序中通过调用JavaBean实现对数据库的访问。

3连接池技术

JSP连接池技术是建立在JDBC数据库连接技术之上的一种优化方案,数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。更为重要的是我们可以通过连接池的管理机制监视数据库的连接的数量,使用情况,为系统开发、测试及性能调整提供依据。数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数来设定的。

数据库连接池技术可以解决JDBC技术效率低下,连接数量少等缺陷。它很好的弥补了JDBC技术,为JDBC技术在互联网的广泛应用提供很好的技术支持。同时也为更前的JSP技术提供很好的发展基础。

4结束语

无论采用何种技术解决数据库开发,其宗旨都是为前台能更好、更快的访问数据库,在后面的技术发展长河中相信现在的JSP技术都能更好的得到发展和继承。

参考文献

[1]动态网站制作指南.JSP数据库连接池的必要.www.knowsky.com[M].2003,8.

[2]Iorishinier.Net与Oracle的数据库连接池[M].

[3]胡永飘,梁荣光,张勇.JSP技术及其在OA系统中的应用[J].计算机技术与发展,2006,16(1):204-206.

作者简介

数据访问对象 篇4

1 Hibernate技术

1.1 简介

在Java语言环境下, Hibernate技术提供了O/R映射解决方法, 该技术为面向对象领域的模型提供了到传统关系型数据库的映射, 是一种方便的框架。其设计主要是为了将软件开发人员从繁琐的编程工作中解放出来。Hibernate负责从Java数据类型向SQL数据类型的映射, 提供对象数据的检索与查询, 降低了手动处理JDBC及SQL上花费的时间。对载入类的过程有效的进行了简化, 降低了利用HQL从数据库提取数据的编码量, 节约了开发成本与时间。通过该技术的使用, 还能够对传统的DAO、JDBC及CMP技术在对持久层开发时遇到的困难很好的进行解决, 提升了生产力。

1.2 原理

Hibernate其实就是一个为数据库提供服务的中间过程, 其工作原理如图1所示:

在Java应用中, Hibernate的作用主要是:通过Hiber nate, 应用程序实现了对数据库的访问和对持久层的操作, 同时Hibernate通过XML Mapping映射文件及properties配置文件将类型映射到数据库中进行记录。进而使Application应用能够通过Hibernate持久化对象直接实现对数据库的访问, 不再通过使用SQL语言及JDBC对数据库进行操作, 节约了时间, 提高了效率。Hibernate的灵活性非常好, 包含多种不同的运行方式。在全面解决体系中, 所有的应用程序底层的JTA API及JDBC都被抽象, 但是Hibernate会对所有的细节照管;在轻型体系中, 通过JDBC连接应用程序, 应用程序自行对事物进行管理, 这种方式是对Hibernate的一个最小子集的使用。

1.3 Hibernate的优势

作为Java开源项目, Hibernate对用户开放底层代码, 用户可以直接对源代码在需要的时候进行修改, 并且可以定制或拓展功能。Hibernate的开发队伍比较活跃, 保证了该技术的长期稳定发展, 由于该技术的使用比较方便, 在桌面程序开发上有较大的优势, 除此以外在企业级应用开发中也得到了广泛的推广。因为Hibernate对JDBC进行了轻量级封装, 实现了用户可绕过Hibernate直接对JDBC API进行访问。Hibernate自身的Transaction实质上就是底层JDBC Transaction的封装, 这就使得数据持久层的开发及调试都得到了极大的简化, 有效的降低了程序员的工作负担。

2 基于Hibernate的Java对象持久化的实现

Java应用程序与数据库之间以Hibernate作为纽带, Hibernate负责数据库与Java对象间的映射。在对Hibernate框架进行应用时, 首先, 应该编写其配置文化;其次, 根据配置文焕生成映射文件, 然后完成数据库与Java对象间的映射, 生成持久化对象;最后, 编写业务逻辑类, 实现业务逻辑。对Hibernate框架在对象持久化中的应用用以下案例进行说明。

首先, 建立数据表。在数据库中建立以userinformation命名的数据表。其次, 创建配置文件。对Hibernate配置文件进行创建时, 包含两种形式, 一种是Java属性文件, 另一种是基于XML的, 文件名通常是hibernate.cfg.xml。为了顺利读取配置文件, 一般将其应用与classpath中。在配置文件中, 设计XML文档的类型定义、Hibernate管理事务、数据库连接的各种参数、管理JDBC连接及产生SQL过程中涉及的数据文件等。第三, 创建持久化类。可以使用标准的Javabean实现Hibernate持久化对象, 数据库中数据表的列与对象的属性是对应的, 包含个数、数据类型等都要一一对应。类的属性要求有setter方法和getter方法, 命名方面要遵循bean的规则。第四, 创建O/R映射文件。通过XML格式文件, Hibernate指定需要持久化的O/R数据库的表之间的映射。第五, 通过Hibernate API对数据库进行访问。要对数据进行操作, 首先需要与数据库进行连接, 按照Hibernate配置文件, 执行连接代码即可完成与数据库的连接。

摘要:Hibernate作为对象持久化工具, 能够通过自身O/R (对象/关系) 映射功能对Java数据库中的对象数据进行映射, 取代了开发人员用JDBC方式操作数据库及对SQL语言的大量使用, 降低了开发的难度, 有效的提高了开发的效率。

关键词:Hibernate,Java数据库,对象/关系

参考文献

[1]丁勇, 潘荫荣, 胡幼华.OJB对象/关系映射机制的研究与应用[J].计算机应用与软件, 2007 (4) .

[2]吴京慧.基于Hibernate对象持久化Web应用的研究.http://www.zytxs.com, 2009 (2) .

数据访问对象 篇5

与传统的访问控制不同之处是, 云平台下的访问控制更加复杂, 主要表现为负责的约束条件、各种属性与角色等。为了应对云计算中面向服务和资源的应用系统需求, 加强云计算系统中的访问控制[3], 本文给出了基于对象和用户的角色访问控制管理模型OURBAC (object-and-user based on RBAC) 。

1 相关工作

云计算访问控制技术一直是云计算安全领域的热点问题。访问控制模型是一种从访问控制的角度出发, 通过描述安全系统, 进而建立安全模型的方法。早些年, 访问控制一般分为自主访问 (discretionary access control, DAC) 和强制访问 (media access control, MAC) 两类, 随着科学的发展, 近年来出现多种访问控制模型, 如基于任务的访问控制模型 (task-based access control model, TBAC) 、基于对象的访问控制模型 (object-based access control model, OBAC) 和基于角色的访问控制模型 (RBAC) 等多种类型[4,5], 目前, 基于角色的访问控制模型 (RBAC) 成为了该领域的研究热点。

自主访问控制 (DAC) , 代表性模型是访问矩阵模型[6]。用户可根据自身的各种需求, 自由地选择与其他用户共享和使用资源。其主要的特点是用户对自身所属的资源具有访问权限, 同时可以分配权限给其他用户。

强制访问控制 (MAC) , 是指系统或管理员根据数据或资源的敏感标签来强制设定访问等级, 实现对客体访问的有效控制。MAC主要用于敏感数据受保护 (如用户的保密信息或敏感数据) 的系统。在强制访问控制中, 系统或管理员按照已定的策略设置资源的属性, 用户无法进行设置和修改, 当用户发送访问请求, 进行比较和匹配来判断是否具有相应的权限。强制访问控制的实质是对系统中资源和使用者分配特定的敏感标签 (sensitivity label) [7]。强制访问控制模型主要有Lattice、BLP[8]和Biba[9]模型等。

基于角色的访问控制RBAC, 将用户影射到角色, 实现用户和权限的逻辑分离, 访问控制权限被授予角色, 用户则通过系统或者管理员为其分配不同的角色对应不同的权限。用户通过扮演不同的角色获得资源的许可权, 相对DAC和MAC两种模型, 增加了很大的灵活性, 同时可显著降低授权管理的代价。RBAC适合应用在云计算环境的访问控制模型中。基于角色的授权是数据拥有者对访问者权限控制的最为普通的方式[7]。

传统的RBAC[10]以及后来基于角色的访问ARBAC[11]、GTRBAC[12]等模型族被以主体为中心的特性限制, 均不能满足云环境中海量用户及高并发访问的能力[13]。文献[14]中许峰等提出面向工作流和服务的WSRBAC模型, 该模型主要针对Web环境, 提出了服务和角色扮演者的概念。

基于RBAC模型, 构建一种对象和用户角色的访问控制管理模型OURBAC。本模型中角色被授予用户访问控制权限和对象访问控制权限, 充分考虑并区分了不同角色用户和不同云计算资源的访问控制[15]。当用户需要获得某一资源的访问权限时, 在用户在需要获得相应的访问证书的同时, 还需要同时拥有用户访问控制权限和对象访问控制权限, 从而在更高程度上实现了云环境中资源的安全访问。

2 OURBAC模型

2.1 相关概念

定义1 Customer:是云计算平台的基本单元, 可以是组织或个体。Customer的结构为Customer=<ID, N, Realm>, 其中, ID表示组织或个体的标识, N是组织或个体的名称, Realm是组织或个体的领域。

定义2 User:能够操作云计算平台的实体用户, User只能属于一个Customer, User名在Customer内是唯一的。User的结构为User≤ID, N, Customer, Role, P>, 其中, ID表示用户的标识, N表示用户的名称, Customer是用户所属的组织, 用户只可以属于一个组织;Role是用户所属的角色, 可以多个不同的角色;P为用户的登录密码。

定义3 Role:具有同样云平台访问权限的集合, Role的权限可以被其从属的User继承。角色的特性包括身份、在一个组织中的位置、子角色以及从属用户。UR的结构为UR=〈ID, Urc, Urm, Sur〉, 其中, ID表示角色身份;Urc是角色位置;Urm是子角色;以及Sur为所从属用户。

定义4 Userpermission:是给用户分配各种用户操作权限。Objectpermission:是Object的拥有者给其他的User分配Object以及具体可支持的操作形式的操作权限。Userpermission与Objectpermission的结构相同, 定义为访问权限 (VP) 。访问权限的特性包括ID (权限标识) , Authorizer (权限授权者) , Subject (权限被授权角色) , Action (支持的对应具体操作) , 以及Object (操作的访问具体对象) 。VP的结构为:VP=〈ID, Authorizer, Subject, Action, Object〉。

定义5访问请求 (Req) :用户向数据或服务提供者发送的访问请求记为Req, Req=〈User, UR, Object, Type, Action〉, 其中, User为访问请求用户的标识名;UR为访问请求用户的所属于的主体角色;Object为访问请求用户请求访问的对象;Type为访问请求用户请求访问的具体动作;Action为访问请求用户请求访问的对象动作。用户的基本信息以及所属于的角色等信息, 包含在用户发送给数据拥有者的访问请求中。

2.2 权限规则的设计

2.2.1 用户是否具有具体权限必须满足的条件

第一:对象所有者所支持的Objectpermission, 必须支持当前对应的具体Action (操作动作) ;第二:访问请求用户的所属于的主体角色, 必须对应具体对象具有操作的Userpermisson权限, 或者被授予继承了此Action动作操作权限。只有访问请求用户同时具有这两种操作权限Userpermission和Objectpermission时, 访问请求用户才可以对云计算平台的中对象 (服务或具体资源) 进行访问或操作。

2.2.2 Userpermission和Objectpermission权限判断 (图1)

所有的授权Userpermission和Objectpermission都从/root/root出发, 到各个User或Role, 那么就构成了下边一颗特殊的授权树。

Role和User和Object都是节点, 父节点与子节点的关系可以是User和Role的所属关系, 也可以是节点之间的授权关系, User/Role与Object的关系是授权关系。其中最顶层的/root/root是根, 所有从/root/root出发的授权关系定义为POLICY。

查找某节点对Action有无权限的规则是:从节点开始广度向上遍历所有路径, 如果存在POLICY, 则认为有权限。如上图中所示从Object:image List:add的节点出发经过Bob开始广度向上遍历所有路径, 如果存在POLICY, 则认为有权限。

2.2.3 Userpermission与Objectpermission中的Ob-ject对象冲突合并

当Userpermission (用户权限) 中设定的Object、Action与Objectpermission中所允许的操作对象、操作动作发生冲突时, 取两者中的较小者作为可操作的对象、操作动作。

由此权限判断规则, 也就形成了表1所示的用户权限判定可执行与否的判断规则。

注: (1) UA为Userpermission中的Action。 (2) OA为Objectper-mission中的Action。 (3) UO为Userpermission中的Object。 (4) OO为Objectpermission中的Object。 (5) Yes (UA) 表示访问请求用户具有Userpermission中的Action的操作权限;No (UA) 表示访问请求用户不具有Userpermission中的Action的操作权限;Yes (OO) 表示访问请求用户具有Objectpermission中所允许的具体对象操作权限;Yes (UO) 表示访问请求用户具有Userpermission中所允许的具体对象操作权限。

2.2.4 用户角色权限授予操作

在进行用户授予权限时, 不判定授权者是否具有相关权限, 可以进行授权成功。但在当被授权者判定是否具有权限时, 会判定他的授权者是否具有权限。在进行授权时, 授权者的设定只能是当前授权用户所在的Role, 不可以越级。

2.3 访问控制策略

根据以上规则, 定义OURBAC模型。OURBAC=〈O, U, R, A, S〉, 其中, O是对象集;U是用户集;R是角色集;P是Objectpemission/Userpermission等权限集合;A是角色扮演者集合;S是服务/资源对象集合。定义下列关系。

2.3.1 权限分配

权限分配过程包括管理员对角色的权限授予分配以及对用户进行角色分配;以及管理员直接对用户权限进行设定。管理员直接对用户的授权可以是临时的, 也可以是永久的。角色的权限分配可以用二元组 (u, r) 表示, 记为ra (u, r) 。将一组用户集从属于角色r并获得角色对应权限, 记为RA (r) 。RA (r) ={ra (ui, r) |ra (ui, r) ∈RA, i=1, 2, …, n}。同时将直接授予用户的一组权限集, 记为UA (u) , UA (u) ={ua (ui, u) |ua (ui, u) ∈UA, i=1, 2, …, n}。

2.3.2 用户权限判断

当访问请求用户, 请求具体的服务或资源, 以及具体的Action动作时, 就表现为访问用户对系统中服务的调用能力。当用户授予的权限集PA (u) , 只要满足权限判断的具体规则, 就可以实现服务的调用能力。

由于用户的权限访问集, 是所从属Role的RA (r) 和UA (u) 的权限集的合集。对用户的权限访问集的改变, 可以单独改变其中的一个, 或者两个, 判断的时候是根据用户授予的权限集PA (u) 。这样可以在不改变Role的情况下, 实现用户访问权限的实时的授予或取消, 使用户访问权限更便于管理。

2.4 OURBAC的特点

与传统的RBAC模型相比, OURBAC模型具有以下优点。

2.4.1 授权管理更加严密和细致

OURBAC模型采用Userpermission和Objectpermission中Object、Action属性, 更加细化了用户访问控制对象或资源的操作权限, 与其他模型相比, 使受权管理更加严密和细致。

2.4.2 更利于扩展Object和Action的行为

OURBAC的模型与传统的RBAC模型相比, 当服务对象或资源发生变化时, 只需要简单的更改角色分配权限RA (r) 或用户分配权限UA (u) , 就可以实现对新对象或资源的访问控制, 而不会影响以前的角色权限分配关系。

2.4.3 支持动态更新

RBAC模型中授权关系是随着访问过程操作和对象的而变化的。而在OURBAC模型中, 访问控制的客体是服务, 授权不会因为操作和对象的变更而改变, 结果就是系统的动态更新不受影响。

2.4.4 更好的安全性、灵活性、便捷性

OURBAC模型采用Userpermission和Objectpermission, 可以更好的控制访问服务和资源的权限细化和分离, 以及服务、对象、对象支持操作方法的概念使访问控制粒度符合人类的思维模式。可以实现更加有效和便捷的安全管理。

3 OURBAC实现及安全性分析

3.1 OURBAC实现

Open Stack由于其特有的兼容性和可扩展性被业界广泛应用[16], 基于Open Stack框架[17,18], 本文构建了一个云计算实验平台, 在此平台上对OUR-BAC进行了应用。在实际应用中, 基于OURBAC的规则设计以及访问控制策略, 构建了此算法的类图, 如图2所示。

云用户访问云资源/对象的OURBAC具体应用流程如图3所示。

此应用模型的具体实现流程如下。

(1) 云用户请求云服务。

(2) 系统对云用户进行认证。

(3) 此云用户合法执行OURBAC (云资源/对象访问权限判定) , 不合法则直接强制退出请求。

(4) 判定云用户访问行为。根据OURABC规则, (1) Userpermission和Objectpermission权限授权树逆向判定规则, 如果无此Permission则强制退出, 如果通过则认为当前云用户具有对应权限; (2) Userpermission与Objectpermission中的Object、Action对象冲突合并, 如果判定通过的Userpermission和Objectpermission对应Object和Action对象冲突不存在, 则认为有细粒度的云资源/对象访问权限, 否则强制退出。

(5) 通过OURBAC的云资源/对象访问权限判定后, 当前云用户可以对云环境的资源或对象进行具体的Action操作。

3.2 OURBAC安全性分析

云安全模型是要尽量保证授权用户的合理和及时的资源访问[19], 努力降低对未授权用户对资源进行访问。云平台的主要风险之一就是是用户未授权访问的资源量。根据实际用户访问控制模型, 利用文献[2]基于云环境中风险的安全模型进行安全性分析:

传统RABC中相当于只有本文算法OURBAC中的Userpermission部分, 在资源确定的情况下, OURBAC算法比传统RABC用户的未授权的资源量, 会根据Objectpermission中的Object细粒度化的程度的不同指数级增长;在用户确定的情况下, OURBAC算法比传统RABC用户的未授权的资源量, 同样会根据Objectpermision中的Object细粒度化的程度的不同指数级增长。同理在用户和资源都不确定的情况下, OURBAC算法比传统RABC用户的未授权的资源量, 同样会根据Objectpermision中的Object细粒度化的程度的不同指数级增长。则基于风险的安全模型中的安全性能, 同样会根据Objectpermision中的Object细粒度化的程度的不同而成指数级增长。

4 总结

提出的OURBAC模型引入了Customer, 资源/服务, Userpermission, Objectpermission等, 使访问权限控制可以更加的细化。而且基于对象和用户的角色Userpermission和Objectpermission双权限联合判定, 较好的满足云访问控制细化, 实现了清晰Role结构, 有效加强了系统的安全性和访问控制的灵活性。针对云平台自身的建设, 需要不断添加设备和更新服务, 由于权限分配及判定只受服务操作的修改和变更影响, 该模型支持系统的动态更新, 具有重要的意义, 系统的安全性以及灵活性得以延续。

摘要:针对云计算环境中资源按需访问的特点以及不同资源不同用户访问控制的特殊性, 基于基本角色访问控制模型 (role-based access control, RBAC) , 提出一种基于对象和用户的角色访问控制模型OURBAC (object-and-user based on RBAC) ;并设计了具体的用户访问权限判定规则。以实际实现应用为背景, 设计了OURBAC的具体实现流程, 对算法的安全性进行了分析, 表明本算法使云资源访问控制得以进一步细化, 能明显减少系统中角色数量, 有效的提高了系统运行效率及安全性。

数据访问对象 篇6

关键词:简单对象访问协议,无线传感器网络,安全

0 引言

近年随着微机电系统、无线通信、嵌入式计算、传感器、信息网络与集成电路等技术的迅速发展, 无线传感器网络 (WSN) 应运而生。这些传感器具有低成本、低功耗、多功能等特点, 拥有无线通信、数据采集、信息处理、协同合作等功能。WSN应用广泛, 适合军事、环境监测、交通运输的自动控制、医疗工业等众多领域。因传感器网络一般配置在恶劣环境、无人区域或敌方阵地中, 加之无线网络固有的脆弱性, 因而传感器网络安全引起了人们的极大关注。但WSN由于节点在通信能力、计算能力、存储能力等方面固有的局限性, 导致许多安全方案无法顺利应用。

简单对象访问协议 (SOAP) 应用于无线传感器网络 (WSN) 能较好地解决WSN的信息加密和解密、信息验证问题, 使得这两问题的危害性大大减轻。下面就从无线传感器网络中信息的加密和解密、信息验证两方面研究简单对象访问协议在无线传感器网络中的应用。

1 无线传感器网络

无线传感器网络 (Wireless Sensor Network, WSN) 是由部署在监测区域中用于数据采集的微型传感器节点构成, 每个节点的计算能力、通信距离和能量供应相当。节点采集的数据通过多跳通信的方式, 借助网络内其他节点的转发, 将数据传回到汇聚节点, 再通过汇聚节点与其他网络连接, 形成的一个多跳的自组织的网络系统, 实现远程访问和网络查询、管理。无线传感器网络的目的是协作地感知、采集和处理网络覆盖区域中被感知对象的信息, 并发送给观察者。传感器、感知对象和观察者构成了无线传感器网络的三要素。

下面讨论WSN信息安全问题。

2 WSN信息安全问题

WSN由大量相互合作、具有有限的能量资源、计算能力、存储空间和无线通信范围的传感器节点组成。每个传感器节点由数据采集、数据处理、数据传输和电源4部分组成。WSN具有:节点限制、节点数量大、物理限制、节点易出故障的鲜明特点, 这些特点使WSN的安全面临多方面的挑战。

传感器网络的许多应用在很大程度上取决于网络的安全运行, 一旦传感器网络受到攻击或破坏, 将可能导致灾难性的后果。如何在节点计算速度、电源能量、通信能力和存储空间非常有限的情况下, 通过设计安全机制, 提供机密性保护, 防止各种恶意攻击, 为传感器网络创造一个相对安全的工作环境, 是关系到传感器网络能否真正走向实用的关键问题。在此只讨论信息的加密、解密及信息验证两个问题。

2.1 信息的加密和解密问题

在无线传感器网络设计安装前, 由于未知的物理拓扑结构, 传统密钥配置计划在无线传感器网络是不合适的, 安装的密钥在每个节点要么是单一任务密钥, 要么是一套分离的n-1密钥, 与另一个私下配对分享。实际上所有传感器节点的捕获都会危及整个网络的安全, 因在传感器捕获侦查上有选择性的密钥撤销是不可能的, 反之在每个传感器节点成对的密钥分配解决需存储和装载n-1个密钥。当使用超过10000个传感器时, 因资源局限而变得不切实际。此外, 因直接的点对点通信是仅在数量极少的邻近节点间完成的, 分享在所有两个传感器节点间的私用密钥是不能再用的。而对物理篡改、Sybil攻击这两方面来说, 信息的安全问题非常重要。

2.1.1 物理篡改

物理篡改主要是毁坏或替代节点, 榨取节点密钥信息, 获得与高层自由通信的权利。

攻击方可捕获节点, 获取加密密钥等敏感信息, 从而可不受限制地访问上层的信息。针对无法避免的物理破坏, 可采用的防御措施有:增加物理损害感知机制, 节点在感知到被破坏后, 可销毁敏感数据、脱离网络、修改安全处理程序等, 从而保护无线传感器网络其他部分免受安全威胁;对敏感信息进行加密存在传感器网络中, 通信加密密钥、认证密钥和各种安全启动密钥需要严密的保护, 在实现时敏感信息尽量首先进行加密处理。

2.1.2 Sybil攻击

Sybil攻击即在无线网络中, 单一节点具有多个身份标识, 通过控制系统的大部分节点来削弱冗余备份的作用。

在网络层WSN经常受到Sybil攻击。在Sybil攻击中, 一个节点以多个身份出现在网络中的其它节点面前, 使其更易于成为路由路径中的节点, 然后与其他攻击方法结合达到攻击目的。Sybil攻击能够明显地降低路由方案对于诸如分布式存储、分散和多路径路由、拓扑结构保持的容错能力。它对于基于位置信息的路由协议构成很大的威胁。这类位置敏感的路由为了高效地利用地理地址标识的包选路, 通常要求节点与它们的邻居交换坐标信息。一个节点对于相邻节点来说应该只有唯一的一组合理坐标, 但攻击者可同时处在不同的坐标上。

对抗Sybil攻击, 通常采用基于密钥分配、加密和身份认证等方法。

2.2 信息验证问题

由于无线传感器网络配置环境一般较恶劣, 加之本身固有的脆弱性, 因而极易受到各种各样的攻击。攻击者通过哄骗、修改或重放路由信息, 通过修改源和目的地址, 选择一条错误路径发送出去, 从而导致网络路由的混乱。若攻击方控制的恶意节点将收到的数据包全部转向网络中的某个固定节点, 该节点可能会通信阻塞和能量耗尽而失效。

这种攻击方式与网络层协议相关。为保证信息的安全传递, 需有一种机制来验证通信各方身份的合法性。对于层次式路由协议, 可用输出过滤的方法, 即对源路由进行认证, 确认一个数据包是否是从它的合法子节点发送过来的, 直接丢弃不能认证的数据包。

SOAP能很好地解决上面提出的了WSN信息安全方面的问题。

3 SOAP在WSN安全中的应用

3.1 简单对象访问协议 (SOAP)

简单对象访问协议 (SOAP) 是一种轻量的、简单的、基于XML的协议, SOAP可与现存的许多因特网协议和格式结合使用, 它还支持从消息系统到远程过程调用 (RPC) 等大量的应用程序。而SOAP的应用包括加密和解密数据, 消息的签名与认证。

3.2 SOAP在WSN中的应用

3.2.1 SOAP信息的加密和解密在WSN中的应用

一个无线传感器网络不应当向其他网络泄漏任何敏感信息。在许多应用中, 节点间传递的是高度敏感的数据。这些数据一旦被攻击者获取, 整个网络的安全将无法得到保障, 因而通过密钥管理协议建立的密钥及其它传感器网络中的机密信息 (如传感器身份标识等) , 必须保证仅对授权用户公开。解决数据机密性的最常用方法是使用通信双方共享的会话密钥来加密待传递的消息, 该密钥不为第三方所知。

在SOAP信息加密中, Web服务安全采用了现有标准, 将其并入了XML加密。加密数据时, 可选择使用对称加密或非对称加密。对称加密在密钥分发上存在一些问题。在某个时间点上, 密钥需要发送给接收方。X.509证书允许使用非对称加密。接收数据的端点可公布它的证书, 并允许任何人使用公钥来加密信息。只有接收方知道私钥。故只有接收方可将获得的经过加密的数据重新转换为可读内容。若使用的是TripleDES, 则发送方和接收方都须以某种安全的方式交换密钥。对称密钥可隐藏在Kerberos票据内, 或被取出交换。这应用于WSN上可解决物理篡改、Sybil攻击问题。

3.2.2 SOAP信息的签名与验证在WSN中的应用

为保证信息的安全传递, 需有一种机制来验证通信各方身份的合法性。在传统有线网络中, 公钥基础设施有效解决了此问题, 它通过对数字证书的使用和管理, 来提供全面的公钥加密和数字签名服务。通过公钥基础设施, 可将公钥与合法拥有者的身份绑定, 从而建立并维护一个可信的网络环境。非对称加密体制具有很高的计算、通信和存储开销, 这决定了在资源受限的传感器上使用数字签名和公钥证书机制不可行, 须建立一套综合考虑安全性、效率和性能并进行合理折衷的传感器网络身份认证方案。

而SOAP信息签名后的消息几乎无法被篡改, 但消息签名不能禁止外部各方查看消息内容。使用签名, SOAP消息的接收方可知已签名的元素在路由中是否发生改变。只要可能就应使用XML签名对消息进行签名。XML签名是包含在被签名的信息里, 在实际的签名值被插入到节点时可能发生变化。然后通过一种转换把它分离出来, 从而解决问题。通过加密XML消息的内容来对它进行保护, 从而保证只有授权节点才能读取该消息。这应用于WSN上可解决信息验证问题。

4 结语

解决安全问题是无线传感器网络付诸实用的基本前提。简单对象访问协议 (SOAP) 应用于无线传感器网络 (WSN) 能有效解决WSN的信息加密和解密问题及信息验证问题。

参考文献

[1]蒋勋, 邹坚敏.无线传感网络技术与展望[J].无锡南洋学院学报, 2007 (02) :30-31.

[2]周必水, 倪慧丽.简单对象访问协议SOAP的研究与分析[J].微电子学与计算机, 2002 (5) :25-27.

[3]王勇超, 魏薇, 鲁东明.无线传感网络安全综述[J].计算机时代, 2008 (12) :15-19.

[4]任丰原, 黄海宁, 林闯.无线传感器网络[J].软件学报, 2003, 14 (07) :1282-1291.

数据访问对象 篇7

VB访问SQL Server数据库技术是随着时间的推移,计算机技术的发展逐渐更加成熟与完善。VB指的是Visual Basic的简称,是微软公司开发的一种事件驱动的变成语言。使用VB的人群甚至比目前流行的Java/C#还要多。它的前身是BASIC编程语言。它有友好的图形用户界面和快速程序开发系统,可以快速开发应用程序,是许多开发者比较喜爱的开发语言。SQL Server是由Microsoft、Sybase和Ashton-Tate3家公司共同开发的一种关系数据库管理系统。SQL Server有比较安全可靠的存储功能,使得用户可以构建和管理用于业务的高可用和高性能的数据应用程序。还可以有效地执行大规模的联机事务处理。可以降低开发和管理数据的开发时间和成本,是一种智能的数据库管理系统。由于VB和SQL Server都是目前比较流行的,所以两者的结合方法也是大家经常用到的。下文就介绍VB访问SQL Server的访问技术。

2 VB数据库访问技术的发展

在早期的Visual Basic版本中,只能通过简单的ASCII文件访问工具。随着用户要求的逐渐增多,为了迎合用户需要转移含有远程数据源的索引顺序存放法数据,在Visual Basic3.0版本,微软增加了Microsoft Jet Database Engine(简称Jet)和Data Access Object(简称DAO)。随着用户需求的不断改变,Visual Basic4.0/5.0又出现了新的数据接口Remote Data Object(简称RDO);最后出现了ActiveX Data Objects(简称ADO),它具有更好的灵活性和易用性,功能更加全面。其发展历程如表1所示。

3 VB访问SQL Server数据库

VB与SQL的连接方式有多种,我们本篇主要介绍5种:Jet方式,ODBC API编程访问,使用SQL Server提供的Visual Basic库API编程,RDO远程数据对象,ADO数据对象。

3.1 Jet方式

Jet是Microsoft Jet Database Engine的缩写。Jet方式的访问方法虽然不是最好的客户机/服务器管理方式,但是也有很多优势。使用Jet访问SQL Server的过程如下:VB应用程序将请求的访问语句发送至Jet引擎,Jet引擎通过MASJT200.DLL这个dll进行查询优化,然后与驱动程序管理器通信,主要是靠ODBC.DLL,驱动程序管理器再通过调用驱动器的相关函数,连接到数据源,驱动器程序主要是SQLSRVR.DLL,最后向SQL Server提交SQL语句且返回请求的结果,如图1所示。

访问的关键代码如下:

3.2 利用ODBC API编程

开放性数据库互联ODBC(Open Database Connectivity)已经成为了访问数据库的一个标准,使用ODBC API函数的编程难度最大,但是获得的存取数据库的性能也是比较好的。在之后的性能比较中再作详细阐述。与使用其他动态库函数一样,在VB中使用ODBC API需要事先声明要使用的函数及其数据结构等。调用ODBC API函数访问ODBC数据库代码编写一般过程如下:

3.3 使用VBSQL对DB库API编程

VBSQL即为SQL Server的Visual Basic库,它为Visual Basic程序员提供了访问SQL Server的API。DB库是SQL Server提供的national API。VBSQL包含VBSQL.VBX,VBSQL.BI和VBSQL.HLP 3个文件。功能如表2所示。

需要注意的是,在使用VBSQL方式时,需要在Visual Basic工程文件中将VBSQL.BI文件加入,并确保VB程序能找到VBSQL.VBX文件。

3.4 RDO远程数据对象

RDO访问数据库属于关系模式访问,是针对行和列来处理。RDO综合了前3种访问数据库对象的优点,可直接访问数据库存储过程,支持T-SQL,与一些工具的无缝集成等优势。RDO其实也是ODBC访问,是专门针对SQL Server等数据库设计的。RDO不同于前3种访问方式是它被集成在VB中。RDO对象带有属性和方法,在这些属性和方法中,含有对ODBC API函数的调用。下面介绍几种经常用到的RDO对象。

(1)rdoEngine对象。在RDO的结构中,rdoEngine对象是最上层的对象,它包含了所有其他的对象,用于对RDO全局属性的参数、选项进行设置。

(2)rdoEnvironment对象。RDO对象在创建rdoEngine对象时,会将rdoEnviroment对象的初始值设成默认值0。通常,不需要自己新建该对象,只需要对默认生成的该对象进行处理就可以。

(3)rdoConnection对象,该对象用于同SQL Server的连接管理。

3.5 ADO数据对象

ADO是Active Data Objects的缩写。它以OLE DB技术为基础,可对各种各样的数据,如电子邮件、文本文件、复合文件等数据进行统一的存取。VB中提供了专门的ADO访问控件。它可以快速建立与数据库之间的绑定。只要该控件具有DataSource属性,则便可与ADO控件绑定,任何只要是复合OLE DB规则的数据源均可作为ADO控件的数据源。由于ADO Data控件属于ActiveX控件,所以首先需要将其添加到VB的工具栏中。添加方法:单击“工程”→“部件”菜单选项,选中“Microsoft ADO Data Control 6.0(OLE DB)”后,按“确定”,此时ADO数据控件便出现在工具箱中。

绑定数据源。将ADO Data控件拖拽到窗体上。选中属性窗口———使用连接字符串,单击“生成”按钮,弹出“数据链接属性”对话框;选择“提供程序”选项卡,在列表中选择“Microsoft OLE DB Provider For SQL SERVER”选项,单击“下一步”按钮。指定服务器的名称和登录信息并选择本连接要使用的数据库文件;单击“测试连接”按钮以确定连接是否正常。若得到测试成功的消息,单击“确定”按钮以继续;在“属性页”对话框中选择“记录源”选项卡,在命令类型下拉列表中选择“2-adCmdTable”选项,在表或存储过程名称下拉列表中选择数据表“authors”。(若选择的命令类型为“1-adCmdText”,则可在命令文本框中输入SQL查询语句select*from authors)。

远程连接格式:

4 结语

数据库访问方式的5种方法各有优缺点。Jet方法便于使用但是性能最慢,ODBC API速度慢于VBSQL。RDO具备ODBC的处理方法,可直接执行大多数ODBC API函数。RDO的优势在于与VB的无缝集成。开发者可以根据自己的需要选择合适的数据库访问方式。

摘要:Visual Basic是使用量比较广发的开发语言,而SQL Server也是目前比较流行的关系型数据库。讨论了Vi-sual Basic应用程序访问数据库的发展过程,介绍了访问SQL Server数据库的几种常用方法。

关键词:VB,SQL Server,访问接口

参考文献

[1]王昕.基于VB+SQL数据库的方法及接口比较的研究[J].微计算机信息,2009,15:86-89.

[2]乔美娥.ADO技术在VB系统开发中的高级应用[J].中国科技信息,2008,24:84-85.

[3]杨艳.浅析VB中三种数据访问技术[J].中小企业管理与科技(上旬刊),2009,4:244.

[4]耿小芬,徐忠军.Visual Basic中的数据访问技术[J].中国教育信息化高职高教,2009,13:83-84.

[5]姚小兵.VB中ADO技术的应用[J].电脑与信息技术,2005,13(4):22-24.

[6]刘韬.VisualBasic6,0数据库系统开发实例导航[M].北京:人民邮电出版社,2003.

数据访问对象 篇8

本文在HSS数据库访问控制中应用基于角色访问控制策略,并添加其约束模块,建立I-CSCF—S-CSCF的关联表,最后给出越权访问行为防护的分析和仿真。

1 S-CSCF越权访问行为分析

HSS是IMS网络中存储用户信息的主要数据库。存储在HSS的IMS相关数据主要包括:IMS用户标识、号码和地址信息以及用户安全信息等。IMS网络中的呼叫会话控制服务器I/S-CSCF和应用服务器AS通过访问HSS,获取用户注册和业务逻辑执行所需的用户数据。

P-CSCF通过DNS域名解析获得I-CSCF的地址,I-CSCF根据UAA信息,选择合适的S-CSCF[1],没有机制通知HSS该S-CSCF地址。由于攻击者是合法接入网络,I/S-CSCF与HSS之间可以通过相互认证,攻击者可以通过篡改数据包,实现越权访问。

由于I-CSCF数据库越权访问不涉及用户核心信息,攻击方式与S-CSCF相似,故本文重点分析S-CSCF越权访问行为。其越权访问流程如图1所示。

(1)在HSS侧,攻击者截获S-CSCF发送的MAR(1)SAR(1)请求,将AVP Session id、AVP Origin Host等和攻击目标有关的字段改为自己的字段,将在数据包中S-CSCF的路由信息删除,仅保留攻击者的地址,如:

攻击者将修改后的MAR(2)/SAR(2)命令发送到HSS,由于攻击者是合法S-CSCF,所以可以通过HSS的认证,使HSS认为是攻击者发出的合法的请求MAR(2)/SAR(2),发送响应MAA(2)/SAA(2)给攻击者。

(2)攻击者收到MAA(2)/SAA(2)后,由于S-CSCF知道HSS的地址,所以目的域地址仍置为HSS的地址,将AVP SessionId与AVP OriginHost等字段在MAR(2)/SAR(2)中修改过的字段改为原MAR(1)/SAR(1)的字段。将修改好的数据包MAA(1)/SAA(1)发送到S-CSCF。由于数据包中所有的信息均已修改,而S-CSCF并不溯源数据包的来源,所以会认为是HSS发送的响应消息。

通过以上两个步骤,攻击者可以越权访问到S-CSCF存储在HSS上的数据信息,从而实现了HSS数据库的越权访问。

2 基于角色的访问控制模型

基于角色的访问控制模型RBAC引入了角色的概念,目的是为了隔离主体与权限,其模型如图2所示。RBAC模型的基本概念:

用户(User):可以独立访问计算机系统中的数据或其他系统资源的主体。用户可以是人,也可以扩展为机器、设备、进程等,在此为I/S-CSCF。

角色(Role):角色指一个组织或任务中的工作或位置,它代表一种资格、权利和责任。

权限(Permission):权限描述一个角色对一个访问对象可以执行某种操作的能力,它反映的是授权的结果。如查询角色对资源B只有读的权限,I-CSCF赋予查询角色时,对资源B只能进行读取。

用户角色分配(User-Role Assignment):建立用户与角色的多对多关系。

角色权限分配(Permission-Role Assignment):建立角色与访问权限的多对多关系。

会话(Session):会话对应于一个用户和一组激活的角色,表示用户进行角色激活的过程。如I-CSCF发送UAR命令查询用户注册状态的流程[2,3,4]。

3 HSS数据库访问控制模型

IMS通信流程中,I/S-CSCF与HSS之间通过Diameter协议进行信息交互。当前IMS网络缺乏在信令处理过程中对网络实体的身份、权限的判断,导致某些被非法利用的网络实体针对用户位置,状态等重要信息发起各种攻击行为。在IMS网络中,网络实体通过信令消息触发消息处理机制来实现对用户数据的访问和操作,网络实体担任的角色及角色与权限的映射关系随信令流程的改变而动态变化。所以需要对基于角色的呼叫控制模型进行一定的改进。模型设计的核心思想就是在通信过程中,通过约束模块,对角色、权限分配过程进行控制,控制模型如图3所示。

基于角色的HSS访问控制模型定义如下:

主体(User):可以访问HSS数据库的网络实体,即I/S-CSCF;

客体(Objects):存储在HSS数据库中的数据,如S-CSCF能力集,用户认证消息等;

角色(Roles):I/S-CSCF所承担的职责;

权限(Permissions):可以对客体信息进行的操作,如查询,修改;

约束(Constrain):在角色划分,权限分配中需要满足的限定性条件;

会话(Session):用户进行激活的过程,如I-CSCF发送UAR信令到HSS。

访问过程中形成的映射关系:

表示模型中从主体到角色的授权关系集,如果(u,r,ob)∈UA,含义是将主体u分配给角色r,此时主体访问的客体是ob。在模型中,当客体确定时,在符合相应约束条件的前提下,一个主体只能分配一种角色,一种角色可以对应一个主体或多个主体。

表示模型中从角色到权限的授权关系集,如果(p,r,s)∈PA,含义是在会话Session的作用下,将权限p分配给角色r。角色与权限是多对多的关系。

I(U,OB,S,R,P)表示角色分配后的信息集,如果i(u,ob,s,r,p)∈I,含义是当主体u访问客体ob时,在会话Session的作用下,权限p分配给了角色r[5,6,7]。

3.1 约束模块设计

在约束模块添加关联表,通过修改关联表,对模型中的分配起到限制作用。在IMS网络中,存在多个I-CSCF与S-CSCF,,它们之间是一对多映射的关系,如图4所示。在HSS中建立I-CSCF—S-CSCF关联表,如图5所示。

3.1.1 约束模块操作流程

在初始时,HSS将关联表中I-CSCF能够选择的S-CSCF的属性值全部置为1。

(1)当I-CSCF选定一个S-CSCF后,向HSS数据库发送一个消息,将此信令消息命名为IER(I-CSCF-Elect-Require),告知HSS其选定的S-CSCF。

(2)HSS收到IER消息后,提取Session-id,UserName,Server-Name字段,发送响应消息IEA(I-CSCF-Elect-Answer)消息给I-CSCF。

(3)HSS修改关联表,将对应的I/S-CSCF值设为Session-id,其他的值设为0,实现绑定约束,在后续为S-CSCF分配角色等操作时,只有被绑定的S-CSCF才能进行相应的用户数据下载、更新等操作。

(4)当会话结束后,将关联表信息改为初始值,释放各资源。

3.1.2 访问控制模型应用流程

(1)HSS根据I/S-CSCF的能力,建立用户表;根据I/S-CSCF进行的操作,进行角色分类,建立角色表;根据I/S-CSCF的能力,在特定会话的条件下进行的操作,为I/S-CSCF分配角色,更新用户-角色表;根据存储在数据库中的信息的性质,及对其进行的操作,建立权限表;根据角色在特定会话条件下对客体进行的操作,建立角色-权限表;建立I-CSCF—S-CSCF关联表。

(2)当I/S-CSCF发起会话时,HSS首先查找用户表,判断用户身份是否合法。

(3)根据会话发起的信令,查找对应的角色表,确定此次会话中主体所担任的角色。

(4)根据主体及角色,为用户分配角色,更新用户-角色表。

(5)根据会话信令,查找角色-权限表,确定此次会话I/S-CSCF所能访问的数据资源及其进行的操作。

(6)当会话建立时,启动约束模块,HSS修改关联表,绑定此次会话,只有发起会话的主体才能对数据库进行访问。

3.2 数据库设计

根据整个流程,HSS数据库访问控制系统被分为不同的功能模块,主体分为不同的权限访问不同的客体。根据模型设计方法,用户及权限信息均被保存在HSS数据库中,建立用户表、角色表、权限表、约束表、用户与角色表、角色与权限表的6个表格,各表详细设计及关系如图6所示。

4 HSS数据库访问控制模型效果

在HSS访问控制方式及数据库的设计中,约束模块对用户角色表、角色权限表都有着制约作用,从而能够比较有效地进行数据库访问控制。效果分析如图7所示。

I-CSCF选定S-CSCF后,与HSS进行IER/IEA信令交互后,启动约束模块,HSS数据库修改关联表,进行绑定操作。当攻击者篡改MAR/SAR消息时,HSS查找关联表,由于I-CSCF—S-CSCF关联表中,攻击者的属性值本不存在或被置为0,HSS拒绝攻击者的请求,从而实现了HSS数据库越权访问的防护。

Open SAR由C语言实现,是一个成熟且灵活的开源SIP服务器栈软件。可以用作注册服务器、位置服务器、代理服务器等多种SIP服务器。通过对Open SAR进行设置,可以实现IMS中各个CSCF的功能。依据课题的研究内容,要求SIP终端具有可配置性。因此,选取SIP攻击软件SiVus用于SIP终端功能的实现。在仿真过程中将HSS数据库设置为一般的数据库,攻击者截获数据包并伪装就可以立刻下载用户的认证信息。而在使用本文方法后,能够有效地防护HSS数据库越权访问行为。

HSS数据库防护在基于角色的访问控制模型的基础上添加了约束模块,在其中设置了I-CSCF—S-CSCF关联表。通过理论分析和仿真结果验证,该模型能够较好地对HSS数据库越权访问行为进行防护,同时该模型也可直接在系统中添加相应模块,实现简单、通用性强。

参考文献

[1]POIKSELKA M,MAYER G,KHARTABII H,et al.移动领域的IP多媒体概念和服务[M].北京:机械工业出版社,2005.

[2]RAVIS E J,COYNE K.Role-based access control models[J].IEEE Computer,1996,29(2):38-47.

[3]FERRAIOLO D F.Proposed NIST standard for role-basedaccess control[J].ACM Transactions on Information andSystem Security,1001,4(3):224-225.

[4]SANDHU R S.COYNE E J,FEINSTEIN H L,et al.Role-based access control models[J].IEEE Computer,1996,29(3):38-39.

[5]周颖杰.移动通信网位置信息安全防护关键技术研究[D].河南:解放军信息工程大学,2008:45-54.

[6]LINA B R.The application of security policy to role-based access control and common data security architecture[J].Computer Communications,2000,23(17):1584-1593.

数据访问对象 篇9

1 数据访问的整体架构设计

1.1 Web Service技术

Web Services是分布式计算领域发展的前沿技术,具有很多其他技术无法比拟的优势。Web Service是一种通过Web部署提供对业务功能访问的技术,它具有跨平台、简单和高度可集成能力等特点。Web Service采取简单易理解的标准Web协议作为组件界面描述和协同描述规范,通过XML、SOAP、WSDL、UDDI等技术手段,屏蔽不同软件平台的差异[1]。表面上看,Web Service就是一个应用程序,但这个程序向外界提供一个能够通过网络进行调用的API(Application Programming Interface,应用程序编程接口)。Web Service发布后,能够用编程的方法通过web来调用这个应用程序,而调用服务的应用程序就是Web Service的客户端。

正是由于Web Serivce良好的跨平台及互操作性等优势,很好的满足了多源数据库数据访问的需求。数据访问的客户端与服务器间的通信,可以简单的依赖于HTTP协议来进行,同时,当前许多防火墙也配置为只允许HTTP连接。

1.2 系统整体设计

通常来说,数据用户只关心具体的数据,而并不会关心数据是如何存放,存放在何种数据库里的。本文的数据访问就是要对用户屏蔽掉数据库源的不同,而只专注于数据的利用。用户向服务器发出调用请求,请求中将包括用户信息以及用户对数据所要进行的操作信息。服务器端在接收到用户的请求之后,首先对用户的权限进行验证,确认其中否有进行相应操作的权限。如果验证通过,则执行用户所请求的操作,最后将操作的结果返回给请求用户。数据访问的总体设计如图1所示。

2 数据访问方法的具体实现

2.1 数据访问所支持的数据库类型

根据目前商业数据库的总体应用情况,本研究所支持的数据库将有以下三种,分别为:

1)Miscrosoft公司的SQL Server 2000

2)Oracle公司的Oracle 10G

3)IBM公司的DB2 V9.5

对于以上这三种数据库的优劣对比,各行业间可谓说法不一,但不可否认的是它们都有着各自的优点长处,也都有各自的不足。本文这里就不对三种数据库的选择做过多的探讨,用户在具体的应用中可以根据自己的实际情况做出选择。应该指出的是,想要加入对其它数据库的支持,则需加入相应的数据库驱动包以及对数据库的数据类型进行对应的处理。

2.2 不同数据库的数据类型处理

在实际的应用当中,不同的数据库所定义的数据类型是不尽相同的,很多时候还存在着很大的区别。数据访问要同时对不同的数据库进行支持就不可避免的要对不同的数据类型进行区别对待,细化处理。以数值型数据来说,DB2及SQL Server有多种不同的数据类型对应数值型数据,如int、double、float、decimal等,但Oracle中只有number类型一种于其相对应。下面给出三种数据库主要数据类型的对照表:

表1主要数据类型的对照表

从总体上来说,这三种数据库的数据类型可以分为以下五大类,分别是:数值型、字符型、时间型、文本型、多媒体型。在执行远程数据访问的插入或更新操作时,通常用户的数据都是以字符串的形式发送到服务器端,这种情况下要能够将用户的数据正确体现到数据库当中,就必需在执行插入或更新操作前将用户数据转换成适当的Java数据类型。

数值型。数值型数据具体还可再细分为整型、双字节型及浮点型三种类型,对应的数据库数据类型主要有整型:NUMBER、BIT、SMALLINT、INT、INTEGER、BIGINT、TINYINT,双字节型:DOUBLE、BINARY_DOUBLE、MONEY、SMALLMONEY、DECIMAL,浮点型:FLOAT、REAL、BINARY_FLOAT。对整型数据,本可以转换为int型后进行数据库操作,但在实际操作中发现,由于Oracle数据库对于数值型数据只有NUMBER一种,当以NUMBER(p,s)形式定义数据时,而只能将NUMBER判断为整型数据,此时若统一转换为int,则会发生小数点后数据丢失的数据错误。因此,对于此种情况可对用户数据不做特殊处理,而直接以用户输入的String格式,或直接以Object对象进行数据库操作。对于双字节型和浮点型数据则应对应的转换为Double和Float对象类型。

字符型。字符型数据主要有VARCHAR、VARCHAR2、NVARCHAR、NVARCHAR2、LONGVARCHAR、CHARACTER、LONG VARCHAR等。对于字符型的数据,直接按String类型进行处理即可。

时间型。对于时间型数据,可以再细分为日期型、时间型及时间戳型。对应的数据库数据类型主要有日期型:DATE、DATETIME、SMALLDATETIME,时间型:TIME时间戳型TIMESTAMP。日期型数据以类似yyyy-mm-dd的格式输入,在java代码中转换为Date对象类型,时间型则以类似hh:mm:ss的格式输入,应转换为Time对象类型,相应的对于时间戳型数据应转换为Timestamp对象类型。

文本型。文本型数据主要有CLOB、TEXT、NTEXT、DBCLOB。文本型数据在本质上与字符型数据相近,只是可存放的数据量更大,用于满足大文本数据的存储需求,因此同字符型数据一样,只需将数据以String类型提交处理即可。

多媒体型。多媒体型数据是指图片、音频、视频以及其它文件数据等大文件对象,在数据库中存放这类数据的字段类型主要有BLOB、NBLOB、BINARY、LONG RAW、VARBINARY、IMAGE。对于这类大字段数据,为了能够正确的写入数据库,要将其处理成byte[]数组。

通过以上的数据处理,已基本涵盖了数据库应用中所能遇到的字段类型,这样就保证了数据操作中对绝大多数数据库数据类型的支持,从而提升了系统的适应性。

2.3 数据的安全性

网络系统的数据安全性一直是被关注的焦点,任何一种“非法用户”的非法操作或“合法用户”的越权错误操作都可能给系统数据以及系统本身带来灾难性的后果,如何保证数据的安全是所有网络系统设计的重点所在。

数据访问应设置两种用户角色,负责数据服务发布的系统管理员以及使用数据服务的数据访问用户。需要说明的是,这里的数据访问用户是指数据的使用用户而非实际的数据库连接用户。出于系统数据安全的考虑,底层数据库连接用户是不能暴露给系统用户的。

管理员的职责主要有两点:

1)发布服务

将数据库中特定的表或视图发布为webservice服务,同时给用户提供出服务发布的具体信息,比如访问地址、表名称、表字段信息等。

2)用户权限管理

用户权限是数据安全的关键所在,权限控制要根据实际系统的安全需求及业务需求来确定权限划分的粒度。对于数据库数据的操作而言,用户权限可分为两个维度、三个层次,从访问对象来说是:库级权限、表级权限、字段级权限。从数据操作类型上来说是:select权限、insert/update权限、delete权限。对数据访问权限的控制要达到字段一级,系统管理员可对数据访问用户所能操作的具体表及表字段进行细化定义,并区分不同操作类型权限进行授权。

当用户请求调用服务进行数据操作时,服务端首先对用户的权限信息进行验证。根据请求中的用户信息在系统的权限表中进行查询,确认其是否具有所请求操作的权限。用户权限表中记录着用户的具体权限信息,粒度达到数据字段一级。对于数据字段一级的权限是指是否允许用户对数据表的某一具体数据字段进行select、update操作。操作权限的验证要一层层分级进行,在不同层级验证不能通过,相应的要返回不同的验证结果。权限验证流程如图2所示。

2.4 访问结果的返回

2.4.1 结果返回形式的选择

数据访问的最终目的是得到访问的数据结果集,以什么样的形式将结果返回同样是一个值得研究的问题。数据返回形式的选择应遵循以下两点原则:1)平台无关2)数据解析方便。

就平台无关性来讲,XML语言无疑是这些年来陪受推崇的一种。XML(Extensible Markup Language)即可扩展标记语言,它与HTML一样,都是SGML(Standard Generalized Markup Language,标准通用标记语言)。Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。从Java、.NET等主流平台中的配置和部署描述符到应用集成场景中更复杂的应用,XML与生俱来的语言无关性使之在软件架构师心目中占据着独特的地位[2]。同时,XML也被应用于异构数据的整合及发布当中[3]。

然而,XML并非无懈可击。Web Service的客户端通常是以浏览器为基础进行构建,用户接收到的数据要在浏览器中进行解析,需要整合到HTML页面的总体布局中。完成这个任务,通常是使用DOM来实现,而这正是复杂的所在。DOM编程的复杂性源于其基于函数的根,这使得对数据树的简单修改和访问都需要进行无数次的方法调用[4]。另外,各种不同浏览器中的实现细节也不尽相同,为了实现跨浏览器的兼容,也将增加巨大的开发工作量[5]。为了克服以上不足,我们应选择一种以所有主流浏览器都支持的通用组件—Java Script引擎为基础的数据交换格式,也就是JSON。

JSON(Java Script Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于Java Script(Standard ECMA-262 3rd Edition-December 1999)的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯。这些特性使JSON成为理想的数据交换语言。JSON允许轻松地将Java Script对象转换成可以随请求发送的数据[6]。简单地说,JSON可以将Java Script对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从Web客户机传递给服务器端程序。

JSON使用类似Java中Map对象的“key/value”对的数据组织方式。JSON使用“{}”包含一系列无序的“key/value”对来表示一条数据,也可以将这一条数据理解为一个对象,同时JSON还支持对象的嵌套及对象数组。用JSON来组织数据库中的一条数据可以以如下的格式:{“字段名1”:”字段值1”,“字段名2”:”字段值2”}。可见,JSON数据格式的可读性是相当强的。

2.4.2 服务器端的JSON数据处理

JSON数据的处理包括服务端数据的组装及客户端数据的解析两大部分。在服务器端,要将用户访问的结果组装成JSON的数据格式。如果不借助第三方类库而仅使用java基本对象的话,可以用字符串拼接的方式来生成符合JSON格式要求的字符串,通常来说推荐使用String Buffer或String Builder对象来完成这一任务。显然,这种操作方式是笨拙且繁琐的,想要更简便更直观的生成JSON字符串,应该借助其它专门的JSON软件包来实现。目前Java用于支持JSON比较成熟的软件包org.json包及net.sf.json包,两种方式并没有本质上的区别,选择使用哪一种完全可由程序开发者的熟悉程度及项目的具体情况来决定。以org.json包为例,它提供了多种对象用于JSON数据的处理,如JSONArray、JSONObject等。JSON的数据组织方式很像Java中的Map对象,而利用JSONArray对象就可以直接将Map对象转换为JSON格式。简单实现代码如下:

2.4.3 客户端的JSON数据处理

JSON的一大优势就是它是完全基于Javascript的,那么客户端如果用浏览器来呈现数据结果,就可以在不依赖任何第三方API支持的情况下轻松的实现数据的解释。在浏览器中可以像读取本地Javascript对象一样使用服务端传递过来的JSON数据[7]。如得到查询结果数据格式如下:{“id”:1,”name”:”jimmy”,”age”:27}。在浏览器中,可直接将访问结果附给Javascript对象,如:Var user={“id”:1,”name”:”jimmy”,”age”:27},接下来就可以用user.name的方式来获取name字段的具体值。

对于一些大字段类型的多媒体数据就需要使用Java语言进行再次解析了。以Blob类型的数据为例,服务器端已经将该种数据处理成byte数组并转换成字段串格式再返回给客户端,客户端要想还数据以本来面目就不得不进行再一次的反向转换。客户端得到的数据类似如下格式{123,24,46,9,-23,-78,36,...},这时候同样需要借助第三方软件包来还数据于原始形式。将如前所诉的字符串转换成字符串数组再转换为byte数组中,继而可以将byte数组的数据转换为具体的文件。简单代码如下:

2.5 Axis2发布和调用Web Service数据访问服务

远程数据访问的最终实现,是要将编译好的程序代码发布为Web Service服务。发布为服务的程序中包括了对数据库进行操作的具体方法,分别有实现insert、update、select、delete的方法以及批量insert、update等方法。服务的发布将借助axis2框架来完成。

Axis2是一个成熟的Web Service发布和调用框架,通过axis2可以轻松的将java类发布为Web Service,一个POJO中所有的public方法都将被发布成Web Service方法。同时,axis2可以支持服务的热发布(hotdeploy)及热更新(hotupdate),即服务的发布及更新过程中,都不用重新启动服务器,这在许多应用中都是大有益处的[8]。简单的说,在应用项目中部署好axis2以后,只需将要发布的java类编译好拷贝到特定的目录下,服务器运行后axis2就自己将其发布为Web Service了。

服务的访问则需要一定的代码工作来完成,从理论上说,Web Service可以被任何支持SOAP协议的语言调用。以java为例,调用Web Service的客户端代码如下:

可以看到,客户端设置了要访问的服务地址,要访问的具体方法及方法所需要的参数,访问结果则以String格式返回给了客户端,接下来对数据的处理与利用就是利用JSON来完成了。

3 结束语

通过以上论述的技术方式,可以轻松实现跨域、跨平台的远程数据访问,从而满足未来越来越多的网络数据访问需求。本方法可以应用于有数据访问需求的各种领域,数据发布者只需将要发布的数据表结构、支持的操作方法及服务访问地址提供给用户,用户即可根据自己的需求对数据进行重新组织与利用。随着Web Service的广泛应用,各种相关技术的不断成熟,基于Web Service技术的数据访问方法也将越来越受到数据用户的青睐。

摘要:网络远程数据获取与应用的需求日渐丰富,如何安全有效的将数据提供给用户成为普遍关注的问题。提供一种以WebService技术为基础,对用户屏蔽掉底层数据库种类不同,通过Java平台开发的远程多源数据库数据访问方法。用Java语言编写服务,Axis2框架发布WebService,JSON格式处理数据交换,通过WebService、Java、JSON、Axis2等关键技术的应用,实现跨平台的远程数据访问服务。

关键词:数据库,WebService,数据访问,JSON,Axis2

参考文献

[1]胡泽,廖闻剑,彭艳兵.WebService技术研究及应用[J].硅谷,2009,(5):48.

[2]吴淑雷,雷景生,陈焕东.基于XML的异构数据交换技术[J].广西师范大学学报:自然科学版,2007,25(2):78-81.

[3]柏永斌,许利亚,冯震宇,黄爱军.基于XML和WebService的异构数据整合技术应用研究[J].电脑知识与技术,2009,5(8):1796-1797.

[4]杨俊,李志蜀.基于DOM的WEB主题信息抽取[J].四川大学学报,2008,45(5):1077-1080.

[5]吴鹏飞,孟祥增,刘俊晓,马凤娟.基于结构与内容的网页主题信息提取研究[J].山东大学学报(理学版),2006,(3).

[6]胡雯.利用JSON实现Ajax中数据传递[J].科技信息,2009,(15):47,96.

[7]杨树林,胡洁萍.JSON数据交换格式及其在数据验证中的应用[J].北京印刷学院学报,2008,16(4):56-58.

上一篇:基层推广农业机械化下一篇:深空探测