配置表、列和数据库的权限
使用HetuEngine操作表或者数据库时,如果用户访问别人创建的表或数据库,需要授予对应的权限。为了实现更严格权限控制,HetuEngine也支持列级别的权限控制。如果要访问别人创建的表上某些列,需要授予列权限。以下介绍使用Manager角色管理功能在表授权、列授权和数据库授权三个场景下的操作。
操作步骤
HetuEngine表授权、列授权、数据库授权与Hive的操作相同。
- 在权限管理中,为了方便用户使用,授予数据库下表的任意权限将自动关联该数据库目录的HDFS权限。为了避免产生性能问题,取消表的任意权限,系统不会自动取消数据库目录的HDFS权限,但对应的用户只能登录数据库和查看表名。
- 若为角色添加或删除数据库的查询权限,数据库中的表也将自动添加或删除查询权限。此机制为Hive实现,HetuEngine与Hive保持一致。
- HetuEngine不支持struct数据类型中列名称含有特殊字符(除字母、数字、下划线外的其他字符)。如果struct类型中列名称含有特殊字符,在FusionInsight Manager的“角色”页面进行授权时,该列将无法正确显示。
相关概念
SQL语句在HetuEngine中进行处理,权限要求如表1所示。
操作场景 |
用户需要的权限 |
---|---|
DESCRIBE TABLE |
查询(Select) |
ANALYZE TABLE |
查询(Select)、插入(Insert) |
SHOW COLUMNS |
查询(Select) |
SHOW TABLE STATUS |
查询(Select) |
SHOW TABLE PROPERTIES |
查询(Select) |
SELECT |
查询(Select)
说明:
对视图进行SELECT操作的时候需要有该视图以及该视图对应的表的“Select”权限。 |
EXPLAIN |
查询(Select) |
CREATE VIEW |
查询(Select)、Select授权(Grant Of Select)、建表(Create) |
CREATE TABLE |
建表(Create) |
ALTER TABLE ADD PARTITION |
插入(Insert) |
INSERT |
插入(Insert) |
INSERT OVERWRITE |
插入(Insert)、删除(Delete) |
ALTER TABLE DROP PARTITION |
需要授予Table级别的修改(Alter)、删除(Delete)和Column级别的查询(Select)权限 |
ALTER DATABASE |
Hive管理员权限(Hive Admin Privilege) |