1. 用戶與權限管理
創建專用的Hadoop用戶組(如hadoop
)及用戶(如hadoop
),避免使用root用戶運行Hadoop服務。將Hadoop安裝目錄(如/usr/local/hadoop
)、數據目錄(如/hadoop_data
)的所有權分配給該用戶及組,并設置合理權限(如755
用于目錄、644
用于文件),防止未授權訪問。同時,配置SSH無密碼登錄,生成RSA密鑰對并將公鑰添加到authorized_keys
文件中,確保集群節點間安全通信。
2. 認證機制強化
啟用Kerberos身份驗證(Hadoop原生支持),通過頒發加密票據驗證用戶和服務身份,防止非法用戶偽裝。配置Hadoop的core-site.xml
文件,設置hadoop.security.authentication
為kerberos
,并同步Kerberos Key Distribution Center(KDC)的時間(誤差不超過5分鐘),確保認證有效性。
3. 授權與訪問控制
使用Hadoop內置的訪問控制列表(ACL)或第三方工具(如Apache Ranger、Sentry)實現細粒度權限管理。通過hdfs dfs -chmod
(設置文件/目錄權限,如770
限制為所屬用戶及組)、hdfs dfs -chown
(更改所有者,如hadoop:hadoop
)命令,或Ranger的Web界面配置用戶/組的讀、寫、執行權限,避免越權操作。
4. 數據加密保護
啟用傳輸層加密(SSL/TLS),配置Hadoop的core-site.xml
和mapred-site.xml
文件,設置hadoop.ssl.enabled
為true
,并為集群節點頒發證書,加密節點間的通信數據(如NameNode與DataNode之間的心跳信息)。對HDFS中的敏感數據啟用透明數據加密(TDE),通過hdfs crypto
命令創建加密區域(如/secure_zone
),寫入該區域的數據自動加密,讀取時自動解密。
5. 網絡安全防護
使用Ubuntu的ufw
防火墻限制對Hadoop集群的訪問,僅開放必要端口(如HDFS NameNode端口9000
、YARN ResourceManager端口8088
、MapReduce JobHistory Server端口10020
),屏蔽不必要的端口(如Telnet的23
端口、SMB的445
端口)。配置網絡隔離(如VLAN),將Hadoop集群與外部網絡分離,僅允許授權IP地址(如運維人員所在網段)訪問集群。
6. 審計與監控
啟用Hadoop審計日志功能,在core-site.xml
中設置hadoop.security.audit.logger
為INFO,auditLog
,記錄用戶操作(如文件讀取、寫入、刪除)、服務調用(如Job提交、資源申請)等事件。使用監控工具(如Prometheus+Granafa、Zabbix)實時監測集群狀態(如CPU使用率、內存占用、磁盤空間),設置異常告警(如節點宕機、權限異常),及時發現并響應安全事件。
7. 系統維護與更新
定期更新Hadoop及其依賴組件(如Java、SSH)到最新穩定版本,修復已知安全漏洞(如Hadoop的CVE漏洞)。定期備份Hadoop數據(如使用hdfs dfs -copyToLocal
將HDFS數據復制到本地或異地存儲),制定災難恢復計劃(如模擬數據恢復演練),確保數據可恢復性。