介绍 针对数据敏感的场景,例如希望各银行的用户只能查询到各自分行的数据,不希望展示某些列(如电话号)的数据,此时可为指定的表授予行/列级权限,最大限度满足企业多样的数据管控需求,保护数据访问安全性。 Inceptor开启guardian之后将具备库、表、行、列级权限管控,数据使用更安全。本篇内容将为您演示社区版数据库安全能力。
能力演示 支持数据库的库、表、行列权限功能。
操作须知 星环产品行/列级与表级权限说明
限制执行 SELECT、INSERT、UPDATE、DELETE 操作;
限制表级的 SELECT、UPDATE、DELETE 操作对指定行生效;
限制表级的 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},然后在其右侧选择数据库/表/列权限;
⑤ 点击右侧添加对应的权限即可,也可以选择在下方进行修改,具体可参考本视频示例;
更多能力演示: