HDFS安全设置配置指南
配置前需备份所有Hadoop配置文件(如core-site.xml、hdfs-site.xml),并确保Hadoop集群处于正常运行状态。修改配置后需重启HDFS服务(start-dfs.sh)使变更生效。
Kerberos是HDFS最常用的认证协议,用于验证用户和服务身份,防止未授权访问。
krb5-workstation包(CentOS示例):sudo yum install krb5-workstation -y。/etc/krb5.conf文件,添加领域(REALM)和KDC(密钥分发中心)信息:[libdefaults]
default_realm = YOUR.REALM.COM
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
[realms]
YOUR.REALM.COM = {
kdc = kdc.your.realm.com:88
admin_server = kdc.your.realm.com:749
}
[domain_realm]
.your.realm.com = YOUR.REALM.COM
your.realm.com = YOUR.REALM.COM
kadmin.local工具为HDFS NameNode和DataNode创建主体,并导出密钥表:kadmin.local -q "addprinc -randkey hdfs/kdc.your.realm.com@YOUR.REALM.COM"
kadmin.local -q "ktadd -k /etc/security/keytabs/hdfs.headless.keytab hdfs/kdc.your.realm.com@YOUR.REALM.COM"
core-site.xml启用Kerberos认证和授权:<property>
<name>hadoop.security.authentication</name>
<value>kerberos</value>
</property>
<property>
<name>hadoop.security.authorization</name>
<value>true</value>
</property>
编辑hdfs-site.xml配置HDFS服务的主体和密钥表路径:<property>
<name>dfs.namenode.kerberos.principal</name>
<value>nn/_HOST@YOUR.REALM.COM</value>
</property>
<property>
<name>dfs.namenode.keytab.file</name>
<value>/etc/security/keytabs/hdfs.headless.keytab</value>
</property>
<property>
<name>dfs.datanode.kerberos.principal</name>
<value>dn/_HOST@YOUR.REALM.COM</value>
</property>
<property>
<name>dfs.datanode.keytab.file</name>
<value>/etc/security/keytabs/dn.headless.keytab</value>
</property>
kinit命令获取票据(需输入主体密码):kinit hdfs/kdc.your.realm.com@YOUR.REALM.COM,通过klist命令验证票据有效性。权限控制是HDFS安全的基础,通过POSIX风格权限和ACL实现细粒度访问管理。
hdfs-site.xml,开启权限验证:<property>
<name>dfs.permissions.enabled</name>
<value>true</value>
</property>
hdfs-site.xml,开启ACL支持:<property>
<name>dfs.namenode.acls.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.datanode.acls.enabled</name>
<value>true</value>
</property>
hdfs dfs -chmod命令设置文件/目录权限(如755表示所有者有读写执行权限,组和其他人有读执行权限):hdfs dfs -chmod 755 /user/hadoop/data。hdfs dfs -setfacl命令为特定用户或组添加额外权限(如为用户alice添加读写执行权限):hdfs dfs -setfacl -m user:alice:rwx /user/hadoop/data;使用hdfs dfs -getfacl命令查看ACL规则。数据加密可防止数据在传输过程中被窃取或在存储时被泄露。
core-site.xml,开启SSL并配置密钥库路径:<property>
<name>hadoop.ssl.enabled</name>
<value>true</value>
</property>
<property>
<name>hadoop.ssl.keystore.file</name>
<value>/path/to/keystore.jks</value>
</property>
<property>
<name>hadoop.ssl.keystore.password</name>
<value>your_keystore_password</value>
</property>
hdfs crypto -createZone -keyName my_key -path /encrypted_zone
加密后,写入/encrypted_zone的数据会自动加密,读取时自动解密。通过优化配置减少安全风险,提升集群安全性。
hdfs dfsadmin -setSuperuserGroup命令限制超级用户组,避免滥用超级权限。sudo firewall-cmd --permanent --zone=public --add-port=8020/tcp;sudo firewall-cmd --reload。日志与监控可帮助及时发现异常行为,追溯安全事件。
hdfs-site.xml,配置审计日志路径和大小:<property>
<name>hadoop.security.audit.log.path</name>
<value>/var/log/hadoop-hdfs/audit.log</value>
</property>
<property>
<name>hadoop.security.audit.log.maxsize</name>
<value>10485760</value> <!-- 10MB -->
</property>
<property>
<name>hadoop.security.audit.log.rotation.period</name>
<value>86400</value> <!-- 24小时 -->
</property>