HDFS多使用者管理ACL機制other許可權訪問控制的理解
非Master伺服器使用者也能通過客戶端遠端訪問Hadoop
現象:在Hadoop叢集多使用者管理實踐中發現,客戶端用非Master伺服器配置的使用者連線Master,也通用具備對指定目錄的操作許可權。比如Master伺服器提供的使用者的是A,理論上客戶端應用在A使用者下部署安裝hadoop後遠端連線,但現在客戶端用B使用者安裝Hadoop客戶端並連線Master伺服器,且可在指定目錄下rwx,只是在涉及datanode任務時會提示許可權不足。
原理:預設ACL必須包含所有最小要求的ACL項,包括檔案擁有者項,檔案所屬的組項和其它使用者項。如果使用者沒有在預設ACL中配置上述三項中的任何一個,那麼該項將通過從訪問ACL拷貝對應的許可權來自動插入,或者如果沒有訪問ACL則自動插入許可權位。預設ACL也必須擁有mask,如果mask沒有被指定,通過計算所有被mask過濾項的許可權與(&運算)自動插入mask。當一個檔案使用ACL時,許可權檢查的演算法則變為:
1)當用戶名為檔案的屬主時,會檢查屬主的許可權。
2)否則如果使用者名稱匹配命名使用者條目中的一個時,許可權會被檢查並通過mask許可權來進行過濾。
3)否則如果檔案的組匹配到當前使用者的組列表中的一個時,而這些許可權經過mask過濾後仍然會授權,會被允許使用。
4)否則如果其中一個命名組條目匹配到組列表中的一個成員,而這些許可權經過mask過濾後仍然會授權,會被允許使用。
5)否則如果檔案組和任何命名組條目匹配到組列表中的一個成員時,但是訪問不會被任何一個許可權所授權時,訪問會被拒絕。
6)除此之外,other許可權位會被檢查。
最佳實踐時基於傳統的許可權位設定大部分許可權要求,然後定義少量帶有特殊規則的ACL增加許可權位。相比較只是用許可權位的檔案,使用ACL的檔案會在NameNode中產生額外的記憶體消耗。
分析:ACL機制分user、group、other三組許可權,對於非master伺服器建立的使用者連線過來的客戶端的使用者,放在other組管理,如果other組許可權ACL設定為rwx許可權則具備操作許可權。
1)unnameduser (file owner)檔案的擁有者
2)unnamedgroup (file group)檔案的所屬組
3)nameduser除了檔案的擁有者和擁有組之外,的其它使用者
4)namedgroup除了檔案的擁有者和擁有組之外,的其它使用者
mask 許可權掩碼,用於過濾named user和named group的許可權
HDFS通過ACL控制檔案目錄許可權,在伺服器上新增的使用者目錄/user/A,然後把該配置同hadoop包給到客戶端配置,這樣通過客戶端連線上來的就預設檔案目錄/user/A屬於A使用者,如果客戶端是通過B部署客戶端並遠端連線,則目錄/user/A用other組許可權來授予B使用者。顯然A使用者是檔案擁有者,而B使用者是其他使用者。
這裡面需要關注叢集多使用者管理上的兩個細節:
1)Master新建使用者所配置的目錄體現在Hadoop客戶端那個配置檔案下,這樣通過客戶端連線上來的不管是哪個使用者,都是檢查該目錄的許可權。
2)要重點掌握ACL機制,並理解mask作用。
實際上,對於Hadoop多使用者叢集管理,如果只是通過hdfs整合ACL機制來支撐,那也只是實現了檔案目錄的許可權控制,對於資源排程和作業管理,如儲存空間和計算能力,還需依賴其他機制。