概述 以 Hortonworks Data Platform (HDP) 平臺為例 ,hadoop大數據平臺的安全機制包括以下兩個方面: 身份認證 即核實一個使用者的真實身份,一個使用者來使用大數據引擎平臺,這個使用者需要表明自己是誰,即提供自己的身份證明,大數據平臺需要檢驗這個證明,確定這個證明是 ...
概述
以 Hortonworks Data Platform (HDP) 平臺為例 ,hadoop大數據平臺的安全機制包括以下兩個方面:
- 身份認證 即核實一個使用者的真實身份,一個使用者來使用大數據引擎平臺,這個使用者需要表明自己是誰,即提供自己的身份證明,大數據平臺需要檢驗這個證明,確定這個證明是有效的,且不是偽造的。否則,就拒絕這個使用者進入大數據引擎。
- 授權管理 這個使用者的真實身份核實之後,需要對這個使用者的使用許可權進行界定,即這個使用者在大數據平臺中能夠使用什麼組件,能夠獲取哪些資源,能夠對資源進行哪些操作進行管理.
身份認證
大數據平臺一般使用基於 Kerberos 的身份認證機制
概述
簡單來說,大數據平臺中有一個專門的認證伺服器KDC,可以把它看作是戶籍派出所,可事先給所有的平臺使用者(人用戶以及機器和程式用戶)發放戶籍證明,即keytab(密鑰)。之後每個用戶要使用大數據平臺,就要拿著這個證明先去KDC認證,認證無誤之後,才能夠使用大數據平臺引擎。操作示例
首先要對整個平臺進行 kerberos 化,hdp ambari 提供了傻瓜式操作,另附文章介紹.
如上圖,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 原生界面移植過來
如圖,以此為例, ranger 自動探測並生成平臺中各個組件服務,點擊進入服務詳情
增加或者編輯策略即可對具體資源進行授權管理了。如上圖,我們授予了testranger用戶對hbase所有表的所有列的所有操作許可權。如果編輯這個策略,刪除testranger這個用戶,那麼這個用戶在hbase做查詢等操作的時候就會出錯:
ERROR: org.apache.hadoop.hbase.security.AccessDeniedException: Insufficient permissions for user ‘[email protected]',action: scannerOpen, tableName:test, family:f1
另外也可以新建新的策略來管理,策略提供了細粒度的許可權管理方式,詳細可參考 ranger 官網.