阅读量:39
一、身份认证:确保访问合法性
- Kerberos认证:作为HDFS安全的核心认证机制,需通过
core-site.xml配置hadoop.security.authentication=kerberos,并在hdfs-site.xml中启用授权hadoop.security.authorization=true;同时配置KDC(密钥分发中心)、realm信息及客户端票据(kinit命令获取),确保只有通过身份验证的合法用户能访问集群。
二、权限管理:精细化控制数据访问
- UGO权限模型:启用
dfs.permissions.enabled=true(默认开启),通过chmod(设置文件/目录权限,如755)、chown(更改所有者,如hdfs dfs -chown user:group /path)、chgrp(更改组,如hdfs dfs -chgrp hbase /path)命令管理基础权限;建议使用umask(如022)限制默认权限,避免过度开放。 - ACL扩展权限:启用
dfs.namenode.acls.enabled=true,使用hdfs dfs -setfacl命令为特定用户/组添加额外权限(如hdfs dfs -setfacl -m user:hue:rwx /data),解决UGO模型无法满足的细粒度需求(如允许某用户对某目录有写权限但不允许删除)。 - 超级用户管控:默认超级用户为
hdfs,通过dfs.permissions.superusergroup配置超级用户组(如hadoop),限制超级用户数量(移除不必要的超级用户),避免权限滥用。
三、数据加密:保障数据传输与存储安全
- 传输层加密:采用SSL/TLS协议加密客户端与NameNode、DataNode之间的通信,配置
core-site.xml中的hadoop.ssl.enabled=true及证书路径(如hadoop.ssl.keystore.file),防止数据在传输中被窃取或篡改。 - 存储层加密:启用HDFS透明数据加密(TDE),通过
hdfs-site.xml配置加密算法(如AES-256)、密钥提供者(如KMS),数据在写入磁盘时自动加密,读取时自动解密,即使磁盘丢失也无法获取明文数据。
四、审计与监控:追踪安全事件
- 审计日志配置:在
core-site.xml中设置审计日志路径(如hadoop.security.audit.log.path=/var/log/hadoop/hdfs/audit.log)、最大大小(如1000000字节)及备份数量(如10),记录用户操作(如read、write、delete)、时间、IP等关键信息,便于事后追溯。 - 实时监控与告警:部署监控工具(如Prometheus+Granafa、Zabbix),监控HDFS集群状态(如NameNode存活、数据块副本数)、安全事件(如频繁的未授权访问尝试),配置阈值告警(如未授权访问次数超过10次/分钟触发邮件/短信告警),及时响应潜在威胁。
五、其他关键措施
- 防火墙与网络隔离:使用
firewalld或iptables限制HDFS关键端口(如NameNode的8020、DataNode的50010)的访问,仅允许受信任的IP地址(如运维服务器、客户端IP)接入;云环境中通过安全组实现同样效果。 - 系统基础安全加固:禁用不必要的系统服务(如FTP、Telnet),强化用户密码策略(
/etc/login.defs中设置PASS_MIN_LEN=10、PASS_REQUIRE_MIXED_CASE=true等),使用chattr +i锁定关键配置文件(如/etc/passwd、/etc/shadow、core-site.xml),防止未授权修改。 - 密钥管理:使用Hadoop密钥管理服务(KMS)生成、存储和管理加密密钥(如TDE密钥、Kerberos keytab文件),避免密钥硬编码在配置文件中;设置密钥轮换策略(如每90天更换一次),降低密钥泄露风险。