配置表、列和数据库的权限
操作场景
使用SparkSQL操作表或者数据库时,如果用户访问别人创建的表或数据库,需要授予对应的权限。为了实现更严格权限控制,SparkSQL也支持列级别的权限控制。如果要访问别人创建的表上某些列,需要授予列权限。以下介绍使用Manager角色管理功能在表授权、列授权和数据库授权三个场景下的操作。
操作步骤
SparkSQL表授权、列授权、数据库授权与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  | 
      
        -  |