在CentOS环境下,HDFS的安全设置需围绕身份认证、权限管理、数据加密、系统加固四大核心维度展开,以下是具体操作步骤:
在配置HDFS安全前,需先强化CentOS系统的基础安全,降低整体风险:
usermod -L username),仅保留root和必要运维账户。/etc/login.defs文件,设置密码复杂度要求(如PASS_MIN_LEN 10、PASS_REQUIRE_MIXED_CASE yes、PASS_REQUIRE_DIGITS yes),强制用户使用强密码。chattr +i命令为/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow添加不可修改属性,防止未授权篡改(如chattr +i /etc/shadow)。/etc/pam.d/su文件,添加auth required pam_wheel.so use_uid,仅允许wheel组成员使用su切换至root。Kerberos是HDFS实现强身份认证的标准协议,需完成以下步骤:
sudo yum install krb5-workstation krb5-libs -y
/etc/krb5.conf文件,添加以下内容(替换YOUR.REALM.COM为你的域名,kdc.your.realm.com为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
kinit命令获取票据(替换your_username为实际用户名):kinit your_username@YOUR.REALM.COM
用klist命令验证票据是否有效(显示票据有效期和权限)。修改Hadoop核心配置文件,启用Kerberos认证并绑定Kerberos principal与keytab文件:
core-site.xml:<property>
<name>hadoop.security.authentication</name>
<value>kerberos</value>
</property>
<property>
<name>hadoop.security.authorization</name>
<value>true</value>
</property>
<property>
<name>hadoop.security.auth_to_local</name>
<value>
RULE:[1:$1@$0](.*@YOUR.REALM.COM)s/@.*//
</value>
</property>
hdfs-site.xml:/path/to/keytab为实际路径):<property>
<name>dfs.namenode.kerberos.principal</name>
<value>nn/_HOST@YOUR.REALM.COM</value>
</property>
<property>
<name>dfs.namenode.keytab.file</name>
<value>/path/to/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>/path/to/hdfs.datanode.keytab</value>
</property>
hdfs namenode -format
启动HDFS集群:start-dfs.sh
klist查看当前票据,执行hdfs dfs -ls /测试是否能正常访问HDFS(需提前用kinit获取票据)。通过权限控制和ACL(访问控制列表)细化访问权限:
hdfs-site.xml中以下属性设置为true:<property>
<name>dfs.permissions.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.namenode.acls.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.datanode.acls.enabled</name>
<value>true</value>
</property>
username:groupname和/path/to/dir):hdfs dfs -chown username:groupname /path/to/dir
750表示所有者可读写执行,组用户可读执行,其他用户无权限):hdfs dfs -chmod 750 /path/to/dir
hdfs dfs -setfacl -m user:user1:rwx /path/to/dir
hdfs dfs -setfacl -m group:group1:r-x /path/to/dir
hdfs dfs -getfacl /path/to/dir
```。
保障数据在传输和存储过程中的安全性:
core-site.xml中添加SSL相关配置(如hadoop.ssl.enabled、hadoop.ssl.keystore.file等)。core-site.xml添加以下属性(替换/path/to/keystore为密钥库路径):<property>
<name>hadoop.security.key.provider.path</name>
<value>jceks://file/path/to/keystore.jceks</value>
</property>
<property>
<name>hadoop.security.key.provider.password</name>
<value>your_keystore_password</value>
</property>
指定加密区域(如/secure_data):hdfs crypto -createZone -keyName my_key -path /secure_data
此后,写入/secure_data的文件将自动加密。记录操作日志并实现实时监控,便于安全事件追溯:
hdfs-site.xml中添加以下属性,开启审计日志:<property>
<name>hadoop.security.audit.logger</name>
<value>INFO,RFAS</value>
</property>
审计日志默认存储在$HADOOP_HOME/logs/hadoop-*-audit.log中。ssh-keygen生成密钥,ssh-copy-id复制公钥)。sudo firewall-cmd --permanent --zone=public --add-port=8020/tcp
sudo firewall-cmd --permanent --zone=public --add-port=50070/tcp
sudo firewall-cmd --reload
fsimage、edits文件)和重要数据备份至异地,制定数据恢复流程。通过以上步骤,可在CentOS上构建一个安全的HDFS环境,有效防范未授权访问、数据泄露等安全风险。需根据实际业务需求调整配置,并定期进行安全评估与更新。