1. 首页 > Hadoop教程 > 正文

大数据教程FG023-Hadoop集群安全配置与权限管理实战

内容简介:本文详细介绍Hadoop集群安全配置与权限管理实战,包括Kerberos认证配置、HDFS权限管理、YARN访问控制、安全审计配置等核心内容。风哥教程参考Hadoop官方文档Security、Authentication等内容。

目录大纲

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

Kerberos认证流程:
1. 用户向KDC请求TGT
2. KDC返回TGT给用户
3. 用户使用TGT请求服务票据
4. KDC返回服务票据
5. 用户使用服务票据访问服务

1.3 权限管理模型

Hadoop权限管理包括HDFS权限和YARN权限。from bigdata视频:www.itpux.com

# 查看HDFS权限配置
hdfs dfs -ls /bigdata/warehouse/fgedu
# 查看YARN队列权限
yarn queue -status root.production

# HDFS权限
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

# 安装KDC服务器
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用户

# 创建KDC数据库
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

# 配置core-site.xml
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

# 启用ACL
cat /bigdata/app/hadoop/etc/hadoop/hdfs-site.xml | grep -A3 “acl”

<!– 启用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 配置应用访问控制

# 配置YARN访问控制
cat /bigdata/app/hadoop/etc/hadoop/yarn-site.xml | grep -A3 “acl”

<!– YARN 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审计日志

# 配置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 查看审计日志

# 查看HDFS审计日志
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

#!/bin/bash
# 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 审计日志分析

#!/bin/bash
# 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 安全检查脚本

#!/bin/bash
# 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

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息