Hive - SQL Standards Based Authorization in HiveServer2
三種授權模型:
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 默認授權
設計目的僅僅只是為了防止用戶產生誤操作,而不是防止惡意用戶訪問未經
授權的數據。
基於 SQL 標准的完全兼容 SQL 的授權模型,除支持對於用戶的授權認證,還
支持角色 role 的授權認證
role 可理解為是一組權限的集合,通過 role 為用戶授權
一個用戶可以具有一個或多個角色
默認包含兩種角色:public、admin
限制:
①啟用當前認證方式之后,dfs, add, delete, compile, and reset 等命令被禁用。
②通過 set 命令設置 hive configuration 的方式被限制某些用戶使用。
(可通過修改配置文件 hive-site.xml 中
hive.security.authorization.sqlstd.confwhitelist 進行配置)
③添加、刪除函數以及宏(批量規模)的操作,僅為具有 admin 的用戶開放。
④用戶自定義函數(開放支持永久的自定義函數),可通過具有 admin 角色的
用戶創建,其他用戶都可以使用。
在 hive 服務端修改配置文件 hive-site.xml 添加以下配置內容:
<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>
服務端啟動 hiveserver2 ;客戶端通過 beeline 進行連接
角色的添加、刪除、查看、設置:
CREATE ROLE role_name; -- 創建角色
DROP ROLE role_name; -- 刪除角色
SET ROLE (role_name|ALL|NONE); -- 設置角色
SHOW CURRENT ROLES; -- 查看當前具有的角色
SHOW ROLES; -- 查看所有存在的角色