CN114372249A - 一种基于权限码的数据权限控制方法及装置 - Google Patents
一种基于权限码的数据权限控制方法及装置 Download PDFInfo
- Publication number
- CN114372249A CN114372249A CN202210277409.2A CN202210277409A CN114372249A CN 114372249 A CN114372249 A CN 114372249A CN 202210277409 A CN202210277409 A CN 202210277409A CN 114372249 A CN114372249 A CN 114372249A
- Authority
- CN
- China
- Prior art keywords
- data
- authority
- code
- rules
- target
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/604—Tools and structures for managing or administering access control systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Automation & Control Theory (AREA)
- Storage Device Security (AREA)
Abstract
本发明涉及一种基于权限码的数据权限控制方法及装置,将所有数据匹配各种数据权限规则,匹配完毕后依次得到有权限访问某条数据的所有人员的人员身份标识,对这些人员身份标识生成一个唯一的权限码,把这个权限码存储到该条数据的固定字段上;当用户查询数据的时候,先获取与当前用户身份标识相关的所有权限码,然后再查询这些权限码关联的所有数据,并把结果返回给用户。本发明通过生成可以在多条数据之间共用的权限码,使得数据管理的效率跟数据的量级无直接强相关性,相对于传统的数据权限控制方法,数据管理性能得到了极大的提升。
Description
技术领域
本发明涉及数据管理技术领域,尤其涉及一种基于权限码的数据权限控制方法及装置。
背景技术
在产业互联网的云计算系统中,一套IT系统要服务于多个租户,每个租户都有自己的业务场景和数据管控策略,这些场景和管控策略通常有很大差异并且还涉及对海量数据的复杂权限设置。目前,市面上现有的数据权限控制方法,无法满足高灵活度的数据管控定制需求;在面对海量数据和复杂的数据权限控制规则时,数据查询效率低,无法满足高并发、高可用的技术指标;并且随着业务发展,数据权限控制规则迭代和数据量不断增加,现有的数据权限控制方法无法实现数据和管控规则的高效实时更新,也无法持续保持最初可预期的性能,无法保证系统响应时间不随数据量级和规则复杂度的增加而变长。
发明内容
基于现有技术上述的一个或多个问题,本发明提供了一种基于权限码的数据权限控制方法及装置,通过灵活设置数据权限规则以及利用可在多条数据之间共用的权限码,使得数据权限控制和管理更加灵活和高效,特别是使数据查询效率与数据的量级无直接相关性,相较于传统的数据权限控制方法,在效率上得到了极大的提升,也降低了对于系统硬件性能的要求,节约了成本。
为了达到上述目的,本发明提供了一种基于权限码的数据权限控制方法,包括下述步骤:
S1获取第一数据集合中的第一数据,根据第一数据权限规则集合中的一个或多个数据权限规则对第一数据生成第一人员身份标识集合,并根据第一人员身份标识集合生成第一权限码,所述数据权限规则包括人员身份标识、数据项目和数据范围之间的映射关系;
S2将第一人员身份标识集合和第一权限码建立第一关联关系并储存,并将第一权限码和第一数据建立第二关联关系并储存;
S3获取第一数据集合中的下一数据,返回S1,直至所述第一数据集合中的全部数据遍历完成;
进一步的,还包括下述步骤:
S4根据访问人员的一个或多个目标人员身份标识获取一个或多个目标人员身份标识集合;
S5根据所述一个或多个目标人员身份标识集合获取与其存在第一关联关系的一个或多个目标权限码,之后根据所述一个或多个目标权限码获取与其存在第二关联关系的目标数据;
S6返回所述目标数据。
进一步的,所述第一数据集合是根据所述第一数据权限规则集合获取的,具体包括:
获取第一数据权限规则集合中的一个或多个数据权限规则所包含的一个或多个数据项目,将其去重后合并为数据项目集合,依次获取所述数据项目集合中每一个数据项目所包含的数据,将其去重后合并为第一数据集合。
进一步的,其特征在于,所述根据第一数据权限规则集合中的一个或多个数据权限规则对第一数据生成第一人员身份标识集合包括:
依次判断所述第一数据是否与所述第一数据权限规则集合中的每一个数据权限规则的数据范围相匹配,若匹配则提取所述判断的该数据权限规则的第一人员身份标识,直至所述第一数据权限规则集合中的所有数据权限规则遍历完成,之后将所述提取的所有的第一人员身份标识去重后合并为第一人员身份标识集合。
进一步的,其特征在于,所述根据第一人员身份标识集合生成第一权限码包括:
将所述第一人员身份标识集合中所有的人员身份标识排序后用哈希算法生成一个唯一标识作为第一权限码。
进一步的,其特征在于,还包括下述步骤:
若收到变更消息,则根据变更消息生成增量数据集合,将所述增量数据集合替代所述第一数据集合重复执行步骤S1至S3,所述变更消息包括数据权限规则新增消息、数据权限规则修改消息、数据权限规则删除消息、数据新增消息和数据修改消息;
所述根据变更消息生成增量数据集合包括:
若变更消息为数据权限规则新增消息、数据权限规则修改消息和数据权限规则删除消息中的一项或多项,则获取变更消息中包含的一个或多个数据权限规则包含的一个或多个数据项目,将其去重后合并为增量数据项目集合,依次获取增量数据项目集合中每一个数据项目所包含的增量数据,将所述依次获取的全部增量数据去重后合并为增量数据集合;
若变更消息为数据新增消息和/或数据修改消息,则获取变更消息中包含的一条或多条数据组成增量数据集合。
进一步的,其特征在于,所述根据访问人员的一个或多个目标人员身份标识获取一个或多个目标人员身份标识集合包括:
遍历查询数据库中存储的人员身份标识集合,若所述遍历查询的人员身份标识集合中至少包含了一个目标人员身份标识则获取该目标人员身份标识集合。
进一步的,所述数据权限规则还包括有效时间,所述方法还包括下述步骤:
按周期遍历查询数据库中的所有数据权限规则,若所述查询的数据权限规则的有效时间超期,则发出针对所述查询的数据权限规则的数据权限规则删除消息;
按周期遍历查询数据库中的所有权限码,依次判断所述查询的权限码是否与数据库中至少一数据存在第二关联关系;若存在则查询下一权限码;若不存在,则将该权限码删除。
根据本发明的第二个方面,一种基于权限码的数据权限控制装置,包括权限码生成模块、权限码存储模块、权限查询模块以及事件处理模块,其中:
所述权限码生成模块用于获取第一数据集合中的第一数据,根据第一数据权限规则集合中的一个或多个数据权限规则对第一数据生成第一人员身份标识集合,并根据第一人员身份标识集合生成第一权限码,所述数据权限规则包括人员身份标识、数据项目和数据范围之间的映射关系;
所述权限码存储模块用于将第一人员身份标识集合和第一权限码建立第一关联关系并储存,并将第一权限码和所述第一数据建立第二关联关系并储存;
所述权限码查询模块用于根据访问人员的一个或多个目标人员身份标识获取一个或多个目标人员身份标识集合;根据所述一个或多个目标人员身份标识集合获取与其存在第一关联关系的一个或多个目标权限码,之后根据所述一个或多个目标权限码获取与其存在第二关联关系的目标数据;返回所述目标数据;
所述事件处理模块用于若收到变更消息,则根据变更消息生成增量数据集合。
根据本发明的第三个方面,提供了一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如本发明第一个方面所述的方法。
综上所述,本发明提供了一种基于权限码的数据权限控制方法及装置,将所有数据匹配各种数据权限规则,匹配完毕后得到针对每一数据的所有有权限访问该条数据的人员的身份标识,将这些人员身份标识组成集合,生成一个唯一的权限码,再把这个权限码存储到所对应的该数据的固定字段上;当用户(访问人员)查询数据的时候,先获取与当前用户的人员身份标识相关的所有权限码,然后再查询这些权限码关联的所有数据,并把结果返回给用户。
本发明通过仅将权限码与人员身份标识集合进行关联的设计,生成可以在多条数据之间共用的权限码,使得数据管理的效率跟数据的量级无直接强相关性,相对于传统的数据权限控制方法,数据管理性能得到了极大的提升。
本发明具有以下有益的技术效果:
(1)通过生成可以在多数据之间共用的权限码,并基于权限码设计数据权限控制方法,使得数据权限查询校验的效率只与当前组织人数的量级有强相关性,跟数据本身的量级无直接强相关性,因此相比传统的数据权限控制方法,效率得到了极大地提升,并且系统性能不会随数据量级的增长及规则复杂度的增加而下降。本发明在面对数据库的数据在几千万到数十亿的量级并且迅速增长的情况,能够实现持续的高性能数据权限控制。
(2)本发明的技术方案面对数据权限规则和数据复杂多变的使用场景,不仅可实现数据管理的高灵活度定制,也可以动态响应数据权限规则及数据的变更事件,随时根据变更事件重新生成新的权限码,无需人为干预,易扩展,易维护,具有更加精准和细粒度的数据权限控制能力,可以更加灵活地适应不同租户/企业的数据管理需求。
(3)利用本发明提供的权限码存储模型,通过将生成的权限码聚合后存储,并令权限码与数据建立关系,使得只需保留一份不重复的数据权限表,极大地节省了数据库资源,存储成本降低90%左右。
(4)本发明中的数据权限表通过实时计算生成,而非采用预计算(例如穷举所有可能的排列组合),可实现节省磁盘空间,有效减少权限组合记录数,达到更高的检索效率的效果。
附图说明
图1是本发明基于权限码的数据权限控制方法的流程图;
图2是计算引擎的结构框图;
图3是变更消息的事件处理流程图;
图4是权限查询校验的流程图;
图5是权限码回收的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明了,下面结合具体实施方式并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
下面将结合附图对本发明的技术方案进行详细说明。根据本发明的一个实施例,提供了一种基于权限码的数据权限控制方法,该方法的流程图如图1所示,包括如下步骤:
S1获取第一数据集合中的第一数据,根据第一数据权限规则集合中的一个或多个数据权限规则对第一数据生成第一人员身份标识集合,并根据第一人员身份标识集合生成第一权限码,所述数据权限规则包括人员身份标识、数据项目和数据范围之间的映射关系。
从业务含义上,数据权限规则定义了“哪些人员能够使用哪个数据项目的哪些数据”;从实现上,数据权限规则以元数据为基础,定义了如下几个部分:人员身份标识、数据项目、数据范围、有效时间。在人员身份标识上,支持“部门”、“业务组织”、“角色”、“用户组”、“职位”、“岗位”、“人员”等多种类别,比如“部门A”代表了隶属于A部门的所有人员,“角色B”代表了所有具有B角色的人员,“人员C”代表C这个人,这些信息都称为用户的人员身份标识信息,每一个身份信息都有一个唯一的标识,比如部门标识、业务组织标识、角色标识、人员标识等,还可以根据企业的情况设置更多的维度。数据项目代表了具体的业务实体,每个业务实体都可以包含属于该业务实体的数据。数据范围定义了数据项目上满足哪些条件的数据是本条数据权限规则的作用范围。
上述数据权限规则的定义可满足如下几类数据管控场景:
(a)身份权限:具有某特定身份的人员可以使用某一个或多个数据项目的某一条或多条数据;
(b)基于身份的共享权限:具有某特定身份的人员可以把自己具有的权限共享给另一些具有特定身份的人员,被共享人员具有和共享人员同样的权限;也即:数据权限沿着身份的关联关系向后传递;
(c)基于数据传递的权限:具有某特定身份的人员如果具有某一个或多个数据项目的某一条或多条数据的权限,则同时具有与这些数据有关联关系的其他数据的权限;也即:权限沿着数据的关联关系向后传递;
(d)基于条件的权限:若某一个或多个数据项目的某一条或多条数据满足一定的条件,则将数据权限共享给具有某特定身份的人员;
(e)每条数据权限规则可以单独启用和停用;也可以设置一个有效时间,超过有效时间之后则此条数据权限规则失效;有效时间可以设置为永久有效,有效时间有最小可设值。
基于以上数据权限规则的定义,每个租户/企业可以根据实际的业务场景自己配置一条或者多条数据权限规则;并且,一旦业务场景发生变化,可以随时调整,充分实现了数据权限规则的完全可定制化。
生成权限码的步骤例如可以通过计算引擎来完成,计算引擎的结构框图如图2所示,计算引擎的输入有两部分:数据权限规则和数据;计算引擎的输出是人员身份标识集合以及对应的权限码。权限码的生成过程可以分为两类:全量计算和增量计算。全量计算是指把所有的数据权限规则和数据全部完整计算一遍,全量计算一般用于第一次开始使用数据权限控制系统的场景;增量计算是指只计算发生了变化的部分,增量计算一般由变更事件触发,根据数据权限规则和数据的变化实时动态计算权限码,用于数据权限控制系统使用的过程中。
全量计算,即根据数据权限规则和数据生成权限码可以包括以下步骤:
S11读取由多个数据权限规则构成的数据权限规则集。
S12解析所述数据权限规则集中各数据权限规则关联的所有数据项目,并将其组成数据项目集。
S13依次从所述数据项目集中获取一个数据项目的所有数据,直至所述数据项目集中的所有数据项目均获取完毕,之后将获取的所有数据去重并为数据集。
S14依次判断数据集中的每一条数据是否与数据权限规则集中每一个数据权限规则的数据范围相匹配,并根据匹配结果生成人员身份标识集合。具体是,从数据集中获取一条数据,用该条数据去匹配数据权限规则集中的每一个数据权限规则的数据范围,如果能够匹配成功,则解析所匹配的该数据权限规则的人员身份标识;直到数据权限规则集中的所有数据权限规则都匹配完毕后,把得到的针对这一条数据解析出来的所有身份标识去重聚合为一个人员身份标识集合,这个集合的业务含义是:具有这个集合里任意一个身份的人员都有权限访问这一条数据。
S15将所述人员身份标识集合中的所有人员身份标识排序后生成唯一标识作为这一条数据对应的权限码。例如,可以将所述人员身份标识集合的所有人员身份标识按照升序排序后,用哈希算法生成一个唯一标识,这个唯一标识代表了这个集合,称为权限码。
S2将第一人员身份标识集合和第一权限码建立第一关联关系并储存,并将第一权限码和第一数据建立第二关联关系并储存。
数据权限的存储涉及数据权限表和数据表两个部分:将人员身份标识集合及对应的权限码存储于数据权限表中,并将权限码存储于数据表中。两者均可由计算引擎写入和更新。
将人员身份标识集合以及对应的权限码存储到数据权限表中,具体来说:数据权限表中的每一行对应一个人员身份标识集合及与之唯一对应的权限码。在此步骤中可进行权限码的存在性检验,即,验证相同的权限码是否已经在数据权限表中存在,如果一个权限码已经在数据权限表中存在,则基于权限码与人员身份标识集合的唯一对应性,可证明相同的人员身份标识集合已经存储过,那么这一组人员身份标识集合以及对应的权限码不再重复存储。
将权限码存储于数据表中,具体来说:数据表用于存储各个数据项目的数据,将权限码存储于数据表中是将针对某一条数据生成的权限码存储于数据表中相应的这一条数据的某个特定字段上,也就是建立权限码和数据之间的关联关系。
S3获取第一数据集合中的下一数据,返回S1,直至所述第一数据集合中的全部数据遍历完成。
具体来说,是重复上述各步骤,直到把数据集里面的所有数据都计算完毕;并且把数据项目集里面的所有数据项目都计算完毕;至此,所有数据权限规则都计算完毕,相关的每一条数据的数据权限也都生成并存储完毕。
本实施例中所生成的权限码有如下特点:
(1)如果两个集合包含的人员身份标识相同,则生成的权限码一定相同;
(2)如果两个集合包含的人员身份标识至少有一个不一样,则生成的权限码一定不同;
(3)生成过程不依赖于人员身份标识排列的顺序,也就是如果两个集合包含同样的人员身份标识,但是标识排列的次序不一样,那么生成的权限码是相同的;
(4)权限码可以在数据之间复用,也可以在数据项目之间复用,也就是说,如果不同的数据对应的人员身份标识集合是相同的,则使用同一个权限码;即使这些数据来自不同的数据项目,只要对应的人员身份标识集合是相同的,也使用同一个权限码。
这种权限码复用的机制使得权限码的量级仅与人员身份标识的组合量级有关,比数据量低几个量级,最终使得权限校验过程的性能得到极大提升。
S4根据访问人员的一个或多个目标人员身份标识获取一个或多个目标人员身份标识集合。
S5根据所述一个或多个目标人员身份标识集合获取与其存在第一关联关系的一个或多个目标权限码,之后根据所述一个或多个目标权限码获取与其存在第二关联关系的目标数据;
S6返回所述目标数据。
在一个实施例中,上述步骤可以为访问人员发出访问请求,例如为查询请求,收到查询请求后根据查询请求中的人员身份标识信息从数据权限表中获取对应的权限码,并根据该权限码从数据表中获取匹配的数据并返回。
该步骤涉及数据权限校验,具体流程如图3所示:由查询请求触发数据权限校验,当系统接收到查询请求时,获取查询请求携带的用户身份信息,所述用户身份信息包括一个或多个人员身份标识,如“部门”、“业务组织”、“角色”、“用户组”、“职位”、“岗位”、“人员”等,将这些人员身份标识信息组成一组人员身份标识。使用这组人员身份标识信息到数据权限表中去查询,查询数据权限表中的哪些人员身份标识集合至少包含了这组人员身份标识信息中的任意一个,如果包含则取出该人员身份标识集合对应的权限码,由这些权限码组成一组权限码;然后用这组权限码到数据表上去查询匹配的数据,此处匹配的含义是:只要数据上存储了这一组权限码中的任意一个,则这一数据就被认为是匹配;最后,所有查询出的匹配的数据就是该用户有权限看到的所有数据,把这些数据返回给访问请求发起方,数据查询过程就处理完毕了。
对于每个企业用户来说,其组织机构及人员数量有限,在数据权限校验时,根据用户的人员身份标识信息查询得到的权限码数量也是有限的,用这些权限码去数据库中查询数据的时候,辅之以数据库的B+树索引,整个查询过程非常高效,并且耗费的数据库资源非常低,最终结果是整个数据权限校验过程的性能得到极大的提升。
在一个实施例中,本发明还可以包括对变更事件的处理:
变更事件,比如收到变更消息,若收到变更消息则根据该变更消息重新生成相关数据的权限码,并对应修改所述数据权限表和/或数据表。其中,所述变更消息包括数据权限规则变更消息和数据变更消息;所述变更包括新增、修改和删除。
上述变更事件所涉及的步骤对应增量计算,具体可以如下:
根据变更消息触发增量计算,变更消息也可以称为事件源,变更消息包括数据权限规则变更消息和数据变更消息,变更消息表示其涉及的数据权限规则或者数据发生了变更,需要重新计算对应的数据权限;变更消息还可以包含操作类型,如新增、修改或者删除。变更消息的事件处理流程图如图4所示。
如果变更消息为数据权限规则变更消息,则分两种情况:如果操作类型是新增或修改,那么根据变更消息取出涉及的所有的数据权限规则,组成一个规则集,然后按照上文中全量计算的步骤,循环计算该数据权限规则集里所有的数据权限规则直至计算完毕;如果操作类型是删除,那么先获取已删除的数据权限规则定义(可以从规则的历史版本中取到已删除的规则的定义),取出这些数据权限规则关联的数据项目组成数据项目集,然后按照全量计算的步骤,以现有最新的数据权限规则(不包含已删除的规则)为准,循环计算该数据项目集里所有的数据项目的包含的所有数据,直至计算完毕。
如果变更消息为数据变更消息,则分两种情况:如果操作类型是新增或修改,那么根据变更消息取出所有新增或修改的数据,组成一个数据集,然后按照全量计算的步骤,循环计算这个数据集里所有的数据直至计算完毕;如果操作类型是删除,则不需要针对已经删除的数据进行权限码的增量计算。
此外,本发明还可以包括针对数据权限规则的实效性处理和权限码的回收处理。
针对数据权限规则的实效性处理可以按照以下方式:数据权限规则的要素中还可以包含有效时间,计算引擎按预设的周期循环检查所有的数据权限规则;若存在数据权限规则的有效时间超期,则发出变更消息触发增量计算过程,所述变更消息包含超期的数据权限规则标识,操作类型是删除。此处时间周期不大于数据权限规则定义的有效时间的最小可设值,以保证每条数据权限规则的有效性可实际发挥作用。
针对权限码的回收处理,由于数据的变动以及数据权限规则的变动、数据权限规则超期等,某些权限码不再被任何一条数据所引用,这些权限码存储在数据权限表中会占用一定的系统资源;权限码回收处理的步骤会定时清理这些无实际作用的权限码,释放系统资源,图5示出了权限码回收的流程图,针对权限码的回收处理包括下述步骤:
扫描数据权限表,逐条获取每一个权限码;
获取到一个权限码之后,执行到数据表上去查询的步骤,即查询是否还有至少一条数据使用了这个权限码;如果有数据使用,则扫描下一个权限码;如果权限码没有被任何一条数据使用并且该状态持续了一定的时间(比如,可以设定为半年),则把这个权限码对应的权限记录从数据权限表上删除。
当所有的权限码都扫描处理完毕后,本次回收操作完成,等待下一个定时周期的开始。
为了不影响正常业务的使用,权限码回收处理可以设定执行时间段,比如在夜间2点到6点之间执行(这个时间段可灵活配置);如果到了设定的截止时间,即使还未全部扫描处理完所有的权限码,执行处理也会停止,剩下的权限码回收处理等待下一个定时周期继续进行。
下述以一个示例说明该方法的实现过程:
d1,d2,d3,... 代表部门标识;
o1,o2,o3,... 代表业务组织标识;
r1,r2,r3,... 代表角色标识;
g1,g2,g3,... 代表用户组标识;
p1,p2,p3,... 代表职位标识;
w1,w2,w3,... 代表岗位标识;
u1,u2,u3,... 代表人员标识;
R1,R2,R3,... 代表数据权限规则;
S1,S2,S3,... 代表人员身份标识集合;
D1,D2,D3,... 代表数据;
CODE1,CODE2,CODE3,…代表权限码
R_DS1,R_DS2,R_DS3,…代表数据集合与人员身份标识集合的关系;
R_SC1,R_SC2,R_SC3,…代表人员身份标识集合与权限码的关系;
data_table表示数据表,auth_table表示数据权限表
权限码的生成过程如下:
(1)数据权限规则为R1,R2,R3,…,首先计算数据权限规则R1得到匹配的数据集合D1和身份集合S1,记为R_DS1=>(D1,S1);其含义是:R_DS1定义了S1中的人员有权限访问D1中的数据;S1示例:S1={d1,r1,o1,o2,g1,p1,…}
(2)使用哈希算法根据S1生成权限码:CODE1= HASH(S1)
(3)根据R_DS1=>(D1,S1)和CODE1= HASH(S1),推理得出CODE1和D1拥有关联关系,记为:R_SC1=>(D1,CODE1),其含义是:拥有CODE1的人员集合有权限访问D1中的数据。
(4)循环计算R_SC2,R_SC3,,…,直至全部计算完毕,此时得到的结果为:
R_SC1=>(D1,CODE1)
R_SC2=>(D2,CODE2)
R_SC3=>(D3,CODE3)
…
(5)存储上述结果到数据库中:
data_table = {(D1,CODE1),(D2,CODE2),(D3,CODE3),…}
auth_table= {(S1,CODE1),(S2,CODE2),(S3,CODE3),…}
查询过程如下:
(1)获取当前用户所有的身份信息,将所有身份信息的标识组成集合Q,比如:Q={d1,r2,o3,g1,p1,w1,u1,…}
(2)用Q匹配auth_table得到一个或多个CODE,记为CODE_SET;匹配条件为假设auth_table中第n个组合的内容是(Sn, CODEn),如果Sn和Q的交集不为空,则该组合是匹配的,取出CODEn;
(3)CODE_SET={CODEi,CODEj, CODEk,…},其中i,j,k表示任意自然数
(4)用CODE_SET匹配data_table,得到结果,记为DATA_SET;匹配条件为假设data_table中第n个组合的内容是(Dn, CODEn),如果CODE_SET包含了CODEn,则该组合是匹配的,取出Dn;
(5)DATA_SET={Di,Dj,Dk,…},其中i,j,k表示任意自然数,DATA_SET为当前用户有权限看到的所有数据。
根据本发明的第二个实施例,提供了一种基于权限码的数据权限控制装置,包括权限码生成模块、权限码存储模块、事件处理模块、以及权限查询模块。
权限码生成模块针对数据库中的数据,根据数据权限规则生成权限码,所述数据权限规则包括人员身份标识、数据项目、数据范围和有效时间之间的映射关系。
权限码存储模块用于将人员身份标识集合及对应的权限码存储于数据权限表中,并将权限码存储于数据表中。
事件处理模块用于收到变更消息时,根据该变更消息重新生成相关数据的权限码,并对应修改所述数据权限表和数据表。事件处理模块用于当数据权限规则和数据发生变更(例如增加、更改、删除)的场景,同步触发例如计算引擎执行数据权限的计算,以重新生成相关数据的权限码,使得用户能够及时根据变更后的数据权限规则进行数据查询。具体过程是:事件处理模块会监听数据权限规则和/或数据的变更消息。当数据权限规则变更消息到来的时候,会明确哪条或者哪些数据规则发生了变化,然后把变化的数据权限规则标识以及操作类型(增加、更改、删除)包含在消息里发送给计算引擎,由计算引擎去重新计算这些数据权限规则,并把结果更新到数据权限表和数据表上;当数据变更消息到来的时候,会明确哪条或者哪些条数据发生了变化,然后把变化的数据标识以及操作类型(例如增加、更改、删除)包含在消息里通过消息发送给例如计算引擎,由计算引擎去重新计算增加或更改的数据对应的数据权限,并把结果更新到数据权限表和数据表上。事件处理模块可以采用消息队列的技术,有削峰填谷的能力,即如果短时间大量的变更消息到来,事件处理模块会把变更消息排队后分批次发给计算引擎,防止消息过多超过计算引擎的处理能力导致系统崩溃。
权限查询模块用于若收到查询请求,则根据查询请求中的人员身份信息从数据权限表中获取对应的权限码,并根据该权限码从数据表中获取匹配的数据;返回所述匹配的数据。
该装置中各模块实现其功能的具体过程与本发明提供的第一个实施例中故障定位方法的各步骤相同,在此不再赘述。
根据本发明的第三个实施例,提供了一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如本发明第一个实施例中所述的方法。
综上所述,本发明涉及一种基于权限码的数据权限控制方法及装置,将所有数据匹配各种数据权限规则,匹配完毕后得到有权限访问此条数据的所有人员的身份标识,对这些身份标识生成一个唯一的权限码,把这个权限码存储到此条数据的固定字段上;当用户查询数据的时候,先获取与当前用户身份标识相关的所有权限码,然后再查询这些权限码关联的所有数据,并把结果返回给用户。本发明通过生成可以在多条数据之间共用的权限码,使得数据管理的效率跟数据的量级无直接强相关性,相对于传统的数据权限控制方法,数据管理性能得到了极大的提升。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
最后应当说明的是:以上实施例仅用于说明本发明的技术方案而非对其保护范围的限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:本领域技术人员阅读本发明后依然可对发明的具体实施方式进行种种变更、修改或者等同替换,但这些变更、修改或者等同替换,均在发明待批的权利要求保护范围之内。
Claims (10)
1.一种基于权限码的数据权限控制方法,其特征在于,包括下述步骤:
S1获取第一数据集合中的第一数据,根据第一数据权限规则集合中的一个或多个数据权限规则对第一数据生成第一人员身份标识集合,并根据第一人员身份标识集合生成第一权限码,所述数据权限规则包括人员身份标识、数据项目和数据范围之间的映射关系;
S2将第一人员身份标识集合和第一权限码建立第一关联关系并储存,并将第一权限码和第一数据建立第二关联关系并储存;
S3获取第一数据集合中的下一数据,返回S1,直至所述第一数据集合中的全部数据遍历完成。
2.根据权利要求1所述的方法,其特征在于,还包括下述步骤:
S4根据访问人员的一个或多个目标人员身份标识获取一个或多个目标人员身份标识集合;
S5根据所述一个或多个目标人员身份标识集合获取与其存在第一关联关系的一个或多个目标权限码,之后根据所述一个或多个目标权限码获取与其存在第二关联关系的目标数据;
S6返回所述目标数据。
3.根据权利要求1或2所述的方法,其特征在于,所述第一数据集合是根据所述第一数据权限规则集合获取的,具体包括:
获取第一数据权限规则集合中的一个或多个数据权限规则所包含的一个或多个数据项目,将其去重后合并为数据项目集合,依次获取所述数据项目集合中每一个数据项目所包含的数据,将其去重后合并为第一数据集合。
4.根据权利要求1或2所述的方法,其特征在于,所述根据第一数据权限规则集合中的一个或多个数据权限规则对第一数据生成第一人员身份标识集合包括:
依次判断所述第一数据是否与所述第一数据权限规则集合中的每一个数据权限规则的数据范围相匹配,若匹配则提取所述判断的该数据权限规则的第一人员身份标识,直至所述第一数据权限规则集合中的所有数据权限规则遍历完成,之后将所述提取的所有的第一人员身份标识去重后合并为第一人员身份标识集合。
5.根据权利要求1或2所述的方法,其特征在于,所述根据第一人员身份标识集合生成第一权限码包括:
将所述第一人员身份标识集合中所有的人员身份标识排序后用哈希算法生成一个唯一标识作为第一权限码。
6.根据权利要求1或2所述的方法,其特征在于,还包括下述步骤:
若收到变更消息,则根据变更消息生成增量数据集合,将所述增量数据集合替代所述第一数据集合重复执行步骤S1至S3,所述变更消息包括数据权限规则新增消息、数据权限规则修改消息、数据权限规则删除消息、数据新增消息和数据修改消息;
所述根据变更消息生成增量数据集合包括:
若变更消息为数据权限规则新增消息、数据权限规则修改消息和数据权限规则删除消息中的一项或多项,则获取变更消息中包含的一个或多个数据权限规则包含的一个或多个数据项目,将其去重后合并为增量数据项目集合,依次获取增量数据项目集合中每一个数据项目所包含的增量数据,将所述依次获取的全部增量数据去重后合并为增量数据集合;
若变更消息为数据新增消息和/或数据修改消息,则获取变更消息中包含的一条或多条数据组成增量数据集合。
7.根据权利要求2所述的方法,其特征在于,所述根据访问人员的一个或多个目标人员身份标识获取一个或多个目标人员身份标识集合包括:
遍历查询数据库中存储的人员身份标识集合,若所述遍历查询的人员身份标识集合中至少包含了一个目标人员身份标识则获取该目标人员身份标识集合。
8.根据权利要求1或2所述的方法,其特征在于,所述数据权限规则还包括有效时间,所述方法还包括下述步骤:
按周期遍历查询数据库中的所有数据权限规则,若所述查询的数据权限规则的有效时间超期,则发出针对所述查询的数据权限规则的数据权限规则删除消息;
按周期遍历查询数据库中的所有权限码,依次判断所述查询的权限码是否与数据库中至少一数据存在第二关联关系;若存在则查询下一权限码;若不存在,则将该权限码删除。
9.一种基于权限码的数据权限控制装置,其特征在于,包括权限码生成模块、权限码存储模块、权限查询模块以及事件处理模块,其中:
所述权限码生成模块用于获取第一数据集合中的第一数据,根据第一数据权限规则集合中的一个或多个数据权限规则对第一数据生成第一人员身份标识集合,并根据第一人员身份标识集合生成第一权限码,所述数据权限规则包括人员身份标识、数据项目和数据范围之间的映射关系;
所述权限码存储模块用于将第一人员身份标识集合和第一权限码建立第一关联关系并储存,并将第一权限码和所述第一数据建立第二关联关系并储存;
所述权限码查询模块用于根据访问人员的一个或多个目标人员身份标识获取一个或多个目标人员身份标识集合;根据所述一个或多个目标人员身份标识集合获取与其存在第一关联关系的一个或多个目标权限码,之后根据所述一个或多个目标权限码获取与其存在第二关联关系的目标数据;返回所述目标数据;
所述事件处理模块用于若收到变更消息,则根据变更消息生成增量数据集合。
10.一种存储介质,所述存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-8中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210277409.2A CN114372249A (zh) | 2022-03-21 | 2022-03-21 | 一种基于权限码的数据权限控制方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210277409.2A CN114372249A (zh) | 2022-03-21 | 2022-03-21 | 一种基于权限码的数据权限控制方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114372249A true CN114372249A (zh) | 2022-04-19 |
Family
ID=81145078
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210277409.2A Pending CN114372249A (zh) | 2022-03-21 | 2022-03-21 | 一种基于权限码的数据权限控制方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114372249A (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107545047A (zh) * | 2017-08-17 | 2018-01-05 | 平安科技(深圳)有限公司 | 用户权限数据的查询方法及终端设备 |
WO2019179379A1 (zh) * | 2018-03-23 | 2019-09-26 | 阿里巴巴集团控股有限公司 | 用户权益信息处理方法、装置及系统 |
CN110727929A (zh) * | 2019-10-12 | 2020-01-24 | 北京明略软件系统有限公司 | 基于aop的行级权限控制方法、装置及客户端 |
CN111917552A (zh) * | 2020-06-23 | 2020-11-10 | 深圳奥联信息安全技术有限公司 | 一种基于标识密钥的句柄权限控制方法、装置和系统 |
CN112632581A (zh) * | 2020-12-28 | 2021-04-09 | 深圳壹账通智能科技有限公司 | 用户数据处理方法、装置、计算机设备及存储介质 |
CN113779525A (zh) * | 2021-09-14 | 2021-12-10 | 码客工场工业科技(北京)有限公司 | 一种基于角色的Handle系统差异化解析方法 |
CN114065248A (zh) * | 2021-11-17 | 2022-02-18 | 广州品唯软件有限公司 | 用户访问权限的控制方法、装置、电子设备及存储介质 |
-
2022
- 2022-03-21 CN CN202210277409.2A patent/CN114372249A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107545047A (zh) * | 2017-08-17 | 2018-01-05 | 平安科技(深圳)有限公司 | 用户权限数据的查询方法及终端设备 |
WO2019179379A1 (zh) * | 2018-03-23 | 2019-09-26 | 阿里巴巴集团控股有限公司 | 用户权益信息处理方法、装置及系统 |
CN110727929A (zh) * | 2019-10-12 | 2020-01-24 | 北京明略软件系统有限公司 | 基于aop的行级权限控制方法、装置及客户端 |
CN111917552A (zh) * | 2020-06-23 | 2020-11-10 | 深圳奥联信息安全技术有限公司 | 一种基于标识密钥的句柄权限控制方法、装置和系统 |
CN112632581A (zh) * | 2020-12-28 | 2021-04-09 | 深圳壹账通智能科技有限公司 | 用户数据处理方法、装置、计算机设备及存储介质 |
CN113779525A (zh) * | 2021-09-14 | 2021-12-10 | 码客工场工业科技(北京)有限公司 | 一种基于角色的Handle系统差异化解析方法 |
CN114065248A (zh) * | 2021-11-17 | 2022-02-18 | 广州品唯软件有限公司 | 用户访问权限的控制方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102062896B1 (ko) | 네트워크 내의 분산 데이터베이스를 위한 방법 및 장치 | |
Wood | Ethereum: A secure decentralised generalised transaction ledger | |
Palm et al. | Selective blockchain transaction pruning and state derivability | |
JP5377318B2 (ja) | 個別にアクセス可能なデータユニットの格納管理 | |
CN110958117A (zh) | 支持零知识证明的区块链的互操作性 | |
EP3709568A1 (en) | Deleting user data from a blockchain | |
CN106897368B (zh) | Merkle哈希求和树及其可验证数据库更新操作方法 | |
CN109815226B (zh) | 基于区块链的数据存储方法、装置、设备和存储介质 | |
CN102360389B (zh) | 相对于数据实施数据集特定管理策略的方法 | |
CN110225012B (zh) | 一个基于联盟链的外包数据的拥有权检查和更新方法 | |
CN111831744B (zh) | Dapp的链上数据检索系统、方法及介质 | |
CN114372249A (zh) | 一种基于权限码的数据权限控制方法及装置 | |
CN112800441A (zh) | 一种基于区块链的能源平台的权限管理方法 | |
CN112434062A (zh) | 准实时数据处理方法、装置、服务器及存储介质 | |
KR102561492B1 (ko) | 개인적 데이터를 담은 매체의 안전한 저장과 저장된 개인적 데이터의 삭제를 위한 기기 및 방법 | |
JP2018110442A5 (zh) | ||
CN114331398A (zh) | 费用结算数据处理方法、装置、设备及存储介质 | |
CN110363515B (zh) | 权益卡账户信息查询方法、系统、服务器及可读存储介质 | |
CN115730933A (zh) | 基于区块链的数据处理方法、装置、设备及存储介质 | |
CN113094383A (zh) | 一种可检测作弊服务器的私有信息检索协议的构造方法 | |
CN111488345A (zh) | 业务数据区块链的存储优化方法及装置 | |
CN114691687B (zh) | 验证区块状态证明的方法 | |
CN113392077B (zh) | 文件检测方法、装置、设备及存储介质 | |
US11860863B1 (en) | Data redaction in a journal-based database | |
CN112015758B (zh) | 产品取码方法、装置、计算机设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20220419 |
|
RJ01 | Rejection of invention patent application after publication |