Hive權限管理
1、hive授權模型介紹
(1)Storage Based Authorization in the Metastore Server
基於存儲的授權 - 可以對Metastore中的元數據進行保護,但是沒有提供更加細粒度的訪問控制(例如:列級別、行級別)。
(2)SQL Standards Based Authorization in HiveServer2
基於SQL標准的Hive授權 - 完全兼容SQL的授權模型,推薦使用該模式。
(3)Default Hive Authorization (Legacy Mode)
hive默認授權 - 設計目的僅僅只是為了防止用戶產生誤操作,而不是防止惡意用戶訪問未經授權的數據。
2、基於SQL標准的hiveserver2授權模式
(1)完全兼容SQL的授權模型
(2)除支持對於用戶的授權認證,還支持角色role的授權認證
1、role可理解為是一組權限的集合,通過role為用戶授權
2、一個用戶可以具有一個或多個角色,默認包含另種角色:public、admin
3、基於SQL標准的hiveserver2授權模式的限制
1、啟用當前認證方式之后,dfs, add, delete, compile, and reset等命令被禁用。
2、通過set命令設置hive configuration的方式被限制某些用戶使用。
(可通過修改配置文件hive-site.xml中hive.security.authorization.sqlstd.confwhitelist進行配置)
3、添加、刪除函數以及宏的操作,僅為具有admin的用戶開放。
4、用戶自定義函數(開放支持永久的自定義函數),可通過具有admin角色的用戶創建,其他用戶都可以使用。
5、Transform功能被禁用。
4、詳細配置
<property>
<name>hive.security.authorization.enabled</name>
<value>true</value>
</property>
<property>
<name>hive.server2.enable.doAs</name>
<value>false</value>
</property>
<property>
<name>hive.users.in.admin.role</name>
<value>root</value>
</property>
<property>
<name>hive.security.authorization.manager</name> <value>org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactory</value>
</property>
<property>
<name>hive.security.authenticator.manager</name>
<value>org.apache.hadoop.hive.ql.security.SessionStateUserAuthenticator</value>
</property>
5、Hive權限管理命令
--角色的添加、刪除、查看、設置:
-- 創建角色
CREATE ROLE role_name;
-- 刪除角色
DROP ROLE role_name;
-- 設置角色
SET ROLE (role_name|ALL|NONE);
-- 查看當前具有的角色
SHOW CURRENT ROLES;
-- 查看所有存在的角色
SHOW ROLES;
6、Hive權限分配圖
Action | Select | Insert | Update | Delete | Owership | Admin | URL Privilege(RWX Permission + Ownership) |
---|---|---|---|---|---|---|---|
ALTER DATABASE | Y | ||||||
ALTER INDEX PROPERTIES | Y | ||||||
ALTER INDEX REBUILD | Y | ||||||
ALTER PARTITION LOCATION | Y | Y (for new partition location) | |||||
ALTER TABLE (all of them except the ones above) | Y | ||||||
ALTER TABLE ADD PARTITION | Y | Y (for partition location) | |||||
ALTER TABLE DROP PARTITION | Y | ||||||
ALTER TABLE LOCATION | Y | Y (for new location) | |||||
ALTER VIEW PROPERTIES | Y | ||||||
ALTER VIEW RENAME | Y | ||||||
ANALYZE TABLE | Y | Y | |||||
CREATE DATABASE | Y (if custom location specified) | ||||||
CREATE FUNCTION | Y | ||||||
CREATE INDEX | Y (of table) | ||||||
CREATE MACRO | Y | ||||||
CREATE TABLE | Y (of database) | Y (for create external table – the location) | |||||
CREATE TABLE AS SELECT | Y (of input) | Y (of database) | |||||
CREATE VIEW | Y + G | ||||||
DELETE | Y | ||||||
DESCRIBE TABLE | Y | ||||||
DROP DATABASE | Y | ||||||
DROP FUNCTION | Y | ||||||
DROP INDEX | Y | ||||||
DROP MACRO | Y | ||||||
DROP TABLE | Y | ||||||
DROP VIEW | Y | ||||||
DROP VIEW PROPERTIES | Y | ||||||
EXPLAIN | Y | ||||||
INSERT | Y | Y (for OVERWRITE) | |||||
LOAD | Y (output) | Y (output) | Y (input location) | ||||
MSCK (metastore check) | Y | ||||||
SELECT | Y | ||||||
SHOW COLUMNS | Y | ||||||
SHOW CREATE TABLE | Y+G | ||||||
SHOW PARTITIONS | Y | ||||||
SHOW TABLE PROPERTIES | Y | ||||||
SHOW TABLE STATUS | Y | ||||||
TRUNCATE TABLE | Y | ||||||
UPDATE | Y |