具体实施方式
为实现本发明目的,本发明使用了一种授权访问策略,该授权访问策略包括用户组标识、资源组标识、关系、访问权限,进一步地,授权访问策略还包括资源库标识。一条授权访问策略可以用一个五元组描述:(资源库标识,用户组标识,资源组标识,关系,访问权限)。下面具体对五元组中的各元素进行详细说明:
“资源库标识”表示五元组描述的授权访问策略所作用的资源库,资源库标识必须是系统已经定义的合法的资源库名称。
“用户组标识”表示五元组描述的授权访问策略所作用的用户集合,用户组标识可以是系统中预先定义的一个用户组名,也可以为空,当用户组标识为空时,表示该授权访问策略作用于全体合法用户。
“资源组标识”表示五元组描述的授权访问策略所作用的数字资源的集合,可以是系统预先设定的一个资源组名,也可以为空,当资源组标识为空时,表示该授权访问策略作用于同一五元组中资源库标识对应的资源库中全体数字资源。
“关系”表示五元组描述的授权访问策略中用户组中的用户与资源组中的数字资源必须要满足的关系。
“权限”表示五元组描述的授权访问策略中赋予用户组中的用户对资源组中的资源的访问权限,如:只读R、修改M、删除D等,其中,修改和删除隐含读的权限。
根据以上对五元组的描述,一条授权访问策略可以通过以下公式定义:
假设:T表示系统中资源库集合,t表示T中的一个资源库;S表示系统中用户组集合,s表示S中的一个用户组;O表示系统中资源组集合,o表示O中的一个资源组;R表示系统中所有关系集合,r表示R中的一个关系;P表示系统中权限集合,p表示P中的一个权限,则授权访问策略集A={(t,s,o,r,p)|t∈T,s∈S,o∈O,r∈R,p∈P}。A中一个授权访问策略a的具体含义是:如果s中的某个用户与o中的某个资源存在关系r,则该用户对该资源就有权限p。
一条授权访问策略中的“用户组”、“资源组”和“关系”元素可以分别通过以下“主体表达式”、“约束表达式”和“关系表达式”来表示。
“主体表达式”用于表示授权访问策略中的用户组,可以出现如下几种类型:
(1)、通过函数AllUser()表示。
如果针对全体用户,则主体表达式可以写为“AllUser()”的形式,表示将全体用户划分在一组。
(2)、利用用户属性表示。
在主体表达式中可以采用“user.属性名”的方式来表示用户的属性名称,如用户的职务级别属性名称为DutyLevelID,则表示所有职务为科长的主体表达式可以写成“user.DutyLevelID=科长”。
(3)、利用用户角色表示。
在主体表达式中可以采用“user.role”表示用户所属的角色,用户是否具有某种角色可以表示为“user.role in角色名称”,如表示角色为系统管理员的主体表达式可以写为“user.role in系统管理员角色”。
(4)、利用用户所属组表示。
在主体表达式中可以采用“user.group”表示用户所属组,用户是否属于某个组就可以表示为“user.group in组名称”,如表示所有属于研发组的主体表达式可以写为“user.group in研发组”。
“约束表达式”用于表示授权访问策略中的资源组中的资源所要满足的约束条件,如果约束表达式为空,表示资源组中的资源没有约束条件。“约束表达式”可以出现如下几种类型:
(1)、利用资产属性表示。
在约束表达式中可以采用“field.属性名”来表示数字资源的资产属性,如要表示所有状态为草拟的数字资源,其属性名称为status,则约束表达式可以为:“field.Status=草拟”。
(2)、利用用户属性表示。
在约束表达式中也可以引用用户属性,其引用方式与在主体表达式中相同。例如,部门属性为dept,表示用户所在的部门,资产也具有部门属性dept,表示资产所属的部门,在用户只能读本部门的数字资源时,约束表达式为“field.dept=field.dept”。
“关系表达式”表示授权访问策略中用户组中的用户与资源组中的资源之间要满足的关系,包括但不限于以下几种关系:
(1)、创建者关系,表示用户与资源之间是创建者的关系,即该资源由该用户创建。
(2)、同部门关系,表示资源是同部门的用户所有,即如果资源的部门属性与用户的部门属性相同,则该资源为该用户所有。
(3)、显示权限关系,表示是否向用户显示该用户对资源组中的资源访问的权限,如果用户与资源间的关系具有显示授权关系,则在用户请求获知访问权限时,向用户显示其与资源的访问权限。
本发明实施例中涉及的授权访问策略并不限于五元组,也可以对该五元组进行扩展,额外增加新的元素,成为六元组或七元组等,后续为简便描述,称之为多元组,每一条多元组表示一条授权访问策略。
根据预先设定的上述授权访问策略,可以对数字资源进行访问,如图1所示,为本发明实施例一中对数字资源的访问方法示意图,该方法包括以下步骤:
步骤101:用户向服务器发起资源访问请求,所述资源访问请求中包含用户信息和操作信息。
所述操作信息可以为请求查询所述用户对资源库中的数字资源的访问权限,也可以为请求对资源库中的数字资源进行读、修改、删除等操作。
资源访问请求中还可以包含:待访问的数字资源所属的资源库标识和访问条件。
步骤102:根据接收到的资源库标识,对多元组进行一次筛选,一次筛选后的多元组中包含所述资源库标识。
服务器预先设置并保存多条授权访问策略即多条多元组,同一多元组中的资源组与资源组标识具有对应关系,用户组与用户组标识具有对应关系。
服务器将能够发起资源访问请求的用户按照一定条件划分为多个用户组,用主体表达式表示,每个用户组中包含多个用户,一条授权访问策略中用户组的用户对该策略中的资源组可以看作具有相同的访问权限。同时,服务器还将资源库中的数字资源按照一定条件划分为多个资源组,用约束表达式表示。
步骤102并不是实现本发明目的的必要步骤,可以不利用资源库标识对多元组进行一次筛选,而看作对系统中的全体资源库进行后续操作。
步骤103:服务器根据接收到的用户信息确定所述用户所属的用户组。
步骤104:对步骤102中确定出的多元组进行二次筛选,二次筛选出的多元组中包含步骤103中确定出的用户组。
步骤105:根据资源访问请求中的访问条件,对步骤104筛选后的多元组进行三次筛选,三次筛选出的多元组中包含满足所述访问条件的资源组。
步骤105也不是实现本发明目的的必要步骤,可以按照访问条件对多元组进行三次筛选,而看作对系统中的任意资源进行后续操作。
步骤106:根据资源访问请求中的操作信息,进一步对步骤105筛选后的多元组进行四次筛选,四次筛选后的多元组中用户与资源的关系满足操作信息中用户与资源的关系,且用户与资源的访问权限与操作信息中用户请求的操作匹配。
步骤107:如果操作信息为请求查询数字资源的访问权限,则执行步骤108;如果操作信息为请求对资源库中的数字资源进行读、修改、删除等操作,则执行步骤109。
步骤108:向用户输出步骤106筛选出的多元组中的资源组对应的资源,以及用户与资源的访问权限,此时访问过程结束。
输出包括显示、打印、传送等操作。
步骤109:向用户输出步骤106筛选出的多元组中的资源组对应的资源,并跳转到数字资源处理服务器,让用户对数字资源进行相应的操作。
步骤101至步骤109描述了一种数字资源的访问方法,由于将用户和数字资源都按组进行了划分,因此只需要建立用户组和资源组间的权限关系,减少了权限关系建立的数量。并且,通过用户与资源的关系,可以从大量的授权访问策略中快速查找出特定用户对特定资源的访问权限,提高了访问效率。
假设将实施例一的方案应用于某公司的数据库中,数据库服务器利用用户所属组来表示主体表达式,将能够发起资源访问请求的用户(如公司员工)按照所属部门划分为三个组,其标识分别为研发组、财务组、人事组;将数据库中的数字资源按数字资源所属部门划分为多个组,进一步地,属于同一部门的数字资源又按照创建时间划分为2008年前创建和2008年后创建:第一资源组A中的数字资源属于研发组且创建时间为2008年前,第一资源组B中的数字资源属于研发组且创建时间为2008年后;第二资源组A中数字资源属于财务组且创建时间为2008年前,第二资源组B中数字资源属于财务组且创建时间为2008年后;第三资源组中A数字资源属于人事组且创建时间为2008年前,第三资源组中B数字资源属于人事组且创建时间为2008年后。服务器根据用户组和资源组的权限关系建立多个授权访问策略即五元组,由于该权限关系针对公司数据库中的所有数字资源,因此,资源库为公司资源库,如表1所示,为建立的授权访问策略集合,该授权访问策略集合可以存储在数据库服务器的内存中。
表1
表1中包含了18条五元组,每条五元组中都包含了“资源库标识”、“用户组标识”、“资源组标识”、“关系”和“权限”五个元素,实施例二以表1所示的五元组集合为基础,详细阐述实施例一的具体实现手段。假设属于研发组某一用户希望查询自身能够同部门的数字资源进行什么样的访问,即对同部门资源的访问权限是什么,则实施过程如下:
第一步:用户向公司的数据库服务器发起资源访问请求,包括:用户信息和操作信息。
用户信息可以是系统预先为用户开设的账号和密码,用于表示用户的身份,如用户是否为公司员工,如果是公司员工属于什么部门。
操作信息为查询对同部门的数字资源的访问权限是什么。
资源访问请求还可以进一步包括访问条件:对2008年后的数字资源进行访问。
资源访问请求中可以不包含资源库标识,默认用户的访问是针对整个公司数据库中的数字资源。
第二步:数据库服务器根据接收到的用户信息确定该用户所属的用户组。
在本步骤中,数据库服务器可以根据用户信息对用户进行鉴权,如果鉴权通过,确定用户为合法用户后执行后续步骤;否则,向用户返回鉴权失败响应消息,停止资源访问过程。
第三步:数据库服务器从表1中的五元组中查找出包含研发组标识的五元组。
在表1所示的五元组集合中,查找出前六条五元组中包含研发组标识。
第四步:根据访问条件:对2008年后的数字资源进行访问,从第三步查找出的五元组中确定出包含满足该访问条件的资源组的五元组。
对第三步中查找出的六条五元组进行筛选,其中的三条五元组中的资源组满足访问条件,分别是:(公司标识,研发组,第一资源组B,同部门/显示权限,修改/删除)、(公司标识,研发组,第二资源组B,访问者,只读)、和(公司标识,研发组,第三资源组B,访问者,只读)。
第五步:根据操作信息,从第四步中确定出的三个五元组中进一步选择用户与资源关系为同部门的五元组。
选择出的五元组为(公司标识,研发组,第一资源组B,同部门/显示权限,修改/删除)。
第六步:将第五步选择出的五元组中第一资源组B中的资源,以及用户与该资源的访问权限修改/删除向用户输出。
在本实施例中,由于用户对同部门的资源有显示权限,则将满足访问条件和操作信息的资源与用户的访问权限向用户输出。
假设本实施例三中,属于研发组某一用户希望对同部门的数据进行修改,则实施例三的流程如下:
第一步:用户向公司的数据库服务器发起资源访问请求,包括:用户信息和操作信息。
操作信息为对同部门的数字资源进行修改。
资源访问请求还可以进一步包括访问条件:对2008年前的数字资源进行访问。
本实施例三的第二、三步与实施例二相同。
第四步:根据访问条件:对2008年前的数字资源进行修改,从第三步查找出的五元组中确定出包含满足该访问条件的资源组的五元组。
对第三步中查找出的六条五元组进行筛选,其中的三条五元组中的资源组满足访问条件,分别是:(公司标识,研发组,第一资源组A,同部门/显示权限,修改/删除)、(公司标识,研发组,第二资源组A,访问者,只读)、和(公司标识,研发组,第三资源组A,访问者,只读)。
第五步:根据操作信息,从第四步中确定出的三个五元组中进一步选择用户与资源关系为同部门的五元组。
选择出的五元组为(公司标识,研发组,第一资源组A,同部门/显示权限,修改/删除)。
第六步:根据表1所示,用户可以对第一资源组A中的资源进行修改,因此,向用户输出第五步选择出的五元组中的第一资源组A中的资源,并跳转到数字资源处理服务器,让用户对数字资源进行修改。
如果实施例三中操作信息是用户对财务部门的数字资源进行修改,则由于请求的操作与用户的权限不匹配,因此,不允许用户对财务部门的数字资源进行修改的操作。
本发明实施例四是与实施例一属于同一发明构思下的一种数字资源的访问设备,如图2所示,所述设备包括:请求接收模块11、第一筛选模块12、第二筛选模块13和输出模块14,其中:请求接收模块11用于接收资源访问请求,所述资源访问请求中包含用户信息和操作信息;第一筛选模块12用于根据所述用户信息对多元组进行筛选,筛选出的所述多元组包含所述用户信息所属的用户组;第二筛选模块13用于根据所述操作信息对第一筛选模块11筛选出的多元组进行选择,选择出的所述多元组中用户与资源的关系满足操作信息中用户与资源的关系,且所述多元组中用户与资源的访问权限与操作信息中用户请求的操作匹配;输出模块14用于输出选择出的多元组包含的资源组对应的资源。在所述操作信息为查询对资源的访问权限时,输出模块14进一步用于输出选择出的所述多元组中的资源组对应的资源,以及用户与资源的访问权限。
所述设备还包括第三筛选模块15,用于根据资源访问请求中的资源库标识,确定包含所述资源库标识的多元组;所述第一筛选模块12进一步用于从第三筛选模块15筛选后的多元组中,筛选出包含所述用户信息所属的用户组的多元组。
所述设备还包括第四筛选模块16,用于根据资源访问请求中的访问条件,从第一筛选模块筛选出的多元组中选择包含满足所述访问条件的资源组的多元组;所述第二筛选模块13进一步用于从第四筛选模块16筛选后的多元组中,筛选出用户与资源的关系满足操作信息中用户与资源的关系,并且用户与资源的访问权限与操作信息中用户请求的操作匹配的多元组。
通过本发明实施例提供的方法和设备,减少需建立的访问权限关系,在访问过程中可以根据用户与资源的关系快速查找出用户对某些特定资源的访问权限,降低了访问控制带来的高管理成本及执行访问控制时所需的系统开销,管理员可以根据具体的业务需求,定义灵活可变、支持粗细粒度的授权访问策略,在充分满足资源共享的同时对资源进行有效保护。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。