Hive的默認權限模式
Hive的默認授權模式支持基於用戶、組和角色的傳統RDBMS風格的授權,並授予他們在資料庫或表上執行操作的權限,詳細描述在hive授權(https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Authorization)和hive廢棄的權限模式。
這種RDBMS類型的授權不太適合Hadoop中的典型用例,因為在實現方面存在以下差異:
這就產生了這樣的問題場景:
Hive社區意識到可能不存在一個萬能的授權模型,因此它支持可插入的其他授權模型。在HCatalog包中,我們介紹了一個授權接口的實現,該接口使用底層文件系統(通常是存儲後端)的權限作為每個資料庫、表或分區的權限的基礎
在Hive中,當文件系統用於存儲時,有一個對應於資料庫或表的目錄。使用這種授權模型,用戶或組對該目錄的讀/寫權限決定了用戶對資料庫或表的權限。在HBase等其他存儲系統中,對系統中等效實體的授權將使用系統的授權機制來確定Hive中的權限。
例如,alter table操作將在允許操作之前檢查用戶是否對表目錄具有權限,即使它可能不會更改文件系統上的任何內容
用戶需要對存儲系統上對應的實體進行寫訪問,以執行任何類型的操作,從而修改資料庫或表的狀態。用戶需要讀訪問權限才能對資料庫或表執行任何非修改操作
當資料庫或表被具有Unix/ posix權限模型(如HDFS)的文件系統所支持時,您可以為所有者用戶、組和' other '設置讀(r)和寫(w)權限
例如,在http://hadoop.apache.org/docs/rx.x.x/hdfs_permissions_guide.html上給出了HDFS權限的詳細信息
HDFS權限管理1.0.4版本http://hadoop.apache.org/docs/r1.0.4/hdfs_permissions_guide.html
HDFS權限管理1.2.1版本http://hadoop.apache.org/docs/r1.2.1/hdfs_permissions_guide.html
注意:對HDFS ACL(在Apache Hadoop 2.4中引入)的支持在已發布的Hive版本中是不可用的。這意味著,它只檢查傳統rwx樣式的權限,以確定用戶是否可以寫入文件系統。對ACL的支持在Hive trunk Hive -7583中可用,在Hive 0.14中也可用
注意:如果hive.warehouse.subdir.inherit.perms啟用後,將通過以下權限繼承規則設置hive創建的文件和目錄的權限和ACL。
用於確定用戶是否對目錄或文件具有權限的文件系統邏輯將被Hive使用
下表顯示了此授權模型下的Hive操作所需的最小權限:
警告:目前Hive的這種授權模式並不能阻止惡意用戶做壞事
權限未使用的DDL:
管理Hive默認授權模型的權限的DDL語句對基於存儲的模型中的權限沒有任何影響
配置基於存儲系統的授權
基於文件系統的授權模型的實現可以通過一個名為StorageBasedAuthorizationProvider的授權提供程序來實現,該授權提供程序是Hive的一部分。(在0.10.0版本的Hive包中添加了對這個的支持—參見hive-3705和Metastore伺服器中的基於存儲的授權。)
需要將以下條目添加到hive-site.xml以啟用授權
<property> <name>hive.security.authorization.enabled</name> <value>true</value> <description>enable or disable the hive client authorization</description> </property> <property> <name>hive.security.authorization.manager</name> <value>org.apache.hadoop.hive.ql.security.authorization.StorageBasedAuthorizationProvider</value> <description>the hive client authorization manager class name. The user defined authorization class should implement interface org.apache.hadoop.hive.ql.security.authorization.HiveAuthorizationProvider. </description> </property>