CentOS 上 HDFS 安全配置指南
一 系统安全基线
cat /etc/passwd | awk -F ':' '{print $1,$3}' | grep ' 0$';锁定命令:passwd -l <用户>。PASS_MIN_LEN 10,要求包含大小写字母、数字与特殊字符。chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow。echo "TMOUT=600" >> /etc/profile(10 分钟自动注销);仅允许特定组使用 su:编辑 /etc/pam.d/su。二 启用 Kerberos 强认证
sudo yum install -y krb5-server krb5-admin-server krb5-workstation。sudo systemctl start krb5kdc、sudo systemctl start kadmind。sudo kadmin.local -q "addprinc -randkey hdfs/<nn-host>@YOUR.REALM.COM"。sudo kadmin.local -q "ktadd -k /etc/security/keytabs/hdfs.keytab hdfs/<nn-host>";设置权限:chown hdfs:hadoop /etc/security/keytabs/hdfs.keytab && chmod 400 /etc/security/keytabs/hdfs.keytab。<property>
<name>hadoop.security.authentication</name>
<value>kerberos</value>
</property>
<property>
<name>hadoop.security.authorization</name>
<value>true</value>
</property>
<property>
<name>dfs.namenode.kerberos.principal</name>
<value>hdfs/<nn-host>@YOUR.REALM.COM</value>
</property>
<property>
<name>dfs.namenode.keytab.file</name>
<value>/etc/security/keytabs/hdfs.keytab</value>
</property>
<property>
<name>dfs.datanode.kerberos.principal</name>
<value>hdfs/<dn-host>@YOUR.REALM.COM</value>
</property>
<property>
<name>dfs.datanode.keytab.file</value>/etc/security/keytabs/hdfs.keytab</value>
</property>
<property>
<name>dfs.namenode.http-authentication.kerberos.principal</name>
<value>HTTP/<nn-host>@YOUR.REALM.COM</value>
</property>
<property>
<name>dfs.namenode.http-authentication.kerberos.keytab</name>
<value>/etc/security/keytabs/spnego.keytab</value>
</property>
kinit hdfs/<nn-host>@YOUR.REALM.COM 获取票据后执行 hdfs dfs -ls / 验证访问;检查 NameNode/DataNode 日志是否出现 SASL/GSSAPI 认证成功信息。三 权限与 ACL 细粒度控制
<property>
<name>dfs.permissions.enabled</name>
<value>true</value>
</property>
<property>
<name>fs.permissions.umask-mode</name>
<value>022</value>
</property>
hdfs dfs -chmod 755 /user、hdfs dfs -chown hadoop:hadoop /user(按实际业务调整属主/属组)。hdfs dfs -chmod 1777 /user/tmp,防止非属主删除他人文件。hdfs dfs -setfacl -m user:<user>:r-x /user/projecthdfs dfs -getfacl /user/project四 加密与数据保护
hdfs dfsadmin -setEncryptionPolicy -path /data -policy encrypted(需先创建加密区);或在 hdfs-site.xml 设置 dfs.encrypt.data.transfer=true 并在集群范围启用 TLS/SSL(如 HTTPS/WebHDFS)。hdfs crypto -createZone -keyName zoneKey1 -path /user/securehdfs crypto -encrypt -path /user/secure/data -keyName zoneKey1五 运维与加固清单
hdfs dfsadmin -safemode enter;恢复写入:hdfs dfsadmin -safemode leave;查看状态:hdfs dfsadmin -safemode get。