首页> 中国专利> 具有基于角色的访问控制的计算机关系数据库方法和系统

具有基于角色的访问控制的计算机关系数据库方法和系统

摘要

一种计算机方法、系统和装置,控制对多个数据库中的受保护数据的访问。贮存库耦合到数据库并且具有安全运行时子系统。贮存库截获多个数据库中的主题数据库(subject database)的用户查询。安全运行时子系统根据截获的查询确定用户和对应的用户角色。基于用户角色,安全运行时子系统自动修改用户查询以滤除标识的用户未被授权访问、但是作为用户查询的部分的安全数据。

著录项

  • 公开/公告号CN102844756A

    专利类型发明专利

  • 公开/公告日2012-12-26

    原文格式PDF

  • 申请/专利权人 迪纳米科普斯公司;

    申请/专利号CN201180014182.2

  • 申请日2011-03-11

  • 分类号G06F17/30(20060101);G06F15/16(20060101);G06F21/20(20060101);

  • 代理机构11256 北京市金杜律师事务所;

  • 代理人酆迅;辛鸣

  • 地址 美国马萨诸塞州

  • 入库时间 2023-12-18 07:51:02

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-02-15

    授权

    授权

  • 2016-03-16

    专利申请权的转移 IPC(主分类):G06F17/30 登记生效日:20160226 变更前: 变更后: 申请日:20110311

    专利申请权、专利权的转移

  • 2013-02-13

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20110311

    实质审查的生效

  • 2012-12-26

    公开

    公开

说明书

相关申请

本申请要求2010年3月15日提交的第61/313,951号美国临时 申请的权益。

上述申请的全部教导通过引用而结合于此。

技术领域

本公开内容具体描述用来实施基于角色的访问控制系统以保 护关系数据模型中或者一个或者多个数据库中存储的数据的算法和 结构。

背景技术

一般在现有技术中,关系数据库系统仅在对象/操作级提供安 全性。例如,有可能配置哪些用户可以读取或者修改表、视图或者 存储过程。在更高级的数据库系统中,也有可能控制行级访问(使 用视图以控制对数据的访问(使用由数据库系统提供的角色隶属函 数)并且使用模型以存储数据标签到角色的关联(该关联可以用来 过滤由视图呈现的数据))。那些机制带来以下问题:

(1)需要在数据库系统中配置访问数据库的用户或者组。

(2)数据库系统必须具有对安全存储库(即LDAP)的物理 访问权以便分析用户组隶属关系和账户的状态(启用/禁用)。

(3)必须与数据库一起或者在连接到数据库时使用用户的标 识。

(4)在多层系统上认证用户需要委托并非普遍可用的证书。

(5)在数据库服务器中认证每个用户防碍使用连接池并且因 此降低性能。

(6)迫使数据库分析用户、组和角色隶属关系降低性能。

(7)对安全角色的改变需要修改数据库对象(即视图或者存 储过程)。

发明内容

本发明解决现有技术的弊端。各实施例提供一种将对象和行级 安全性从数据库系统去耦合的解决方案。也就是说,实施例在数据 库表的行级和列级二者控制对数据库对象中的数据的访问。可以控 制用户是否可以看见(访问)数据库表并且继而在行级以及列级(即 表中的字段)控制用户可以看见(访问)来自表内部的什么数据。 重申的是,出于用户访问和安全目的而有效限定表的子视图。

本发明的实施例的高级过程如下:

1.用户经由贮存库向目标关系模型提交查询。

2.贮存库截获查询并且标识用户。

3.可以提供用户名作为附加信息以便支持委托。

4.解析查询以便标识哪些数据库对象将由查询访问。

5.贮存库查找将在元模型(MetaModel)中访问的实体(对 象)的安全信息并且分析授权存储库(即LDAP)中存储的任何组隶 属关系。

6.贮存库允许或者不允许在甚至到达目标数据库之前访问对 象/实体。

7.如果允许访问,则贮存库在查询被提交到关系模型(目标 数据库)之前修改它,从而使得例如使用SQL where子句来滤除拒 绝用户访问(即未授权或者无资格访问)的信息。SQL where子句在 数据库表的行级过滤。

因此,水平(按照数据库表行)和竖直(按照数据库表列)限 定用于访问的安全规则,并且修改的查询水平(按照数据库表行) 和竖直(按照数据库表列)过滤数据请求。

存储安全配置信息作为如下数据,该数据使用丰富表达系统来 限制(qualify)哪些数据可由某个角色/任务访问。这一信息也由贮 存库本身保护并且因此使安全系统在运行时动态可调。

在一个实施例中,一种控制对数据库中的受保护数据的访问的 方法和/或系统包括:

将贮存库操作地耦合到存储安全数据的一个或者多个数据 库;

配置和运用贮存库以截获数据库中的一个数据库的用户查 询;

贮存库可由处理器执行,并且处理器根据截获的查询自动确 定生成用户查询的用户和向该用户分配的用户角色;

基于确定的用户角色,处理器自动修改用户查询以滤除用户 无访问权(无资格或者未被允许访问)的安全数据;并且

将修改的查询应用于一个数据库以取回(如由用户角色授权 的)合格数据。

各实施例解析截获的查询并且标识主题数据库中的将作为用 户查询的部分而访问的对象。用户查询可以包括用户的指示。并且 储存器还被配置成在数据库中的元模型中查找标识的对象的安全信 息并且分析任何组隶属关系。

根据本发明的原理,各实施例在数据库的元模型中存储限制哪 些数据对象可由某些用户角色访问的安全信息。贮存库还被配置成 在元模型中查找标识的对象的安全信息并且确定滤除用户查询的哪 些标识的对象。例如,贮存器被配置成在如元模型中限定和相关的 相关表、子表、列、行和元素中遍历查找标识的对象的安全信息。 各实施例还使用贮存库以保护安全信息。这使安全信息能够在运行 时动态可调

在一些实施例中,自动确定和自动修改的步骤包括将对象和行 级安全性从主题数据库去耦合。

数据库中的至少一个数据库在各实施例中是关系数据库。自动 修改用户查询的步骤包括插入SQL where子句以滤除主题数据库中 的某些安全数据对象(表行),这些安全数据对象是用户查询的部 分。

优选地,数据库相互无关、相异并且非集中管理。

附图说明

从如附图中所示本发明的示例实施例的下文更具体描述中前 述内容将是显而易见的,在附图中,相似标号贯穿不同视图指代相 同部分。附图未必按比例,代之以强调图示本发明的实施例。

图1是本发明的一个实施例的框图。

图2是实施例中的关系数据模型和对应的元数据(即元模型) 的示意图。

图3是实施例中的元模型的基于角色的安全信息的示意图。

图4是将本发明具体化的计算机网络的示意图。

图5是图4的网络中的计算机节点的框图。

具体实施方式

本发明示例实施例的描述如下。

图1的示图代表本发明一个实施例的部件。所示系统100将对 象和行级安全性从数据库系统去耦合。实施例系统100一次对多个 数据库19操作或者应用于多个数据库19。多个数据库中的数据库相 互无关并且非集中管理。发明系统100的部件在一个实施例中包括: 贮存库15,其存储数据库19的模型23或者其部分;web服务接口 29,其向终端用户呈现模型23的表示;元模型数据13;以及安全系 统部件17。

贮存库15包括:(1)多个模型23和(2)模型管理器。多个 模型23包括定制模型以及系统标准模型。每个模型23由代表目标 数据库19、业务逻辑、事件触发和函数、安全定义和分布配置的数 据模型形成。可以创建、修改并且向模型管理器25/贮存库15中注 入作为模型23的部分的这些元素中的每个元素。模型管理器25按 模型23管理这些元素并且将这些元素分组成模型23。

对于给定模型23,它的数据模型限定实体、属性和关系(比 如目标数据库19的表和子表以及表/子表的组织)。可以在每个逻辑 级(表元、子表元、表部分或者全部、子表部分或者全部)限定安 全配置。限定、修改或者更新模型23的部分、向模型管理器25/贮 存库15中注入新模型23或者更新旧模型是系统100中的无需编码 或者编译的简单配置任务并且可以在贮存库15的实例运行之时被执 行。对于每个模型23,系统100在模型管理器25/贮存库15中限定 模型的数据和业务逻辑并且在模型管理器25中指定模型的安全性、 事件和分布配置。这使模型管理器25和贮存器15能够支配谁、何 时和何处执行业务逻辑以及访问数据。

在一个实施例中,贮存器15的支配结构可以设定和控制如何 为具体用户、组和组织提供和定制服务。申请人用服务指代虚拟机、 桌面、物理服务器以及一般由专用或者公用云内的系统100管理的 任何基础结构、平台或者软件。

贮存库15的支配结构控制与外部数据库/关系模型19的系统 集成的定制解决方案的方面。具体而言,贮存库15的支配结构控制:

在贮存库15内部或者使用外部数据库或者系统创建、访问和 修改现有的或者新数据;

限定在分布式可缩放环境中执行的定制业务逻辑;

配置指定何时执行业务逻辑的规则;以及

配置指定何处执行业务逻辑的规则。

可以用两种方式限定新数据模型(在23):

(i)连接到现有外部数据库19并且选择整个数据库19或者 数据的子集。

(ii)从暂存器创建指定新实体、属性和关系的新数据。

继而,可以向模型管理器25和贮存器15中注入数据模型和对 应的模型23,并且模型管理器25转而自动生成REST接口29(或 者相似的web服务接口)。不同于暴露URI(标识因特网网上的资 源的统一资源标识符)的全部内容的典型REST接口29,系统100 自动生成的REST接口29使用可以容易地支持复杂条件的访问权 限、规则和过滤器来向数据仅暴露所选部分。实现这一点而未写入 具体或者专用代码。用户可以使用贮存库15的REST接口29和支 配结构来读取、修改和删除来自外部系统19或者来自新模型23的 数据。

特别令人感兴趣和有利的是,系统100提供对数据库系统19 中的受保护数据的受控用户访问。系统100将对象和行级安全性从 数据库系统19去耦合。具体而言,系统100在表行级和表列级二者 控制对数据库对象中的数据的访问。系统100支持控制用户是否可 以看见(访问)数据库表并且继而在行级以及在列级控制用户可以 看见(访问)来自表内部的什么数据。这意味着系统100可以控制 对表中的具体个别字段的数据访问并且有效限定表的子视图。在高 级总览中,发明系统100关于受控访问的操作如下。

首先,用户经由贮存库15向目标关系模型19提交查询11。 作为响应,贮存库15截获输入查询11并且标识提交用户。可以提 供用户名作为查询11中的附加信息以便支持委托。

接着,贮存库15解析查询11并且标识哪些数据库对象或者实 体将由查询11访问。贮存库15在元模型13中查找待访问的数据库 实体的安全信息并且分析授权存储库(即LDAP)17中存储的任何 组隶属关系。因而,贮存库15允许或者不允许在甚至到达数据库19 之前(即在查询11到达关系模型19之前)访问数据库对象/实体。

如果允许任意级访问,则贮存库15在查询被提交到关系模型 19之前修改它,从而使得例如使用SQL where子句来滤除拒绝用户 访问(未授权)的数据对象。SQL where子句在数据库表的行级过滤。 因而,修改的查询应用于关系模型19。

因此,水平(按照数据库表行)和竖直(按照数据库表列)限 定访问规则,并且水平(按照数据库表行)和竖直(按照数据库表 列)过滤经由REST调用回传的数据。

在元模型13中,存储安全配置信息作为如下数据,该数据限 制哪个(哪些)数据库19的对象可以由某一用户角色/任务访问。这 一信息也由贮存库15本身保护(在模型23中)从而使发明安全系 统100在运行时动态可调。

关系模型19

在包括查询语言的存储系统中托管多个关系数据模型19,该 查询语言能够处理具有条件语句支持的查询。这样的存储系统的示 例是(但不限于)支持主关键字和外关键字、join语句和where子句 的关系数据库。一般而言,多个关系模型/数据库19相互无关、相异 而且非集中管理。

存储系统中的每个关系模型19包括标准机器可读格式的关系 和实体。这一机器可读信息是元模型13并且包括用来存储数据(包 括存储的数据的类型信息)的所有数据库实体和在所有实体之间的 关系的完全描述。

在图2中图示了关系数据模型19和对应的XML元数据13(机 器可读)的示例并且逐项列举如下:

元模型13的数据提供模型23的数据模型。

基于角色的安全系统17

基于陈述角色的安全系统17由两个主要子系统形成:数据子 系统和安全运行时子系统。

数据子系统是用来存储目标关系模型19的安全访问规则的关 系模型。安全系统17使用分级结构以便最大化系统的可表达性并且 因此最小化在代表目标模型19的访问控制规则与不同用户角色之间 的复杂关系时的信息重复。水平(按照关系模型19的行)和竖直(按 照关系模型19的列)限定访问规则,并且因此水平(关系模型19 的行)和竖直(关系模型19的列)过滤经由REST调用回传的数据。

安全运行时子系统是用来确定应用于特定用户的访问控制规 则并且过滤该用户不可访问的数据的算法集。安全运行时截获向目 标关系模型19的存储系统的任何查询11,它继而修改查询,从而使 得滤除未授权数据(即未授权可由用户访问的数据)。

在一个实施例中,使用图3中所示的关系模型来存储基于角色 的安全信息17。在图3中,

模型(Model):代表待保护的目标关系模型19。

实体(Entity):代表目标模型19中的实体。

实体授权(EntityAuthorization):代表关联到实体的访问规 则(例如,对实体的读取访问)。

实体过滤器(EntityFilter):是在目标实体的数据及其关系之 上的条件语句集。例如,“雇员.地址.城市=伦敦 (Employee.Addresses.City=London)”。

范围(Scope):是可以用来对目标模型19中的实体集分组 的信息位。范围中的数据可以用来唯一标识属于该范围的实体。例 如,范围可以是城市名(比如伦敦),继而可以唯一标识伦敦内的 所有地址、居住在伦敦的雇员和所有伦敦电话号码作为范围的部分。

角色分配(RoleAssignment):代表用户在特定范围中的角色。

角色定义(RoleDefinition):代表系统内的角色(例如,用 户、管理员、访问者)。

任务定义(TaskDefinition):代表关联到角色的任务集。

模型管理器25使用前述内容作为存储于贮存库15中的模型 23的安全配置。继而,在处理用户查询11中,贮存库15如下文清 楚解释的那样查看模型23的定义。也根据模型23的定义,模型管 理器25生成用于在REST或者web服务接29中产生目标数据库 19的相关表示的代码。

以下示例举例说明在一个实施例中由发明系统100处理的事 件序列。

1.查询11以表达式树的形式由用户提交并且由(17的)安 全运行时子系统截获。

“SELECT Employee.Name,Telephone.PhoneNumber FROM Employes, Telephones”

2.安全运行时子系统(在17)解析表达式树并且标识访问目 标模型中的哪些实体作为查询11的部分。

雇员,电话(Employee,Telephone)

3.安全运行时子系统17构建列表,其中所有任务定义在发 送查询11的用户的每个范围中。

Scope =London

Role Definition=User

Task Definition=List Employee Phones

Role Assignment=Abe,Role=User,Scope=London

EntityAuthorization=Employee(Read=true),Telephone(Read=true)

EntityFilter=Employee.Address.Country=[Seope]

下表中的结果用于用户Abe

Scope=London,Task=List Employee Phones

4.安全运行时子系统17访问查找表(元模型13中的文件), 该查找表具有关联到该实体的所有访问规则和过滤器(实体授权、 实体过滤器)。

Employee:Read,Employee.Country=[Scope]

5.安全运行时(在17)使用以下算法来构建表达式树以过滤 未授权数据/未被允许可由用户访问的数据:

a.通过在步骤4中发现的每个表达式中完成以下替换来为在 步骤3中生成的列表中的每个范围/任务对生成表达式:

i.[范围(Scope)]替换为范围名称

ii.[应用(Application)]替换为关联到范围的应用名称

iii.[用户名(UserName)]替换为用户的名称

iv.未修改字面值。

v.如果无表达式关联到EntityAuthorization,则生成常数 “True”布尔表达式。

b.表达式总数等于步骤3中的行总数乘以从步骤4产生的表 达式数目。

c.使用OR表达式将关联到相同EntityAuthorization的所有表 达式级联成单个表达式。

d.使用AND表达式将从先前步骤产生的来自不同 EntityAuthorization的所得单个表达式级联成单个表达式。

Employee.Country=London

6.安全运行时子系统(在17)向截获的查询11的条件部分 追加在先前步骤中构建的表达式。如果查询11不支持条件部分,则 将表达式赋值给影响(例如Create)的每个目标模型(数据库)实体。

“SELECT Employee.Name,Telephone.PhoneNumber FROM Employes,

Telephones WHERE Employee.Address.Country=London”

7.发送修改的查询11以用于处理并且随后向用户返回查询 结果数据21。

因而,安全运行时系统17在涉及目标数据库19的模型23的 不同数据级(表、子表、行、列、实体)应用由不同人按照分配的 用户角色为用户限定的如存储于元模型13中的安全约束。安全运行 时查看每个数据级并且应用如在修改查询11时相关的安全约束(安 全数据子系统中的规则)。这使得水平(按照目标数据库19的表行) 和竖直(按照目标数据库19的表列)过滤经由REST调用回传的数 据。

以这一方式,发明系统100在数据库表的行级和列级二者控制 对数据库对象中的数据的访问。有利地,可以在数据库表行级以及 在列级并且因此按照表的字段控制用户/用户角色是否可以访问数据 库表以及用户可以访问来自表内部的什么数据。这意味着出于用户 访问和安全目的而限定表的子视图。

因而,发明系统100使用陈述方式来自动化低级代码生成。陈 述业务过程、触发事件和对应的数据模型(目标数据库)以及用于 数据的组织规则(动作和操作)的定义。根据这些陈述,系统1oo 的运行时引擎动态编译和生成低级代码并且向系统100及其计算机 网络中注入这样的代码。

因此,本发明系统100提供一种用于关系数据模型19的陈述 分布式事件系统。另外,本发明呈现一种以资源和数据为中心的全 局计算机网络(即因特网)规模的架构。本发明的陈述分布式事件 系统能够跨计算机网络操作,并且允许适应、保存目标数据库的规 范样式并且对这些样式无限制。申请人的发明的该陈述方式允许描 述系统应当完成什么而不是系统应当如何完成它。现有技术未实现 这样的优点。

图4图示了本发明可以实施于其中的计算机网络或者相似数 字处理环境。

客户端计算机/设备50和服务器计算机60提供执行应用程序 等的处理、存储和输入/输出设备。客户端计算机/设备50也可以通 过通信网络70链接到其它计算设备(包括其它客户端设备/过程50 和服务器计算机60)。通信网络70可以是当前使用相应协议 (TCP/IP、蓝牙等)相互通信的远程接入网络、全球网络(例如, 因特网)、世界范围的计算机汇集、局域网或者广域网和网关的部 分。其它电子设备/计算机网络架构是适合的。

图5是图4的计算机系统中的计算机(例如,客户端处理器/ 设备50或者服务器计算机60)的内部架构的示图。每个计算机50、 60包含系统总线79,其中总线是用于在计算机或者处理系统的部件 之间的数据传送的硬件线路集。总线79实质上是连接计算机系统的 不同元件(例如,处理器、盘储存器、存储器、输入/输出端口、网 络端口等)的共享管道,该管道实现在元件之间的信息传送。用于 将各种输入和输出设备(例如,键盘、鼠标、显示器、打印机、扬 声器等)连接到计算机50、60的I/O设备接口82附接到系统总线 79。网络接口86允许计算机连接到各种附接到网络(例如,图4的 网络70)的其它设备。存储器90为用来实施本发明的一个实施例的 计算机软件指令92和数据94(例如,上文详述的贮存库15、模型 管理器25、安全运行时子系统17和支持代码)提供易失性存储。盘 储存器95为用来实施本发明的一个实施例的计算机软件指令92和 数据94提供非易失性存储。中央处理器单元84也附接到系统总线 79并且提供计算机指令的执行。

在一个实施例中,处理器例程92和数据94是计算机程序产品 (通常引用为92),该产品包括计算机可读介质(例如,可移除存 储介质(比如一个或者多个DVD-ROM、CD-ROM、磁盘、磁带等)), 该介质提供用于发明系统的软件指令的至少部分。如本领域中公知 的那样,计算机程序产品92可以由任何适当软件安装过程安装。在 另一实施例中,也可以通过线缆、通信和/或无线连接下载软件指令 的至少部分。在其它实施例中,发明程序是在传播介质(例如,通 过全球网络(比如因特网)或者其它网络传播的无线电波、红外波、 激光波、声波或者电波)上的传播信号上具体化的计算机程序传播 信号产品107。这样的载波介质或者信号提供用于本发明例程/程序 92的软件指令的至少部分。

在备选实施例中,传播信号是在传播介质上输送的模拟载波或 者数字信号。例如,传播信号可以是通过全球网络(例如因特网)、 电信网络或者其它网络传播的数字化信号。在一个实施例中,传播 信号是在时间段内通过传播介质传输的信号(比如在毫秒、秒、分 钟或者更长的时段内通过网络在分组中发送的用于软件应用的指 令)。在另一实施例中,如上文针对计算机程序传播信号产品描述 的那样,计算机程序产品92的计算机可读介质是计算机系统50可 以接收和读取的传播介质(比如通过接收传播介质并且标识在传播 介质中具体化的传播信号)。

广而言之,术语“载波介质”或者瞬态载波涵盖前述瞬态信号、 传播信号、传播介质、存储介质等。

尽管已经参照其示例实施例具体示出和描述了本发明,但是本 领域技术人员将理解可以在其中做出形式和细节上的各种改变而不 脱离所附权利要求涵盖的发明范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号