2016-11-04 173 views
0

我正在使用hive 0.14,主要使用直線。沒有管理員權限的用戶是否可以管理配置單元中的對象訪問權限?

我不是管理員,但我希望創建一些團隊可以使用的視圖。

我們有一個共同的hive數據庫,其中每個人都有讀取和寫入。如果我創建了某些不希望其他人能夠刪除或修改的表/視圖,是否可以撤銷其他人的drop/write訪問權限?

+0

「Hive授權模型」的主題本身需要3天的研討會。 「首選」模式隨着時間的推移而改變,並且還有其他選擇(比較Ranger或Sentry插件)。如果你確實不是管理員,並且不想看看可用的小文檔,那麼祝你好運。 –

回答

1

對配置單元表的訪問取決於HDFS訪問權限。

每當在位於db的數據庫中創建新表tbl時,都會創建一個新目錄db/tbl

如果你想限制到該目錄使用hadoop fs -chmod寫入羣組訪問,例如:

hadoop fs -chmod 750 db/tbl

如果你想找出表位於一個數據庫,你可以創建一個表,而指定一個位置,然後運行describe formated tbl

您可以隨時檢查哪些表的訪問權限運行hadoop fs -ls db

關於視圖:

雖然基於存儲的授權可以在數據庫,表和分區的水平提供訪問控制, 由於文件系統提供的訪問控制處於目錄和文件的級別,因此它無法控制更好的級別(如列和視圖)中的授權。精細粒度訪問控制的先決條件是數據服務器能夠僅提供用戶需要(或已經)訪問的列和行。在文件系統訪問的情況下,整個文件被提供給用戶。 HiveServer2滿足了這個條件,因爲它有一個可以理解行和列(通過使用SQL)的API,並且能夠只提供SQL查詢所要求的列和行。

SQL Standards Based Authorization(引入Hive 0.13.0,HIVE-5837)可用於實現細粒度訪問控制。它基於授權的SQL標準,並使用熟悉的grant/revoke語句來控制訪問。 它需要通過HiveServer2配置啓用。

請注意,對於Hive命令行,禁用基於SQL標準的授權。這是因爲Hive中使用訪問控制策略的Hive命令行不可能實現安全的訪問控制,因爲用戶可以直接訪問HDFS,因此他們可以輕鬆繞過基於SQL標準的授權檢查,甚至完全禁用它。禁用此功能可以避免給用戶帶來虛假的安全感。

因此,總之,需要在配置中啓用SQL Standards Based Authorization

然後你就可以在視圖上使用:REVOKE

+0

也是這種情況的意見? – paolov

+0

@ user55570是的,如果您撤銷讀取訪問權限 - 只有您可以讀取這些文件,這意味着只有您可以讀取表格。 –

+0

好的,但據我所見只有一張桌子有相關的hdfs文件。一個視圖不會。 – paolov