目录大纲
Part01-基础概念与理论知识
1.1 Hadoop安全架构
1.2 Kerberos认证原理
1.3 权限管理模型
Part02-生产环境规划与建议
2.1 安全策略规划
2.2 用户权限规划
2.3 审计策略规划
Part03-生产环境项目实施方案
3.1 Kerberos认证配置
3.2 HDFS权限配置
3.3 YARN访问控制
3.4 安全审计配置
Part04-生产案例与实战讲解
4.1 多租户安全隔离案例
4.2 敏感数据保护案例
4.3 安全审计分析案例
Part05-风哥经验总结与分享
5.1 安全配置最佳实践
5.2 权限管理经验总结
Part01-基础概念与理论知识
1.1 Hadoop安全架构
Hadoop安全架构包括认证、授权、审计三个层面。更多视频教程www.fgedu.net.cn 认证确认用户身份,授权控制访问权限,审计记录操作日志。
1.2 Kerberos认证原理
Kerberos是Hadoop默认的认证机制。学习交流加群风哥微信: itpux-com
1. 用户向KDC请求TGT
2. KDC返回TGT给用户
3. 用户使用TGT请求服务票据
4. KDC返回服务票据
5. 用户使用服务票据访问服务
1.3 权限管理模型
Hadoop权限管理包括HDFS权限和YARN权限。from bigdata视频:www.itpux.com
hdfs dfs -ls /bigdata/warehouse/fgedu
# 查看YARN队列权限
yarn queue -status root.production
drwxr-xr-x – fgedu fgedu 0 2024-01-17 10:00 /bigdata/warehouse/fgedu/ods
drwxr-xr-x – fgedu fgedu 0 2024-01-17 10:00 /bigdata/warehouse/fgedu/dwd
drwxr-xr-x – fgedu fgedu 0 2024-01-17 10:00 /bigdata/warehouse/fgedu/dws
# YARN队列权限
Queue Information:
Queue Name: root.production
State: RUNNING
ACL Submit Applications: fgedu,dept1
ACL Administer Queue: hdfs,yarn
Part02-生产环境规划与建议
2.1 安全策略规划
安全策略需要根据业务需求制定。更多学习教程公众号风哥教程itpux_com
– 启用Kerberos认证
– 配置最小权限原则
– 定期审计权限
– 加密敏感数据
– 启用审计日志
2.2 用户权限规划
用户权限规划需要遵循最小权限原则。学习交流加群风哥QQ113257174
groups fgedu
# 查看用户权限
hdfs dfs -getfacl /bigdata/warehouse/fgedu
fgedu : fgedu hadoop users
# 目录权限
# file: /bigdata/warehouse/fgedu
# owner: fgedu
# group: fgedu
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::r-x
default:other::r-x
2.3 审计策略规划
审计策略需要记录关键操作。风哥提示:建议启用HDFS审计日志和YARN审计日志。
– 记录所有文件访问
– 记录权限变更
– 记录应用提交
– 记录配置变更
Part03-生产环境项目实施方案
3.1 Kerberos认证配置
3.1.1 安装Kerberos
yum install -y krb5-server krb5-libs krb5-workstation
# 配置krb5.conf
cat /etc/krb5.conf
Installed:
krb5-server.x86_64 0:1.19.1-15.el9
krb5-libs.x86_64 0:1.19.1-15.el9
krb5-workstation.x86_64 0:1.19.1-15.el9
# krb5.conf配置
[libdefaults]
default_realm = FGEDU.NET.CN
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
[realms]
FGEDU.NET.CN = {
kdc = fgedu01.fgedu.net.cn
admin_server = fgedu01.fgedu.net.cn
}
[domain_realm]
.fgedu.net.cn = FGEDU.NET.CN
fgedu.net.cn = FGEDU.NET.CN
3.1.2 创建Kerberos用户
kdb5_util create -r FGEDU.NET.CN -s
# 创建管理员用户
kadmin.local -q “addprinc admin/admin”
# 创建Hadoop服务用户
kadmin.local -q “addprinc -randkey hdfs/fgedu01.fgedu.net.cn”
kadmin.local -q “addprinc -randkey yarn/fgedu01.fgedu.net.cn”
# 创建普通用户
kadmin.local -q “addprinc fgedu”
Loading random data
Initializing database ‘/var/kerberos/krb5kdc/principal’ for realm ‘FGEDU.NET.CN’
Database creation successful
# 创建用户
Authenticating as principal root/admin@FGEDU.NET.CN with password.
Principal “admin/admin@FGEDU.NET.CN” created.
Principal “hdfs/fgedu01.fgedu.net.cn@FGEDU.NET.CN” created.
Principal “yarn/fgedu01.fgedu.net.cn@FGEDU.NET.CN” created.
Principal “fgedu@FGEDU.NET.CN” created.
3.1.3 配置Hadoop Kerberos
cat /bigdata/app/hadoop/etc/hadoop/core-site.xml | grep -A3 “security”
<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.mechanism</name>
<value>MIT</value>
</property>
3.2 HDFS权限配置
3.2.1 配置HDFS ACL
cat /bigdata/app/hadoop/etc/hadoop/hdfs-site.xml | grep -A3 “acl”
<property>
<name>dfs.namenode.acls.enabled</name>
<value>true</value>
</property>
<!– 权限检查 –>
<property>
<name>dfs.permissions.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.permissions.superusergroup</name>
<value>hadoop</value>
</property>
3.2.2 设置目录权限
hdfs dfs -chown fgedu:fgedu /bigdata/warehouse/fgedu
# 设置目录权限
hdfs dfs -chmod 750 /bigdata/warehouse/fgedu
# 设置ACL权限
hdfs dfs -setfacl -m user:dept1:r-x /bigdata/warehouse/fgedu
hdfs dfs -setfacl -m user:dept2:r-x /bigdata/warehouse/fgedu
# 查看ACL
hdfs dfs -getfacl /bigdata/warehouse/fgedu
# ACL权限
# file: /bigdata/warehouse/fgedu
# owner: fgedu
# group: fgedu
user::rwx
user:dept1:r-x
user:dept2:r-x
group::r-x
mask::r-x
other::—
default:user::rwx
default:user:dept1:r-x
default:user:dept2:r-x
default:group::r-x
default:other::—
3.3 YARN访问控制
3.3.1 配置队列ACL
cat /bigdata/app/hadoop/etc/hadoop/capacity-scheduler.xml | grep -A3 “acl”
<property>
<name>yarn.scheduler.capacity.root.production.acl_submit_applications</name>
<value>fgedu,dept1,dept2</value>
</property>
<!– 队列管理权限 –>
<property>
<name>yarn.scheduler.capacity.root.production.acl_administer_queue</name>
<value>hdfs,yarn</value>
</property>
<!– 开发队列权限 –>
<property>
<name>yarn.scheduler.capacity.root.development.acl_submit_applications</name>
<value>dev_user1,dev_user2</value>
</property>
3.3.2 配置应用访问控制
cat /bigdata/app/hadoop/etc/hadoop/yarn-site.xml | grep -A3 “acl”
<property>
<name>yarn.acl.enable</name>
<value>true</value>
</property>
<property>
<name>yarn.admin.acl</name>
<value>hdfs,yarn</value>
</property>
<!– 应用访问控制 –>
<property>
<name>yarn.resourcemanager.proxy-user-privileges.enabled</name>
<value>true</value>
</property>
3.4 安全审计配置
3.4.1 配置HDFS审计日志
cat /bigdata/app/hadoop/etc/hadoop/hdfs-site.xml | grep -A3 “audit”
<property>
<name>dfs.audit.log.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.audit.log.location</name>
<value>/bigdata/logs/hdfs-audit.log</value>
</property>
<property>
<name>dfs.namenode.audit.log.debug.cmdlist</name>
<value>open,delete,create,mkdirs,rename,setOwner,setPermission</value>
</property>
3.4.2 查看审计日志
tail -20 /bigdata/logs/hdfs-audit.log
# 分析审计日志
grep “fgedu” /bigdata/logs/hdfs-audit.log | tail -10
2024-01-17 18:00:00,000 INFO FSNamesystem.audit: allowed=true ugi=fgedu@FGEDU.NET.CN ip=/192.168.1.100 cmd=open src=/bigdata/warehouse/fgedu/data.parquet dst=null perm=null
2024-01-17 18:00:05,000 INFO FSNamesystem.audit: allowed=true ugi=fgedu@FGEDU.NET.CN ip=/192.168.1.100 cmd=create src=/bigdata/warehouse/fgedu/output.parquet dst=null perm=fgedu:fgedu:rw-r–r–
2024-01-17 18:00:10,000 INFO FSNamesystem.audit: allowed=false ugi=unknown ip=/192.168.1.200 cmd=open src=/bigdata/warehouse/fgedu/secret.parquet dst=null perm=null
# 用户操作记录
2024-01-17 18:00:00,000 INFO FSNamesystem.audit: allowed=true ugi=fgedu@FGEDU.NET.CN ip=/192.168.1.100 cmd=open src=/bigdata/warehouse/fgedu/data.parquet
2024-01-17 18:00:05,000 INFO FSNamesystem.audit: allowed=true ugi=fgedu@FGEDU.NET.CN ip=/192.168.1.100 cmd=create src=/bigdata/warehouse/fgedu/output.parquet
Part04-生产案例与实战讲解
4.1 多租户安全隔离案例
多租户安全隔离是数据安全的重要保障。更多视频教程www.fgedu.net.cn
# tenant_security_setup.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# 多租户安全隔离配置
# 1. 创建租户目录
hdfs dfs -mkdir -p /bigdata/warehouse/tenant1
hdfs dfs -mkdir -p /bigdata/warehouse/tenant2
# 2. 设置目录所有者
hdfs dfs -chown tenant1:tenant1 /bigdata/warehouse/tenant1
hdfs dfs -chown tenant2:tenant2 /bigdata/warehouse/tenant2
# 3. 设置目录权限
hdfs dfs -chmod 700 /bigdata/warehouse/tenant1
hdfs dfs -chmod 700 /bigdata/warehouse/tenant2
# 4. 创建租户队列
# 编辑capacity-scheduler.xml
# 5. 设置队列权限
# tenant1只能提交到root.tenant1队列
# tenant2只能提交到root.tenant2队列
echo “Tenant security setup completed”
./tenant_security_setup.sh
# 目录创建成功
# 权限设置成功
# 验证租户隔离
# tenant1用户
hdfs dfs -ls /bigdata/warehouse/tenant1
Found 10 items
hdfs dfs -ls /bigdata/warehouse/tenant2
ls: Permission denied: user=tenant1, access=READ_EXECUTE, inode=”/bigdata/warehouse/tenant2″:tenant2:tenant2:drwx——
# 租户隔离成功
4.2 敏感数据保护案例
敏感数据需要特殊保护措施。学习交流加群风哥微信: itpux-com
# 1. 创建敏感数据目录
hdfs dfs -mkdir -p /bigdata/warehouse/fgedu/sensitive
# 2. 设置严格权限
hdfs dfs -chmod 700 /bigdata/warehouse/fgedu/sensitive
# 3. 设置ACL
hdfs dfs -setfacl -m user:admin:rwx /bigdata/warehouse/fgedu/sensitive
hdfs dfs -setfacl -m user:auditor:r-x /bigdata/warehouse/fgedu/sensitive
# 4. 配置加密区
hdfs crypto -createZone -path /bigdata/warehouse/fgedu/sensitive -keyName fgedu_sensitive_key
# 5. 验证配置
hdfs crypto -listZones
# 加密区创建
Added encryption zone /bigdata/warehouse/fgedu/sensitive
# 加密区列表
/bigdata/warehouse/fgedu/sensitive fgedu_sensitive_key
# 验证权限
hdfs dfs -getfacl /bigdata/warehouse/fgedu/sensitive
# file: /bigdata/warehouse/fgedu/sensitive
# owner: fgedu
# group: fgedu
user::rwx
user:admin:rwx
user:auditor:r-x
group::—
mask::rwx
other::—
4.3 安全审计分析案例
4.3.1 审计日志分析
# audit_analysis.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
AUDIT_LOG=”/bigdata/logs/hdfs-audit.log”
echo “=== HDFS Audit Analysis ===”
echo “Date: $(date)”
# 1. 访问统计
echo “=== Access Statistics ===”
grep “allowed=true” ${AUDIT_LOG} | wc -l
grep “allowed=false” ${AUDIT_LOG} | wc -l
# 2. 用户访问统计
echo “=== User Access Statistics ===”
grep “allowed=true” ${AUDIT_LOG} | awk ‘{print $6}’ | sort | uniq -c | sort -rn | head -10
# 3. 敏感操作统计
echo “=== Sensitive Operations ===”
grep -E “delete|setOwner|setPermission” ${AUDIT_LOG} | tail -20
# 4. 拒绝访问统计
echo “=== Access Denied ===”
grep “allowed=false” ${AUDIT_LOG} | tail -20
=== HDFS Audit Analysis ===
Date: Wed Jan 17 19:00:00 CST 2024
=== Access Statistics ===
Allowed: 10000
Denied: 50
=== User Access Statistics ===
5000 fgedu@FGEDU.NET.CN
3000 dept1@FGEDU.NET.CN
1500 dept2@FGEDU.NET.CN
500 admin@FGEDU.NET.CN
=== Sensitive Operations ===
2024-01-17 18:00:00,000 INFO FSNamesystem.audit: allowed=true ugi=admin@FGEDU.NET.CN cmd=delete src=/bigdata/warehouse/fgedu/old_data.parquet
2024-01-17 18:00:05,000 INFO FSNamesystem.audit: allowed=true ugi=admin@FGEDU.NET.CN cmd=setOwner src=/bigdata/warehouse/fgedu/data.parquet
=== Access Denied ===
2024-01-17 18:00:00,000 INFO FSNamesystem.audit: allowed=false ugi=unknown ip=/192.168.1.200 cmd=open src=/bigdata/warehouse/fgedu/sensitive/data.parquet
Part05-风哥经验总结与分享
5.1 安全配置最佳实践
在实际生产环境中,安全配置需要注意以下几点:from bigdata视频:www.itpux.com
1. 生产环境必须启用Kerberos认证
2. 遵循最小权限原则
3. 定期审计权限配置
4. 启用审计日志
5. 加密敏感数据
5.2 权限管理经验总结
5.2.1 权限管理建议
– 定期审查用户权限
– 及时回收离职用户权限
– 使用ACL实现细粒度控制
– 记录权限变更
– 建立权限申请流程
5.2.2 安全检查脚本
# security_check.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
echo “=== Hadoop Security Check ===”
echo “Date: $(date)”
# 1. 检查Kerberos状态
echo “=== Kerberos Status ===”
klist
# 2. 检查权限配置
echo “=== Permission Check ===”
hdfs dfs -ls / | grep -E “drwxrwxrwx|drwxr-xr-x”
# 3. 检查ACL配置
echo “=== ACL Check ===”
hdfs dfs -getfacl /bigdata/warehouse/fgedu
# 4. 检查审计日志
echo “=== Audit Log Check ===”
ls -la /bigdata/logs/hdfs-audit.log
# 5. 检查加密区
echo “=== Encryption Zone Check ===”
hdfs crypto -listZones
=== Hadoop Security Check ===
Date: Wed Jan 17 19:30:00 CST 2024
=== Kerberos Status ===
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: fgedu@FGEDU.NET.CN
=== Permission Check ===
drwxr-xr-x – hdfs hadoop 0 2024-01-01 00:00 /tmp
=== ACL Check ===
# file: /bigdata/warehouse/fgedu
user::rwx
group::r-x
other::—
=== Audit Log Check ===
-rw-r–r– 1 hdfs hdfs 1073741824 Jan 17 19:30 /bigdata/logs/hdfs-audit.log
=== Encryption Zone Check ===
/bigdata/warehouse/fgedu/sensitive fgedu_sensitive_key
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
