配置Spark表、列和数据库的用户权限
操作场景
使用SparkSQL操作表或者数据库时,如果用户访问别人创建的表或数据库,需要授予对应的权限。为了实现更严格权限控制,SparkSQL也支持列级别的权限控制。如果要访问别人创建的表上某些列,需要授予列权限。以下介绍使用Manager角色管理功能在表授权、列授权和数据库授权三个场景下的操作。
操作步骤
SparkSQL表授权、列授权、数据库授权与Hive的操作相同,详情请参见Hive用户权限管理。
- 在权限管理中,为了方便用户使用,授予数据库下表的任意权限将自动关联该数据库目录的HDFS权限。为了避免产生性能问题,取消表的任意权限,系统不会自动取消数据库目录的HDFS权限,但对应的用户只能登录数据库和查看表名。
- 如果为角色添加或删除数据库的查询权限,数据库中的表也将自动添加或删除查询权限。此机制为Hive实现,SparkSQL与Hive保持一致。
- Spark不支持struct数据类型中列名称含有特殊字符(除字母、数字、下划线外的其他字符)。如果struct类型中列名称含有特殊字符,在FusionInsight Manager的“编辑角色”页面进行授权时,该列将无法正确显示。
相关概念
SparkSQL的语句在SparkSQL中进行处理,权限要求如表1所示。
|
操作场景 |
用户需要的权限 |
|---|---|
|
CREATE TABLE |
“创建”, RWX+ownership(for create external table - the location)
说明:
按照指定文件路径创建datasource表时,需要path后面文件的RWX+ownership权限。 |
|
DROP TABLE |
“Ownership”(of table) |
|
DROP TABLE PROPERTIES |
“Ownership” |
|
DESCRIBE TABLE |
“查询” |
|
SHOW PARTITIONS |
“查询” |
|
ALTER TABLE LOCATION |
“Ownership”, RWX+ownership (for new location) |
|
ALTER PARTITION LOCATION |
“Ownership”, RWX+ownership (for new partition location) |
|
ALTER TABLE ADD PARTITION |
“插入”, RWX+ownership (for partition location) |
|
ALTER TABLE DROP PARTITION |
“删除” |
|
ALTER TABLE(all of them except the ones above) |
“Update”,“Ownership” |
|
TRUNCATE TABLE |
“Ownership” |
|
CREATE VIEW |
“查询”,“Grant Of Select”,“创建” |
|
ALTER VIEW PROPERTIES |
“Ownership” |
|
ALTER VIEW RENAME |
“Ownership” |
|
ALTER VIEW ADD PARTS |
“Ownership” |
|
ALTER VIEW AS |
“Ownership” |
|
ALTER VIEW DROPPARTS |
“Ownership” |
|
ANALYZE TABLE |
“查询”, “插入” |
|
SHOW COLUMNS |
“查询” |
|
SHOW TABLE PROPERTIES |
“查询” |
|
CREATE TABLE AS SELECT |
“查询”, “创建” |
|
SELECT |
“查询”
说明:
与表一样,对视图进行SELECT操作的时候需要有该视图的“查询”权限。 |
|
INSERT |
“插入”, “删除 (for overwrite)” |
|
LOAD |
“插入”, “删除”, RWX+ownership(input location) |
|
SHOW CREATE TABLE |
“查询”,“Grant Of Select” |
|
CREATE FUNCTION |
“管理” |
|
DROP FUNCTION |
“管理” |
|
DESC FUNCTION |
- |
|
SHOW FUNCTIONS |
- |
|
MSCK (metastore check) |
“Ownership” |
|
ALTER DATABASE |
“管理” |
|
CREATE DATABASE |
- |
|
SHOW DATABASES |
- |
|
EXPLAIN |
“查询” |
|
DROP DATABASE |
“Ownership” |
|
DESC DATABASE |
- |
|
CACHE TABLE |
“查询” |
|
UNCACHE TABLE |
“查询” |
|
CLEAR CACHE TABLE |
“管理” |
|
REFRESH TABLE |
“查询” |
|
ADD FILE |
“管理” |
|
ADD JAR |
“管理” |
|
HEALTHCHECK |
- |