伺服器減容會有什麼影響
⑴ Kerberos在Hadoop安全中擔任什麼角色以及存在什麼問題
在與客戶交流Hadoop安全時,提及kerberos的頻率非常高,並提出了一些關於kerberos的安全問題,比如它的安全機制,具體是解決Hadoop什麼安全問題,存在哪些不足等等,下面就由小編對kerberos做一個詳細的歸納,更加清晰kerberos在Hadoop安全中擔任的角色。
1. Hadoop安全問題:
Hadoop設計之初,默認集群內所有的節點都是可靠的。由於用戶與HDFS或M/R進行交互時不需要驗證,惡意用戶可以偽裝成真正的用戶或者伺服器入侵到hadoop集群上,導致:惡意的提交作業,修改JobTracker狀態,篡改HDFS上的數據,偽裝成NameNode 或者TaskTracker接受任務等。 盡管在版本之後, HDFS增加了文件和目錄的許可權,但並沒有強認證的保障,這些許可權只能對偶然的數據丟失起保護作用。惡意的用戶可以輕易的偽裝成其他用戶來篡改許可權,致使許可權設置形同虛設。不能夠對Hadoop集群起到安全保障。
(1) 用戶到伺服器的認證問題:
NameNode,JobTracker上沒有用戶認證
DataNode上沒有認證
JobTracker上沒有認證
解決伺服器到伺服器的認證
解決client到伺服器的認證
對用戶級別上的認證並沒有實現
kerberos驗證方式單一、安全性低的問題,首先其只提供類似linux文件系統的帳戶許可權驗證,而且可以通過簡單的手段冒充用戶名,如果有惡意用戶,直接冒充為hadoop的super用戶,那整個集群是很危險的。其次不能對認證過的用戶做任何許可權控制;
部署復雜,生成證書和配置的步驟相當繁瑣,首次配置還可以接受,但是對於用戶許可權的修改,機器的減容擴容,會造成證書重新生成,再分發證書,重啟hadoop。且還存在kerberos的宕機導致整個集群無法服務的風險,加上kerberos本身也比較復雜。
影響效率,網上搜羅一個真實案例,支付寶曾用了kerberos,導致其效率極低運維困難。原因是因為請求次數過多,具體看下面關於kerberos的工作原理就知道了。
用戶可以偽裝成其他用戶入侵到一個HDFS 或者MapRece集群上。
Datanode對讀入輸出並沒有認證。導致如果一些客戶端如果知道block的ID,就可以任意的訪問DataNode上block的數據
可以任意的殺死或更改用戶的jobs,可以更改JobTracker的工作狀態
(2) 伺服器到伺服器的認證問題:
沒有DataNode, TaskTracker的認證
用戶可以偽裝成datanode ,tasktracker,去接受JobTracker, Namenode的任務指派。
2、kerberos解決的安全問題:
加入Kerberos認證機制使得集群中的節點就是它們所宣稱的,是信賴的。Kerberos可以將認證的密鑰在集群部署時事先放到可靠的節點上。集群運行時,集群內的節點使用密鑰得到認證。只有被認證過節點才能正常使用。企圖冒充的節點由於沒有事先得到的密鑰信息,無法與集群內部的節點通信。
kerberos實現的是機器級別的安全認證,也就是前面提到的服務到服務的認證問題。事先對集群中確定的機器由管理員手動添加到kerberos資料庫中,在KDC上分別產生主機與各個節點的keytab(包含了host和對應節點的名字,還有他們之間的密鑰),並將這些keytab分發到對應的節點上。通過這些keytab文件,節點可以從KDC上獲得與目標節點通信的密鑰,進而被目標節點所認證,提供相應的服務,防止了被冒充的可能性。
由於kerberos對集群里的所有機器都分發了keytab,相互之間使用密鑰進行通信,確保不會冒充伺服器的情況。集群中的機器就是它們所宣稱的,是可靠的。
防止了用戶偽裝成Datanode,Tasktracker,去接受JobTracker,Namenode的任務指派。
Kerberos對可信任的客戶端提供認證,確保他們可以執行作業的相關操作。防止用戶惡意冒充client提交作業的情況。
用戶無法偽裝成其他用戶入侵到一個HDFS 或者MapRece集群上
用戶即使知道datanode的相關信息,也無法讀取HDFS上的數據
用戶無法發送對於作業的操作到JobTracker上
無法控制用戶提交作業的操作。不能夠實現限制用戶提交作業的許可權。不能控制哪些用戶可以提交該類型的作業,哪些用戶不能提交該類型的作業。這些由ACL模塊控制(參考)
3、Kerberos在Hadoop安全中擔任什麼角色以及存在什麼問題:
通俗來說Kerberos在Hadoop安全中起到是一個單因素(只有一種如賬號、密碼的驗證方式)身份驗證的作用,kerberos就如一個房間的門鎖,進門的人需要提供正確的密碼,而對於進門後的人做了什麼樣的操作kerberos就無法控制了。
存在的問題:
4、 Kerberos工作原理介紹
4.1基本概念
Princal(安全個體):被認證的個體,有一個名字和口令
KDC(key distribution center ) : 是一個網路服務,提供ticket 和臨時會話密鑰
Ticket:一個記錄,客戶用它來向伺服器證明自己的身份,包括客戶標識、會話密鑰、時間戳。
AS (Authentication Server): 認證伺服器
TSG(Ticket Granting Server): 許可證伺服器
4.2 kerberos 工作原理
4.2.1 Kerberos協議
Kerberos可以分為兩個部分:
Client向KDC發送自己的身份信息,KDC從Ticket Granting Service得到TGT(ticket-granting ticket), 並用協議開始前Client與KDC之間的密鑰將TGT加密回復給Client。此時只有真正的Client才能利用它與KDC之間的密鑰將加密後的TGT解密,從而獲得TGT。(此過程避免了Client直接向KDC發送密碼,以求通過驗證的不安全方式)
Client利用之前獲得的TGT向KDC請求其他Service的Ticket,從而通過其他Service的身份鑒別