TDH社区版基础能力演示(二):数据库安全(库、表、行、列级权限管控实操)
介绍
在数据高度敏感的应用场景中,例如金融行业中的银行业务,企业往往希望实现精细化的数据访问控制。比如,希望各银行的用户只能查询到其所属分行的相关数据,而不能查看其他分行的信息;或者在展示数据时,不希望暴露某些敏感列(如客户联系电话、身份证号等),以防止隐私泄露和非法使用。在这种情况下,Inceptor 提供了强大的行级和列级权限控制机制,可以针对指定的表设置细粒度的访问规则,从而最大限度地满足企业在不同业务场景下的数据管控需求,保障数据访问的安全性。
当 Inceptor 开启 Guardian 安全管理组件后,系统将具备完整的库级、表级、行级和列级权限管理体系,使得数据的访问控制更加精细和可靠。无论是对数据库整体的访问限制,还是对特定行记录或敏感字段的屏蔽,Inceptor 都能够提供灵活且安全的解决方案。本文将为您详细演示TDH社区版产品组件Inceptor在数据库安全权限管理方面的核心能力,帮助您快速了解并应用这些功能,以构建更安全的数据使用环境。
能力演示
支持数据库的库、表、行列权限功能。
操作须知
星环产品行/列级与表级权限说明
- 
表权限(PRIVILEGE) 
限制执行 SELECT、INSERT、UPDATE、DELETE 操作;
- 
行权限(PERMISSION) 
限制表级的 SELECT、UPDATE、DELETE 操作对指定行生效;
- 
列权限(PERMISSION) 
限制表级的 SELECT 操作对指定列生效;
需要注意的是:您需要为用户授予表级权限,行/列级权限设置才有意义,例如某用户没有表 A 的 SELECT 权限,那么为其授予行级 SELECT 权限也依旧无法读取表 A 的数据;
此外,INSERT 操作不受行/列级权限限制,而且,由于行级权限没有“行 Owner” 的概念,因此不会自动继承行级权限。例如用户插入了一条数据,在对其执行 SELECT、UPDATE、DELETE 操作时依然受控于行权限约束。 
TDH商业版及社区版为用户提供了两种方式进行配置及管理库、表、列、行级权限,您可以通过Guardian安全管理组件更加直观的进行界面化的配置(行级建议通过SQL方式)。您也可以通过SQL 命令的方式进行权限管理。
下面,将为您介绍如何进行安全权限管控。
操作前提
Inceptor 的多租户管理体系基于 Transwarp Guardian 服务实现,因此在创建/管理租户前需要已经安装完成Guardian服务,并且quark服务已启用插件,如下所示:


如果您目前不满足该需求,请访问Guardian官方手册进行查阅。
方式一:SQL命令行配置方式
步骤一 创建租户
① 登录 Transwarp Manager;
② 在页面右上角,选择全局服务 > Guardian;
③ 找到 Guardian Server 对应的服务链接并单击访问,登录 Guardian 平台;


④ 填写管理员账号和密码完成登录;


⑤ 在顶部菜单栏,单击租户(注意:您可以根据您的业务需求选择创建用户组,也可以选择直接创建租户,此处为了便于演示,仅演示如何创建租户,更多用户组的介绍及其他内容请查看开发者指南资源与管理权限章节;


⑥ 创建用户;


步骤二 使用hive用户操作权限
此处可以创建两个Session方便验证。
-- 收回所有权限 SELECT CURRENT_USER(); SET ROLE ADMIN; REVOKE PERMISSION ON ce_demo.employee FOR ROWS; REVOKE PERMISSION ON ce_demo.employee FOR COLUMNS; REVOKE ALL ON ce_demo.employee FROM USER Anderson;
-- 切换Anderson,执行下方语句验证 SELECT * FROM ce_demo.employee; //无权限,被拒

-- 赋表级权限 GRANT SELECT ON ce_demo.employee TO USER Anderson; -- 切换Anderson,执行下方语句验证 SELECT * FROM ce_demo.employee; //返回全部表信息

-- 赋行级权限
GRANT PERMISSION ON ce_demo.employee FOR ROWS WHERE NAME = CURRENT_USER() OR HAS_ROLE('ADMIN');
-- 切换Anderson,执行下方语句验证
SELECT * FROM ce_demo.employee;
//返回name为Anderson的行信息

-- 赋列级权限
GRANT PERMISSION ON ce_demo.employee FOR COLUMN SALARY CASE WHEN HAS_ROLE('ADMIN') THEN SALARY END;
-- 切换Anderson,执行下方语句验证
SELECT * FROM ce_demo.employee;
//只有admin角色才能查出salary列,所以Anderson用户查出来Salary列为null


方式二:可视化配置方式
该方式可以直接在Guardian上进行配置,但是需要注意的是,Guardian界面更适合进行库、表、列的赋权,行权限需参考方式一采用SQL赋权。
准备工作
① 登录至 Quark 节点所属设备,将下述配置添加至 /etc/quark{服务ID}/conf/hive-site.xml 文件中。
<property> <name>inceptor.security.column.authorization.enabled</name> <value>true</value> </property>


② 登录 Transwarp Manager 平台;
③ 在页面左侧,单击仪表盘 > 集群,找到并单击 Quark 服务,重启 Quark 服务;


注意:重启该服务可能导致业务短暂不可用,请在业务低峰期或运维窗口期操作;
下面的示例将以Anderson租户为例。
操作步骤
① 通过Manager访问Guardian服务登录 Guardian 平台;
② 在顶部菜单栏,单击租户;
③ 单击用户页签,找到并单击目标用户;
④ 在我的权限右侧的下拉框中,选择 INCEPTOR > Quark{服务ID},然后在其右侧选择数据库/表/列权限;
⑤ 点击右侧添加对应的权限即可,也可以选择在下方进行修改,具体可参考本视频示例;


通过上述介绍与演示,可以看出 Inceptor 在数据安全权限管理方面具备强大的功能支持。无论是通过灵活的 SQL 命令方式,还是直观便捷的 Guardian 可视化界面,用户均可实现对数据库、表、行、列级别的精细化权限控制。
为帮助您更好地体验TDH社区版能力,您可以前往我们的官网获取更多资料并下载相关产品。
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号