《Hive编程指南》第18章 安全有相关内容可参考。
环境:
HDP2.4 ,hive-1.2.0, ambari统一管理
目前hive支持简单的权限管理,默认情况下是不开启,这样所有的用户都具有相同的权限,同时也是超级管理员,也就对hive中的所有表都有查看和改动的权利,这样是不符合一般数据仓库的安全原则的。下面来介绍HIVE的权限管理。
Hive用户
1. Hive作为表存储层。
使用对象:Hive's HCatalog API如Apache Pig, MapReduce 和一些大量的并行数据库, 有直接操作HDFS和元数据server的权限
2. Hive作为SQL查询引擎。
a. hive cli: 同样有HDFS和Hive metastore操作权限
b. ODBC/JDBC和其他HiveServer2 API users (Beeline CLI is an example),通过HiveServer2操作。
Hive三种授权模型
1. Storage Based Authorization in the Metastore Server(SBA)
通常用于Metastore Server API的授权;hive用户1和2a, Hive配置不控制权限,通过HDFS文件进行 权限控制;hive用户2b 使用需要hive.server2.enable.doAs =true
注意:Hive 0.12.0版本之后开始支持;使用HDFS ACL(Hadoop 2.4以后版本支持)灵活控制
虽然能够保护Metastore中的元数据不被恶意用户破坏,可控制数据库、表和分区但是没有提供细粒度的访问控制(列级别、行级别)
hive-site.xml配置:
roperty>
<name>hive.metastore.pre.event.listeners</name>
<value> org.apache.hadoop.hive.ql.security.authorization.AuthorizationPreEventListener</value>
<description>turns on metastore-side security</description>
</property>
<property>
<name>hive.security.metastore.authorization.manager</name>
<value> org.apache.hadoop.hive.ql.security.authorization.StorageBasedAuthorizationProvider</value>
<description>This tells Hive which metastore-side authorization provider to use. The default setting uses DefaultHiveMetastoreAuthorizationProvider, which implements the standard Hive grant/revoke model. To use an HDFS permission-based model (recommended) to do your authorization, use StorageBasedAuthorizationProvider as instructed above.</description>
</property>
<property>
<name>hive.security.metastore.authenticator.manager</name>
<value> org.apache.hadoop.hive.ql.security.HadoopDefaultMetastoreAuthenticator</value>
<description>authenticator manager class name to be used in the metastore for authentication.
The user defined authenticator should implement interface
org.apache.hadoop.hive.ql.security.HiveAuthenticationProvider.
<