Ubuntu Hadoop通信如何加密
导读:Ubuntu Hadoop 通信加密实践 一 加密范围与总体架构 建议同时覆盖以下通信面: RPC 控制通道(客户端与 NameNode/ResourceManager,以及 DataNode↔NameNode、NodeManager↔...
Ubuntu Hadoop 通信加密实践
一 加密范围与总体架构
- 建议同时覆盖以下通信面:
- RPC 控制通道(客户端与 NameNode/ResourceManager,以及 DataNode↔NameNode、NodeManager↔ResourceManager 等),通过 SASL 在 Kerberos 之上协商,支持 authentication/integrity/privacy 三档;
- 数据传输通道(客户端与 DataNode 的读写、DataNode 间块传输),可启用端到端加密;
- Web UI 与 REST 接口(如 NameNode/ResourceManager UI、WebHDFS),通过 HTTPS/SPNEGO 保护;
- 节点运维通道(如 SSH 启停集群),使用密钥登录替代口令。上述组合可在公网或不可信网络中显著降低被窃听与篡改风险。
二 启用 RPC 与数据传输加密
- 前提:已部署 Kerberos,为各服务创建 Principal 与 Keytab(如 hdfs/namenode@REALM、HTTP/hostname@REALM),并确保 DNS/hosts 解析一致、时间同步(NTP)。
- 配置步骤(示例为 core-site.xml 与 hdfs-site.xml 关键项):
- 启用 RPC 加密(全局生效,需重启相关服务):
- core-site.xml:
- hadoop.rpc.protection:privacy(同时开启认证、完整性、隐私;若选 integrity 仅校验不加密;authentication 仅认证)
- core-site.xml:
- 启用数据传输加密(仅在 RPC 为 privacy 时生效):
- hdfs-site.xml:
- dfs.encrypt.data.transfer:true
- dfs.encrypt.data.transfer.algorithm:AES/CTR/NoPadding(优先)或 3des(兼容旧版本;不推荐 rc4)
- dfs.encrypt.data.transfer.cipher.suites:AES/CTR/NoPadding(可选,显式指定套件)
- hdfs-site.xml:
- 启用 RPC 加密(全局生效,需重启相关服务):
- 重要提示:
- RPC 设为 privacy 后,HDFS 的 DataTransferProtocol(客户端↔DataNode、DataNode↔DataNode)默认也会加密;若一端开启,对端必须同样开启,否则访问失败。
- 修改 hadoop.rpc.protection 通常需要重启相关服务,且客户端需重新获取配置;性能会较 authentication 有所下降,需在安全与性能间权衡。
三 Web UI 与 REST 接口加密
- 启用 HTTPS/TLS:为 NameNode/ResourceManager 等配置 SSL/TLS(证书、密钥、信任库),并在 Hadoop 配置中开启 HTTPS 端口与协议;
- 启用 SPNEGO 强认证:为 Web 接口创建 HTTP/hostname@REALM 的 Principal 与 Keytab,在 core-site.xml 中开启 hadoop.http.authentication.type=kerberos,在 hdfs-site.xml 中启用 dfs.web.authentication.kerberos.enabled=true 等;
- 访问方式:浏览器使用 Kerberos 票据或企业 SSO 登录 Web UI,REST/WebHDFS 使用 SPNEGO 或 Kerberos 委托访问。上述措施可有效保护 Web UIs 与 WebHDFS/REST API。
四 节点间运维通道与最小暴露面
- SSH 加固:禁用口令登录,统一使用 SSH 密钥认证;限制 root 直登,仅允许 hadoop 用户通过 sudo 执行必要操作;
- 防火墙与端口收敛:仅开放必要端口(如 8020/9000(RPC/IPC)、50070/9870(NameNode Web)、8088(ResourceManager Web)、50075(DataNode Web)、10000(HiveServer2)等),对管理口与数据口分区分域;
- 最小权限与审计:按“最小权限”原则配置 HDFS ACL/权限与 YARN 队列 ACL,开启 审计日志与监控告警,定期巡检异常访问。
五 验证与运维要点
- 验证 RPC 加密:
- 使用 kinit 获取票据后执行 hdfs dfsadmin -report 或 yarn node -list,若返回正常且抓包显示 SASL/GSSAPI 协商成功,即表明 RPC 通道已加密;
- 验证数据传输加密:
- 在 hdfs-site.xml 将 dfs.encrypt.data.transfer 设为 true 并重启后,执行 distcp 或 hdfs dfs -put/get;抓包应看到 TLS/加密块传输 特征;
- 验证 Web 加密:
- 浏览器访问 HTTPS 地址应无证书告警;curl -k --negotiate -u : https://:9870 能获取页面内容;
- 性能与兼容:
- RPC privacy 与 数据传输加密会带来一定性能开销(官方实践提示 HBase RPC privacy 读写性能可能下降约60%,HDFS 亦需评估);
- 若集群一端开启 dfs.encrypt.data.transfer,对端必须一致;变更 hadoop.rpc.protection 后需重启服务并重新分发客户端配置;
- 定期轮换 Kerberos keytab、备份 KMS/密钥与配置,变更窗口内做好回滚预案。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu Hadoop通信如何加密
本文地址: https://pptw.com/jishu/760182.html
