hadoop大資料平臺安全基礎知識入門

hdpdriver發表於2019-08-05

概述

以 Hortonworks Data Platform (HDP) 平臺為例 ,hadoop大資料平臺的安全機制包括以下兩個方面:

  • 身份認證 即核實一個使用者的真實身份,一個使用者來使用大資料引擎平臺,這個使用者需要表明自己是誰,即提供自己的身份證明,大資料平臺需要檢驗這個證明,確定這個證明是有效的,且不是偽造的。否則,就拒絕這個使用者進入大資料引擎。
  • 授權管理 這個使用者的真實身份核實之後,需要對這個使用者的使用許可權進行界定,即這個使用者在大資料平臺中能夠使用什麼元件,能夠獲取哪些資源,能夠對資源進行哪些操作進行管理.

身份認證

大資料平臺一般使用基於 Kerberos 的身份認證機制

  • 概述
    簡單來說,大資料平臺中有一個專門的認證伺服器KDC,可以把它看作是戶籍派出所,可事先給所有的平臺使用者(人使用者以及機器和程式使用者)發放戶籍證明,即keytab(金鑰)。之後每個使用者要使用大資料平臺,就要拿著這個證明先去KDC認證,認證無誤之後,才能夠使用大資料平臺引擎。

  • 操作示例

首先要對整個平臺進行 kerberos 化,hdp ambari 提供了傻瓜式操作,另附文章介紹.

hadoop大資料平臺安全基礎知識入門

如上圖,kerberos化後,我們對 ambari 管理介面進行了二次開發.在這裡建立本地使用者的時候,已經同步向KDC伺服器註冊了該使用者的相關資訊,同時生成了該使用者的keytab,點選使用者,進入詳情頁可下載金鑰。之後該使用者來使用大資料平臺(無論是命令列還是API呼叫還是其他什麼方式),必須先攜帶keytab去KDC進行認證。這裡以命令列的方式舉例,例如某個使用者需要使用hadoop去讀取hdfs上面的檔案。他需要先亮明自己的身份,即執行命令:

kinit -k -t keytab路徑 使用者名稱 這樣之後再去執行hdfs等命令的時候才能夠認證通過,而不會報錯:

Exception encountered while connecting to the server : javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]

授權管理

大資料平臺使用基於apache ranger的授權管理。授權管理是應該是建立在身份認證之上的,試想以下,如果連身份都無法確認的話,那你的任何授權都是不可靠的(你確定你授權的這個使用者就是這個使用者嗎),你的授權管理其實是空中閣樓.

  • 概述
    ranger提供了基於資源的授權管理機制,所謂資源就是大資料平臺中的各元件(例如hdfs,hive,hbase等),以及元件內的具體資源(例如hdfs的某個路徑,hive,hbase中的某個表)。某個元件資源對應於ranger中的service(服務),在單個service中建立策略就可以對這個元件的具體資源進行使用者的許可權管理了.

  • 操作指南
    我們對 ambari 介面進行了二次開發,將 ranger 原生介面移植過來
    hadoop大資料平臺安全基礎知識入門

如圖,以此為例, ranger 自動探測並生成平臺中各個元件服務,點選進入服務詳情

hadoop大資料平臺安全基礎知識入門

增加或者編輯策略即可對具體資源進行授權管理了。如上圖,我們授予了testranger使用者對hbase所有表的所有列的所有操作許可權。如果編輯這個策略,刪除testranger這個使用者,那麼這個使用者在hbase做查詢等操作的時候就會出錯:

ERROR: org.apache.hadoop.hbase.security.AccessDeniedException: Insufficient permissions for user ‘testranger@EXAMPLE.COM',action: scannerOpen, tableName:test, family:f1 

另外也可以新建新的策略來管理,策略提供了細粒度的許可權管理方式,詳細可參考 ranger 官網.

相關文章