CN118656874A - 一种数据库行列访问控制的实现方法和系统 - Google Patents

一种数据库行列访问控制的实现方法和系统 Download PDF

Info

Publication number
CN118656874A
CN118656874A CN202411148185.0A CN202411148185A CN118656874A CN 118656874 A CN118656874 A CN 118656874A CN 202411148185 A CN202411148185 A CN 202411148185A CN 118656874 A CN118656874 A CN 118656874A
Authority
CN
China
Prior art keywords
user
database
authority
column
row
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
Application number
CN202411148185.0A
Other languages
English (en)
Inventor
伍立群
马浩杰
马振文
吕晓刚
陈雨森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang Lab
Original Assignee
Zhejiang Lab
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhejiang Lab filed Critical Zhejiang Lab
Priority to CN202411148185.0A priority Critical patent/CN118656874A/zh
Publication of CN118656874A publication Critical patent/CN118656874A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明公开了一种数据库行列访问控制的实现方法和系统。本方法通过为所有用户动态配置行列权限,并通过本系统代理所有用户的数据请求,实时判断用户是否有访问权限;同时,通过把经常访问的用户权限存放在Redis数据库中,节省了权限判断的时间。本发明实现的行列访问权限的控制方法和系统,通过数据库代理来访问,无需修改原有项目,其接入方法简便,权限控制灵活,适用于各种需要权限控制的项目;并且本发明引发的执行开销小,性能指标优于传统的在数据库层面对用户进行权限控制的方法。

Description

一种数据库行列访问控制的实现方法和系统
技术领域
本发明涉及数据库安全和访问控制技术领域,特别涉及一种数据库行列访问控制的实现方法和系统。
背景技术
数据库行列权限精细化控制是数据库安全管理中的重要技术,合理的权限管理能确保数据只被有权限的用户访问,从而确保和提升整个系统的安全性和保护隐私。数据库权限管理常见的方法和策略主要有以下几种方式:
1.1.用户认证和授权:
用户认证和授权是确保数据库系统安全的基础。管理员通过创建用户账号来建立数据库访问的身份识别机制,每个账号都分配了唯一的用户名和密码。通过为每个用户账号分配适当的权限,管理员可以精确控制用户对数据库对象的访问和操作权限。建议管理员采取密码策略,包括设定密码复杂度要求、定期更新密码以及记录密码历史,以增强账号的安全性。定期审计和管理数据库账号也是重要的措施,及时删除不再需要或属于离职员工的账号,以有效防止未经授权的访问。
1.2.角色权限管理:
角色权限管理通过角色的概念来简化和集中权限管理。管理员可以创建不同的角色,并为每个角色分配特定的权限,例如管理角色和普通用户角色。通过将权限分配给角色,用户可以通过分配到角色而间接获得相应的权限,避免了对每个用户逐一进行权限设置的繁琐过程。角色管理包括定期审计和管理角色的权限,确保角色的权限与实际需求和安全策略保持一致。有些系统还支持角色的继承机制,即一个角色可以继承另一个角色的权限,从而进一步简化权限管理和维护工作。
1.3.细粒度权限控制:
细粒度权限控制包括行级权限控制和列级权限控制,用于精确控制用户对数据的访问权限。行级权限控制(Row-Level Security, RLS)通过在数据库表中为每一行定义访问控制策略,实现对单行数据的权限控制。通常涉及到策略函数和策略定义。
列级权限控制(Column-Level Security, CLS)通过视图、动态查询生成或专用权限表来限制用户对特定列的访问。视图方式可以创建只包含用户允许访问的列的视图,动态查询方式根据用户权限生成只包含允许访问列的查询语句。
Oracle提供行级安全性和细粒度访问控制,是数据库行列权限控制的典型实现,确保数据精细化管理和安全性。SQL Server提供行级安全性和动态数据屏蔽功能,而PostgreSQL支持行级和列级安全性,允许基于角色和策略进行细粒度的权限控制。这些功能帮助数据库管理系统实现更高的安全性和灵活性。
传统基于数据库的细粒度权限控制的问题:
2.1.实现复杂性:现有的行列权限控制机制在实现过程中具有较高的技术复杂性,尤其在大规模和复杂系统中。这要求开发人员编写和维护大量的权限策略和规则,不仅耗时费力,还容易导致系统不稳定。
2.2.性能开销:细粒度权限检查和动态查询生成会显著增加系统的性能开销。在高并发环境下,频繁的权限校验可能延长系统响应时间,影响用户体验。特别是在复杂权限策略的情况下,对系统资源的消耗更为显著。
2.3.维护难度:随着权限规则和策略的不断增加,维护和管理权限变得更加困难。系统管理员需要持续更新和优化权限设置,以确保系统的安全性和有效性。这要求精细的管理和监控机制,但实际操作中往往难以实现。
2.4.动态调整:用户权限频繁变化时,需要动态调整权限策略,增加了系统的复杂性。在权限变动频繁的环境中,权限更新和同步的管理变得尤为重要。如果处理不当,可能导致权限滞后或权限泄漏,影响系统安全。
发明内容
针对现有技术的不足,本发明的目的在于提供一种数据库行列访问控制的实现方法和系统,解决现有技术中集成难度大,不易动态调整的问题。该系统通过中间代理的形式鉴定用户访问数据库的权限,并生成新的SQL查询语句。
本发明的目的是通过以下技术方案来实现的:一种数据库行列访问控制的实现方法,包括如下步骤:
步骤S1、建立权限控制数据库相关的数据库表,所述数据库表包括用户信息表(表名user_attr)、行权限管理表(表名permission_manage_row),列权限管理表(表名permission_manage_column),全局行权限管理表(表名global_permission_row)、全局列权限管理表(表名global_permission_column),全局权限管理表(表名global_permission_manage),权限组表(表名permission_group),权限组成员表(表名permission_group_members),数据库行条件表(表名permission_condition_row),数据库列信息表(表名columns_manage),数据库元信息表(表名middle_tables);
步骤S2、同步用户数据库的用户信息到用户信息表中;
步骤S3、创建用户组,配置用户和组的列访问权限和行访问权限;
步骤S4、对于某个SQL请求,解析初始SQL语句中使用的所有表和列字段;
步骤S5、检查数据库元信息表中的权限允许字段,判断权限校验开关是否打开,如果权限校验开关未打开,跳过权限检查,直接将所述初始SQL语句作为新的SQL语句,进入步骤S9;如果权限校验开关打开,则继续下面步骤;
步骤S6、检查列访问权限,如果无权限,则返回给用户无查询权限,结束本次SQL请求;否则,继续下面步骤;
步骤S7、检查行权限条件,如果无权限,则返回给用户无查询权限,结束本次SQL请求;否则,继续下面步骤;
步骤S8、将所述步骤S7查询到的行权限条件拼接在初始SQL语句中,作为新的SQL语句;
步骤S9、使用所述新的SQL语句查询数据库,返回给用户查询结果。
进一步地,所述步骤S2具体为:
同步用户数据库中需要控制权限的用户信息到用户信息表中,所述用户信息至少包括表示用户的主键ID,当用户数据库中用户信息数据变更的同时,同步权限控制数据库的用户信息表,确保所有用户的权限都能得到控制;
同步用户数据库所有的表信息和表字段元信息到权限控制数据库元信息表和数据库列信息表中,启动定时器,定时同步数据,确保所有的表信息都能被设置相关访问权限。
进一步地,所述步骤S3包括:
根据用户需求,创建权限组表,将用户分组,把相同类型的用户写入权限组成员表中,方便给相同类型的用户创建一样的权限;
配置全局列权限管理表,表字段为权限关联ID,如果用户ID或权限组组ID存在于全局列权限管理表中,表示这个用户或权限组有所有列的访问权限;
配置列权限管理表,记录权限关联ID和列ID;对于用户的用户ID或者权限组的ID存在列ID,表示用户或组有这个数据库列的访问权限,如果没有对应的列ID,表示这个用户或组没有这个数据库列的访问权限。
进一步地,所述步骤S6具体为:
检查全局列权限管理表,查看用户ID和用户所在权限组ID列表是否在所述全局列权限管理表中,如果在全局列权限管理表中,说明用户具有全局列权限,继续步骤S7;如果不在全局列权限管理表中,继续列权限查询;
查询列权限管理表,查询所述用户ID和用户所在权限组ID列表能访问的所有数据库列,用集合S表示;判断本次SQL语句中步骤S4解析出来的列字段是否都在集合S中;如果有不存在的列字段,则表示无列权限,返回给用户无列权限,结束本次SQL请求;如果都存在,则继续步骤S7。
进一步地,所述步骤S7具体为:
检查全局行权限管理表,查看用户ID和用户所在权限组ID列表,如果全局行权限管理表包含用户或权限组ID列表至少一项,表示用户具有全局行条件,返回行条件“1=1”,结束步骤S7;否则继续下面的检查;
检查行权限管理表,判断本次SQL语句中步骤S4解析出来的所有表名称,查找所述用户ID和用户所在权限组的ID列表的所有的行条件,如果未查到,则表示无行权限条件,返回给用户无行权限,结束本次SQL请求;如果查到了,把所述所有的行条件拼接到一起返回给步骤S8。
一种数据库行列访问控制的实现系统,包括以下模块:
后台管理模块,用于同步用户数据库中的信息到权限控制数据库中,创建用户分组,配置用户和组的数据库行列访问权限,配置用户和组的全局数据库行列访问权限,打开或关闭权限控制开关;
权限判断模块,用于解析SQL语句中使用的所有表和列,判断用户是否具有列访问权限,添加用户的行条件到原SQL语句中,并将新SQL语句查询结果返回用户。
进一步地,所述后台管理模块还提供REST风格接口,包括:管理员登录和创建账号接口;创建和管理分组接口,添加和编辑用户和组的列权限接口,创建和编辑行条件接口,用户和组添加或删除行条件接口。
进一步地,所述后台管理模块的权限配置具体为:
权限开关:操作数据库元信息表,修改权限允许字段,启动和关闭某个表的权限开关;操作数据库全局权限管理表,打开或关闭行列的全局开关;
列权限配置:操作全局列权限管理表,配置用户和组的全局列访问权限,表示用户具有所有列的访问权限;操作列权限管理表,配置用户和组的列访问权限;
行权限配置:操作全局行权限管理表,配置用户和组的是否具有全局行条件;操作行权限管理表,配置用户和组的行权限。
本发明还提供了一种电子设备,包括存储器和处理器,所述存储器与所述处理器耦接;其中,所述存储器用于存储程序数据,所述处理器用于执行所述程序数据以实现所述的一种数据库行列访问控制的实现方法。
本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现所述的一种数据库行列访问控制的实现方法。
本发明的有益效果在于:
1、本发明在不改变原有项目的情况下,可以为项目的用户设置细粒度的访问控制权限,确保数据的隐私和安全。
2、本发明无需修改原来的数据库,代码量小,集成简单,配置灵活。
3、本发明引发的执行开销小,性能指标优于传统的在数据库层面对用户进行权限控制的方法。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一种数据库行列访问控制的实现方法和系统的整体流程图;
图2为本发明一种数据库行列访问控制的实现方法和系统的架构示意图;
图3为本发明一种数据库行列访问控制的实现方法和系统的后台管理模块示意图;
图4为本发明一种数据库行列访问控制的实现方法和系统的权限校验整体流程图;
图5为本发明一种数据库行列访问控制的实现方法和系统的列权限检查流程图;
图6为本发明一种数据库行列访问控制的实现方法和系统的行条件检查流程图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
下面结合附图,对本发明进行详细说明。在不冲突的情况下,下述的实施例及实施方式中的特征可以相互组合。
本发明实施例提供了一种数据库行列访问控制的实现方法,如图1所示,包括如下步骤:
1、建立权限控制数据库相关的数据库表,所述数据库表包括用户信息表(表名user_attr)、行权限管理表(表名permission_manage_row),列权限管理表(表名permission_manage_column),全局行权限管理表(表名global_permission_row)、全局列权限管理表(表名global_permission_column),全局权限管理表(表名global_permission_manage),权限组表(表名permission_group),权限组成员表(表名permission_group_members),数据库行条件表(表名permission_condition_row),数据库列信息表(表名columns_manage),数据库元信息表(表名middle_tables)。
2、同步用户数据库的用户信息到用户信息表中。
2.1、同步用户数据库中需要控制权限的用户信息到用户信息表中。用户信息至少应包括表示用户的主键user_id。当用户数据库中的数据发生变更时,需要同时同步到本方法中的用户信息表,以确保所有用户的权限都能得到有效控制。
2.2、同步用户数据库中的所有表的元信息到数据库元信息表中,同步用户数据库中的所有表的列字段信息到数据库列信息表中;启动定时器,定期同步数据,确保用户数据库中表的所有信息都能被设置相关的访问权限。
3、创建用户组,配置用户和组的列访问权限和行访问权限。
3.1、根据用户需求,创建权限组表,给用户分组,把相同类型的用户写入到权限组成员表中,方便给相同类型的用户创建一样的权限。
3.2、配置全局列权限管理表,主要表字段为权限关联ID,如果用户ID或权限组组ID存在于全局列权限管理表中,表示这个用户或权限组有所有列的访问权限。
3.3、配置列权限管理表,主要是权限关联ID和列ID的记录;对于用户的用户ID或者权限组的ID存在列ID,表示用户或组有这个数据库列的访问权限,如果没有对应的列ID,表示这个用户或组没有这个数据库列的访问权限。
4、对于某个SQL请求,解析SQL语句中使用的所有表和列字段,如图4所示。
5、检查数据库元信息表中的权限允许字段,判断权限校验开关是否打开,如果未打开直接执行SQL语句获取数据,如果权限打开,则继续下面步骤。
6、检查列访问权限,如果无权限,则返回给用户无查询权限,结束本次SQL请求;否则,继续后续步骤7。
其中,如图5所示,所述列权限检查方法详细步骤如下:
6.1、根据用户ID,获取用户所在的所有组。
6.2、检查全局列权限管理表,判断全局列权限是否打开。如果全局列权限打开,执行如下S3步骤,如果未打开,执行S4步骤。
6.3、查看用户ID和用户所在组的组ID列表,如果全局列权限管理表包含用户ID或组ID列表其中一项,表示用户具有全局列权限,结束列权限检查。
6.4、检查列权限管理表,获取用户和所在组列表的所有列字段列表集合。判断SQL语句中的所有列字段是否在该集合中。如果存在某列不在集合中,这表示用户对这个列无权限,本次SQL查询结束,返回给用户无访问权限;如果所有列都在该集合中,这表示本次SQL查询有列访问权限。
7、检查行访问权限,如果无权限,则返回给用户无查询权限,结束本次SQL请求;否则,继续后续步骤8。
其中,如图6所示,所述行条件检查方法详细步骤如下:
7.1、根据用户ID,获取用户所在的所有组。
7.2、检查全局行权限管理表,判断全局行权限是否打开。如果全局行权限打开,执行步骤7.3;如果未打开,执行步骤7.4。
7.3、查看用户ID和用户所在组的组ID列表,如果全局行权限管理表包含用户ID或组ID列表其中一项,表示用户具有全局行条件,返回行条件“1=1”,结束本步骤;否则执行步骤7.4。
7.4、检查行权限管理表,判断本次SQL语句中解析出来的所有表名称,查找用户ID和用户所在组的组ID列表的所有的行条件,如果未查到,则返回空,表示用户没有行条件,如果查到了,把这些行条件拼接到一起返回给后续步骤8。
8、将步骤7查询到的行条件拼接在原来的SQL语句中,作为新的SQL语句。
9、使用新的SQL语句查询数据库,返回给用户查询结果。
如图1、图2所示,本发明实施例提供的一种数据库行列访问控制的实现系统,包括:
后台管理模块:主要用于同步用户数据库中的信息到权限控制数据库中,创建用户分组,配置用户和组的数据库行列访问权限,配置用户和组的全局数据库行列访问权限,打开和关闭权限控制开关。提供REST风格接口,主要包括管理员登录和创建账号接口;创建和管理分组接口,添加和编辑用户和组的列权限接口,创建和编辑行条件接口,用户和组添加或删除行条件接口。
权限判断模块:主要用于解析SQL语句中使用的所有表和列,判断用户是否具有行访问权限和列访问权限,添加用户的行条件到原SQL语句中,并将新SQL语句查询结果返回用户。
其中,本发明实施例提供的一种数据库行列访问控制的实现系统,还包括:
数据中台:用户的业务系统,主要负责处理前端页面的查询等请求和业务逻辑的处理。
权限控制系统:本发明的行列访问控制网关系统,数据中台处理完了前端业务请求后,对数据库操作之前,需要经过本发明的权限控制系统,判断用户是否具有相关的权限,附加一下行权限条件。由于本发明是一个独立的系统,对用户原先的系统没有侵入性,集成简单。
数据库:用户的数据库系统,存储了用户的所有数据。本发明主要在MySQL数据库中验证测试过。
如图2所示,一种数据库行列访问控制的实现系统的架构示意图,描述了用户系统和本发明系统的关系。
该架构图展示了系统的分层结构,首先是接口层,负责对外提供服务和接收请求。接口层包括两个部分:用户系统的网络接口和本发明的后台管理接口。后台接口用于管理用户系统的访问权限配置。
业务层是架构的核心,主要包括用户系统和后台管理模块。本发明系统的后台管理模块实现了行权限控制、列权限控制和全局权限控制,确保不同用户只能访问和操作被授权的数据和功能。这一层负责配置用户权限的所有业务逻辑,保障系统的安全性和数据的完整性。
最底层是存储层,它包含数据库,用于持久化存储系统中的所有数据。存储层为业务层提供了数据支持,通过精细化的权限控制,确保数据的安全存储和合规访问。
如图3所示,一种数据库行列访问控制的实现系统的后台管理模块,其中的各个模块操作和作用解释如下:
管理员登录:配置用户权限的人员需要判断用户的管理员权限,可操作的人员信息存在在数据库管理员表中。
用户管理模块:显示用户系统中的所有人员基本信息,可以编辑分组,把同一类人员归类到相同分组里面去。
权限组管理:显示和创建所有的权限组,可以添加或删除组里面的用户,启用或停用权限组。
数据表管理:显示用户系统用到的所有数据库表,可以对这些表进行编辑配置列权限和行权限。列权限配置方式为:在列权限配置页面,显示某个表的所有列字段名称,对于每个字段,配置允许访问的用户和权限组。行权限的配置方式为:在行权限配置页面,创建和显示某个表的行权限条件,然后配置关联用户和权限组。
全局配置:全局列配置页面,配置用户和权限组具有全部数据库的访问权限。全局行配置行页面,配置用户和权限组具有全局的行访问权限。
所述后台管理模块中用户操作的关于权限配置的主要内容为:
权限开关:操作数据库元信息表,修改权限允许字段,启动和关闭某个表的权限开关。操作数据库全局权限管理表,打开或关闭行列的全局开关。
列权限配置:操作全局列权限管理表,配置用户和组的全局列访问权限,表示用户具有所有列的访问权限。操作列权限管理表,配置用户和组的列访问权限。
行权限配置:操作全局行权限管理表,配置用户和组的是否具有全局行条件。操作行权限管理表,配置用户和组的行权限。
本发明不依赖于数据库本身的权限控制机制,减少了对现有数据库系统的改动,简化了权限控制的实现过程。
通过引入代理层,本发明在鉴定用户权限和生成新的SQL查询语句时采用高效的算法和优化策略,显著降低了细粒度权限检查对系统性能的影响,提高了用户体验。代理层集中管理权限策略,使得权限规则的更新和维护更加便捷,管理员无需在数据库内部进行复杂的修改和调试,从而降低了系统维护难度。
此外,本发明支持动态调整用户权限。代理层可以实时监控和更新权限策略,确保用户权限的变动能够及时反映在数据库访问中。这种动态调整能力提高了系统的灵活性和适应性,满足了不同应用场景下的权限管理需求。
本发明实施例还提供了一种电子设备,包括存储器和处理器,所述存储器与所述处理器耦接;其中,所述存储器用于存储程序数据,所述处理器用于执行所述程序数据以实现所述任一实施例的一种数据库行列访问控制的实现方法。
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现所述任一实施例的一种数据库行列访问控制的实现方法。
所述计算机可读存储介质可以是前述任一实施例所述的任意具备数据处理能力的设备的内部存储单元,例如硬盘或内存。所述计算机可读存储介质也可以是任意具备数据处理能力的设备,例如所述设备上配备的插接式硬盘、智能存储卡(Smart Media Card,SMC)、SD卡、闪存卡(Flash Card)等。进一步的,所述计算机可读存储介质还可以既包括任意具备数据处理能力的设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述任意具备数据处理能力的设备所需的其他程序和数据,还可以用于暂时地存储已经输出或者将要输出的数据。
以上所述仅为本发明的实施例而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。

Claims (10)

1.一种数据库行列访问控制的实现方法,其特征在于,包括以下步骤:
(S1)建立权限控制数据库相关的数据库表,所述数据库表包括用户信息表、行权限管理表、列权限管理表、全局行权限管理表、全局列权限管理表、全局权限管理表、权限组表、权限组成员表、数据库行条件表、数据库列信息表、数据库元信息表;
(S2)同步用户数据库的用户信息到用户信息表中;
(S3)创建用户组,配置用户和组的列访问权限和行访问权限;
(S4)对于某个SQL请求,解析初始SQL语句中使用的所有表和列字段;
(S5)检查数据库元信息表中的权限允许字段,判断权限校验开关是否打开,如果权限校验开关未打开,跳过权限检查,直接将所述初始SQL语句作为新的SQL语句,进入步骤(S9);如果权限校验开关打开,则继续下面步骤;
(S6)检查列访问权限,如果无权限,则返回给用户无查询权限,结束本次SQL请求;否则,继续后续步骤;
(S7)检查行权限条件,如果无权限,则返回给用户无查询权限,结束本次SQL请求;否则,继续后续步骤;
(S8)将所述步骤(S7)查询到的行权限条件拼接在初始SQL语句中,作为新的SQL语句;
(S9)使用所述新的SQL语句查询数据库,返回给用户查询结果。
2.根据权利要求1所述的一种数据库行列访问控制的实现方法,其特征在于,所述步骤(S2)具体为:
同步用户数据库中需要控制权限的用户信息到用户信息表中,所述用户信息至少包括表示用户的主键ID,当用户数据库中用户信息数据变更的同时,同步权限控制数据库的用户信息表,确保所有用户的权限都能得到控制;
同步用户数据库所有的表信息和表字段元信息到权限控制数据库元信息表和数据库列信息表中,启动定时器,定时同步数据,确保所有的表信息都能被设置相关访问权限。
3.根据权利要求1所述的一种数据库行列访问控制的实现方法,其特征在于,所述步骤(S3)包括:
根据用户需求,创建权限组表,将用户分组,把相同类型的用户写入权限组成员表中;
配置全局列权限管理表,表字段为权限关联ID,如果用户ID或权限组组ID存在于全局列权限管理表中,表示这个用户或权限组有所有列的访问权限;
配置列权限管理表,记录权限关联ID和列ID;对于用户的用户ID或者权限组的ID存在列ID,表示用户或组有这个数据库列的访问权限,如果没有对应的列ID,表示这个用户或组没有这个数据库列的访问权限。
4.根据权利要求1所述的一种数据库行列访问控制的实现方法,其特征在于,所述步骤(S6)具体为:
检查全局列权限管理表,查看用户ID和用户所在权限组ID列表是否在所述全局列权限管理表中,如果在全局列权限管理表中,说明用户具有全局列权限,继续步骤(S7);如果不在全局列权限管理表中,继续列权限查询;
查询列权限管理表,查询所述用户ID和用户所在权限组ID列表能访问的所有数据库列,用集合S表示;判断本次SQL语句中所述步骤(S4)解析出来的列字段是否都在集合S中;如果有不存在的列字段,则表示无列权限,返回给用户无列权限,结束本次SQL请求;如果都存在,则继续步骤(S7)。
5.根据权利要求1所述的一种数据库行列访问控制的实现方法,其特征在于,所述步骤(S7)具体为:
检查全局行权限管理表,查看用户ID和用户所在权限组ID列表,如果全局行权限管理表包含用户或权限组ID列表至少一项,表示用户具有全局行条件,返回行条件“1=1”,结束步骤(S7);否则继续下面的检查;
检查行权限管理表,判断本次SQL语句中所述步骤(S4)解析出来的所有表名称,查找所述用户ID和用户所在权限组的ID列表的所有的行条件,如果未查到,则表示无行权限条件,返回给用户无行权限,结束本次SQL请求;如果查到了,把所述所有的行条件拼接到一起返回给步骤(S8)。
6.一种数据库行列访问控制的实现系统,其特征在于,包括以下模块:
后台管理模块,用于同步用户数据库中的信息到权限控制数据库中,创建用户分组,配置用户和组的数据库行列访问权限,配置用户和组的全局数据库行列访问权限,打开或关闭权限控制开关;
权限判断模块,用于解析SQL语句中使用的所有表和列,判断用户是否具有列访问权限,添加用户的行条件到原SQL语句中,并将新SQL语句查询结果返回用户。
7.根据权利要求6所述的一种数据库行列访问控制的实现系统,其特征在于,所述后台管理模块还提供REST风格接口,包括:管理员登录和创建账号接口;创建和管理分组接口,添加和编辑用户和组的列权限接口,创建和编辑行条件接口,用户和组添加或删除行条件接口。
8.根据权利要求6所述的一种数据库行列访问控制的实现系统,其特征在于,所述后台管理模块的权限配置具体为:
权限开关:操作数据库元信息表,修改权限允许字段,启动和关闭某个表的权限开关;操作数据库全局权限管理表,打开或关闭行列的全局开关;
列权限配置:操作全局列权限管理表,配置用户和组的全局列访问权限,表示用户具有所有列的访问权限;操作列权限管理表,配置用户和组的列访问权限;
行权限配置:操作全局行权限管理表,配置用户和组的是否具有全局行条件;操作行权限管理表,配置用户和组的行权限。
9.一种电子设备,包括存储器和处理器,其特征在于,所述存储器与所述处理器耦接;其中,所述存储器用于存储程序数据,所述处理器用于执行所述程序数据以实现上述权利要求1-5任一项所述的一种数据库行列访问控制的实现方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-5中任一项所述的一种数据库行列访问控制的实现方法。
CN202411148185.0A 2024-08-21 2024-08-21 一种数据库行列访问控制的实现方法和系统 Pending CN118656874A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202411148185.0A CN118656874A (zh) 2024-08-21 2024-08-21 一种数据库行列访问控制的实现方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202411148185.0A CN118656874A (zh) 2024-08-21 2024-08-21 一种数据库行列访问控制的实现方法和系统

Publications (1)

Publication Number Publication Date
CN118656874A true CN118656874A (zh) 2024-09-17

Family

ID=92698196

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202411148185.0A Pending CN118656874A (zh) 2024-08-21 2024-08-21 一种数据库行列访问控制的实现方法和系统

Country Status (1)

Country Link
CN (1) CN118656874A (zh)

Similar Documents

Publication Publication Date Title
EP2548138B1 (en) Computer relational database method and system having role based access control
US20170161514A1 (en) Query conditions-based security
US8930382B2 (en) High performance secure data access in a parallel processing system
US7284265B2 (en) System and method for incremental refresh of a compiled access control table in a content management system
US9430665B2 (en) Dynamic authorization to features and data in JAVA-based enterprise applications
JPH06161854A (ja) バージョン済みデータベース管理システムにおける関係のソースおよびターゲットの解決
JPH06161853A (ja) バージョン済みデータ管理システムにおけるバリアント定義域及びバリアント・マップ
JPH076178A (ja) バージョン済みデータ管理システムにおける変更識別子による独立変更の検出
CN110046205B (zh) 一种关系型数据库行安全访问控制方法及系统
CN114168930A (zh) 一种Hive权限控制方法、装置、设备及可读存储介质
CN107566375B (zh) 访问控制方法和装置
CN106326760B (zh) 一种用于数据分析的访问控制规则描述方法
Chiquito et al. Access control model for time series databases using ngac
CN114896584B (zh) 一种Hive数据权限控制代理层方法及系统
EP3458979B1 (en) Reconciling foreign key references and table security policies
CN111737293A (zh) 一种数据仓库权限管理方法、装置、设备和存储介质
Khan et al. Modernization Framework to Enhance the Security of Legacy Information Systems.
CN110941628A (zh) 一种基于sql语句拦截解析技术的数据隔离实现方法
CN118656874A (zh) 一种数据库行列访问控制的实现方法和系统
CN116186652A (zh) 一种权限管理方法、系统、设备及可读存储介质
CN115718666A (zh) 用于web服务的细粒度动态权限控制方法和系统
CN111428270A (zh) 一种基于光盘的数据库分布式存储方法和存储系统
Ma et al. Study on access control for cloud storage security
Yuan et al. Designing Data Permissions in the Enterprise Application Environment
Lim et al. A policy-based approach for assuring data integrity in DBMSs

Legal Events

Date Code Title Description
PB01 Publication