Hadoop 集群安全部署:Kerberos 认证与 HDFS 权限精细化控制
·
Hadoop集群安全部署:Kerberos认证与HDFS权限精细化控制
1. Kerberos认证概述
Kerberos是Hadoop集群安全的核心组件,通过票据(Ticket)机制实现双向认证:
- 三阶段验证:
- 客户端向KDC(密钥分发中心)请求票据授权票据(TGT)
- KDC验证身份后返回加密TGT
- 客户端使用TGT申请服务票据(ST)访问集群服务
- 关键优势:
- 防止中间人攻击
- 支持票据有效期管理
- 实现服务间安全通信
2. Kerberos在Hadoop中的配置
核心步骤:
# 1. 安装KDC服务(示例:MIT Kerberos)
yum install krb5-server krb5-workstation
# 2. 创建Kerberos数据库
kdb5_util create -s
# 3. 添加Hadoop主体(Principal)
kadmin.local -q "addprinc -randkey hdfs/namenode@EXAMPLE.COM"
kadmin.local -q "addprinc -randkey yarn/resourcemanager@EXAMPLE.COM"
# 4. 生成keytab文件(密钥表)
kadmin.local -q "xst -k hdfs.keytab hdfs/namenode"
配置文件调整:
krb5.conf:定义KDC地址和域配置core-site.xml:启用Kerberos<property> <name>hadoop.security.authentication</name> <value>kerberos</value> </property>
3. HDFS权限控制基础
HDFS采用POSIX风格权限模型:
- 权限三元组:
- 所有者($U$)、所属组($G$)、其他用户($O$)
- 权限位:$rwx$(读/写/执行)
- 权限示例:
# 设置目录权限:所有者可读写执行,组可读执行,其他无权限 hdfs dfs -chmod 750 /secure/data - 用户映射:
- 通过
hadoop-http-authentication实现LDAP/AD集成
- 通过
4. HDFS ACL精细化控制
启用ACL补充标准权限模型:
# 1. 启用ACL(hdfs-site.xml)
<property>
<name>dfs.namenode.acls.enabled</name>
<value>true</value>
</property>
# 2. 添加ACL规则
hdfs dfs -setfacl -m user:audit_team:r-x /finance/reports
hdfs dfs -setfacl -m group:dev_team:rw- /dev/sourcecode
# 3. 查看ACL
hdfs dfs -getfacl /sensitive/data
ACL规则类型:
| 条目类型 | 示例格式 | 作用 |
|---|---|---|
| 用户ACL | user:alice:rw- | 用户alice的读写权限 |
| 组ACL | group:finance:r-- | 财务组的只读权限 |
| 默认ACL | default:user::r-x | 新建子项继承的默认权限 |
5. 最佳实践
-
最小权限原则:
- 初始权限设置为$750$(所有者完全控制,组只读)
- 通过ACL逐步添加例外权限
-
审计与监控:
- 定期检查
hdfs audit log - 使用Ranger/Sentry集中管理策略
- 定期检查
-
密钥安全管理:
- Keytab文件权限设为$400$
- 定期轮换密钥(建议每90天)
-
灾难恢复:
# 备份Kerberos数据库 kdb5_util dump kerberos-backup
实施建议:先在生产测试环境验证Kerberos配置,再逐步启用ACL。权限变更需通过审批流程,避免服务中断。
更多推荐
所有评论(0)