目录大纲
Part01-基础概念与理论知识
1.1 Hadoop安全概述
Hadoop安全主要包括认证、授权、加密和审计四个方面。认证是确认用户身份的过程,授权是控制用户访问权限的过程,加密是保护数据传输和存储安全的过程,审计是记录用户操作的过程。更多视频教程www.fgedu.net.cn
1.2 Kerberos认证原理
- Kerberos是一种网络认证协议,使用密钥加密技术为客户端/服务器应用程序提供强认证
- Kerberos认证过程包括:客户端向KDC请求票据,KDC返回TGT,客户端使用TGT请求服务票据,服务器验证服务票据
- Kerberos的优势:集中式认证,支持单点登录,安全可靠
1.3 Hadoop安全配置
Hadoop安全配置主要包括:启用Kerberos认证,配置访问控制列表(ACL),启用数据加密,配置审计日志等。学习交流加群风哥微信: itpux-com
Part02-生产环境规划与建议
2.1 安全架构设计
# 安全架构设计
# 层次结构:网络层 → 操作系统层 → Hadoop层 → 应用层
# 安全措施:防火墙 → 操作系统安全 → Kerberos认证 → 授权管理 → 数据加密 → 审计日志
# 层次结构:网络层 → 操作系统层 → Hadoop层 → 应用层
# 安全措施:防火墙 → 操作系统安全 → Kerberos认证 → 授权管理 → 数据加密 → 审计日志
2.2 Kerberos部署规划
推荐部署3个Kerberos服务器,形成高可用集群。风哥提示:Kerberos服务器是整个安全架构的核心,必须确保其高可用性。
2.3 安全策略制定
# 安全策略示例
# 1. 密码策略:密码长度至少8位,包含大小写字母、数字和特殊字符,每90天更换一次
# 2. 访问控制策略:基于最小权限原则,只授予用户必要的权限
# 3. 加密策略:所有数据传输使用TLS加密,敏感数据存储加密
# 4. 审计策略:记录所有用户操作,保留审计日志至少90天
# 1. 密码策略:密码长度至少8位,包含大小写字母、数字和特殊字符,每90天更换一次
# 2. 访问控制策略:基于最小权限原则,只授予用户必要的权限
# 3. 加密策略:所有数据传输使用TLS加密,敏感数据存储加密
# 4. 审计策略:记录所有用户操作,保留审计日志至少90天
Part03-生产环境项目实施方案
3.1 Kerberos服务部署
# 安装Kerberos服务
[root@fgedu.net.cn ~]# yum install -y krb5-server krb5-workstation krb5-libs
# 配置Kerberos
[root@fgedu.net.cn ~]# vi /etc/krb5.conf
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = FGEDU.NET.CN
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
[realms]
FGEDU.NET.CN = {
kdc = fgedu.net.cn
admin_server = fgedu.net.cn
}
[domain_realm]
.fgedu.net.cn = FGEDU.NET.CN
fgedu.net.cn = FGEDU.NET.CN
# 初始化Kerberos数据库
[root@fgedu.net.cn ~]# kdb5_util create -s
Enter KDC database master key:
Re-enter KDC database master key to verify:
# 创建Kerberos管理员
[root@fgedu.net.cn ~]# kadmin.local
kadmin.local: addprinc admin/admin@FGEDU.NET.CN
Enter password for principal “admin/admin@FGEDU.NET.CN”:
Re-enter password for principal “admin/admin@FGEDU.NET.CN”:
Principal “admin/admin@FGEDU.NET.CN” created.
# 启动Kerberos服务
[root@fgedu.net.cn ~]# systemctl start krb5kdc
[root@fgedu.net.cn ~]# systemctl start kadmin
[root@fgedu.net.cn ~]# systemctl enable krb5kdc
[root@fgedu.net.cn ~]# systemctl enable kadmin
[root@fgedu.net.cn ~]# yum install -y krb5-server krb5-workstation krb5-libs
# 配置Kerberos
[root@fgedu.net.cn ~]# vi /etc/krb5.conf
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = FGEDU.NET.CN
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
[realms]
FGEDU.NET.CN = {
kdc = fgedu.net.cn
admin_server = fgedu.net.cn
}
[domain_realm]
.fgedu.net.cn = FGEDU.NET.CN
fgedu.net.cn = FGEDU.NET.CN
# 初始化Kerberos数据库
[root@fgedu.net.cn ~]# kdb5_util create -s
Enter KDC database master key:
Re-enter KDC database master key to verify:
# 创建Kerberos管理员
[root@fgedu.net.cn ~]# kadmin.local
kadmin.local: addprinc admin/admin@FGEDU.NET.CN
Enter password for principal “admin/admin@FGEDU.NET.CN”:
Re-enter password for principal “admin/admin@FGEDU.NET.CN”:
Principal “admin/admin@FGEDU.NET.CN” created.
# 启动Kerberos服务
[root@fgedu.net.cn ~]# systemctl start krb5kdc
[root@fgedu.net.cn ~]# systemctl start kadmin
[root@fgedu.net.cn ~]# systemctl enable krb5kdc
[root@fgedu.net.cn ~]# systemctl enable kadmin
3.2 Hadoop安全配置
# 配置core-site.xml
[root@fgedu.net.cn ~]# vi /bigdata/app/hadoop/etc/hadoop/core-site.xml
hadoop.security.authentication
kerberos
hadoop.security.authorization
true
# 配置hdfs-site.xml
[root@fgedu.net.cn ~]# vi /bigdata/app/hadoop/etc/hadoop/hdfs-site.xml
dfs.namenode.kerberos.principal
hdfs/fgedu.net.cn@FGEDU.NET.CN
dfs.namenode.kerberos.keytab.file
/bigdata/app/hadoop/etc/hadoop/hdfs.keytab
dfs.datanode.kerberos.principal
hdfs/fgedu.net.cn@FGEDU.NET.CN
dfs.datanode.kerberos.keytab.file
/bigdata/app/hadoop/etc/hadoop/hdfs.keytab
dfs.webhdfs.enabled
true
dfs.web.authentication.kerberos.principal
HTTP/fgedu.net.cn@FGEDU.NET.CN
dfs.web.authentication.kerberos.keytab
/bigdata/app/hadoop/etc/hadoop/http.keytab
# 配置yarn-site.xml
[root@fgedu.net.cn ~]# vi /bigdata/app/hadoop/etc/hadoop/yarn-site.xml
yarn.resourcemanager.kerberos.principal
yarn/fgedu.net.cn@FGEDU.NET.CN
yarn.resourcemanager.kerberos.keytab
/bigdata/app/hadoop/etc/hadoop/yarn.keytab
yarn.nodemanager.kerberos.principal
yarn/fgedu.net.cn@FGEDU.NET.CN
yarn.nodemanager.kerberos.keytab
/bigdata/app/hadoop/etc/hadoop/yarn.keytab
[root@fgedu.net.cn ~]# vi /bigdata/app/hadoop/etc/hadoop/core-site.xml
# 配置hdfs-site.xml
[root@fgedu.net.cn ~]# vi /bigdata/app/hadoop/etc/hadoop/hdfs-site.xml
# 配置yarn-site.xml
[root@fgedu.net.cn ~]# vi /bigdata/app/hadoop/etc/hadoop/yarn-site.xml
3.3 安全验证与测试
# 创建Kerberos主体
[root@fgedu.net.cn ~]# kadmin.local
kadmin.local: addprinc hdfs/fgedu.net.cn@FGEDU.NET.CN
kadmin.local: addprinc yarn/fgedu.net.cn@FGEDU.NET.CN
kadmin.local: addprinc mapred/fgedu.net.cn@FGEDU.NET.CN
kadmin.local: addprinc HTTP/fgedu.net.cn@FGEDU.NET.CN
kadmin.local: addprinc fgedu@FGEDU.NET.CN
# 生成keytab文件
[root@fgedu.net.cn ~]# kadmin.local
kadmin.local: xst -k /bigdata/app/hadoop/etc/hadoop/hdfs.keytab hdfs/fgedu.net.cn
kadmin.local: xst -k /bigdata/app/hadoop/etc/hadoop/yarn.keytab yarn/fgedu.net.cn
kadmin.local: xst -k /bigdata/app/hadoop/etc/hadoop/http.keytab HTTP/fgedu.net.cn
# 设置keytab文件权限
[root@fgedu.net.cn ~]# chown hdfs:hadoop /bigdata/app/hadoop/etc/hadoop/hdfs.keytab
[root@fgedu.net.cn ~]# chown yarn:hadoop /bigdata/app/hadoop/etc/hadoop/yarn.keytab
[root@fgedu.net.cn ~]# chown hdfs:hadoop /bigdata/app/hadoop/etc/hadoop/http.keytab
[root@fgedu.net.cn ~]# chmod 400 /bigdata/app/hadoop/etc/hadoop/*.keytab
# 启动集群
[root@fgedu.net.cn ~]# start-dfs.sh
[root@fgedu.net.cn ~]# start-yarn.sh
# 测试Kerberos认证
[root@fgedu.net.cn ~]# kinit fgedu
Password for fgedu@FGEDU.NET.CN:
# 测试HDFS访问
[root@fgedu.net.cn ~]# hdfs dfs -ls /
Found 3 items
drwxr-xr-x – hdfs supergroup 0 2023-04-08 10:00 /hbase
drwxr-xr-x – hdfs supergroup 0 2023-04-08 10:00 /tmp
drwxr-xr-x – hdfs supergroup 0 2023-04-08 10:00 /user
[root@fgedu.net.cn ~]# kadmin.local
kadmin.local: addprinc hdfs/fgedu.net.cn@FGEDU.NET.CN
kadmin.local: addprinc yarn/fgedu.net.cn@FGEDU.NET.CN
kadmin.local: addprinc mapred/fgedu.net.cn@FGEDU.NET.CN
kadmin.local: addprinc HTTP/fgedu.net.cn@FGEDU.NET.CN
kadmin.local: addprinc fgedu@FGEDU.NET.CN
# 生成keytab文件
[root@fgedu.net.cn ~]# kadmin.local
kadmin.local: xst -k /bigdata/app/hadoop/etc/hadoop/hdfs.keytab hdfs/fgedu.net.cn
kadmin.local: xst -k /bigdata/app/hadoop/etc/hadoop/yarn.keytab yarn/fgedu.net.cn
kadmin.local: xst -k /bigdata/app/hadoop/etc/hadoop/http.keytab HTTP/fgedu.net.cn
# 设置keytab文件权限
[root@fgedu.net.cn ~]# chown hdfs:hadoop /bigdata/app/hadoop/etc/hadoop/hdfs.keytab
[root@fgedu.net.cn ~]# chown yarn:hadoop /bigdata/app/hadoop/etc/hadoop/yarn.keytab
[root@fgedu.net.cn ~]# chown hdfs:hadoop /bigdata/app/hadoop/etc/hadoop/http.keytab
[root@fgedu.net.cn ~]# chmod 400 /bigdata/app/hadoop/etc/hadoop/*.keytab
# 启动集群
[root@fgedu.net.cn ~]# start-dfs.sh
[root@fgedu.net.cn ~]# start-yarn.sh
# 测试Kerberos认证
[root@fgedu.net.cn ~]# kinit fgedu
Password for fgedu@FGEDU.NET.CN:
# 测试HDFS访问
[root@fgedu.net.cn ~]# hdfs dfs -ls /
Found 3 items
drwxr-xr-x – hdfs supergroup 0 2023-04-08 10:00 /hbase
drwxr-xr-x – hdfs supergroup 0 2023-04-08 10:00 /tmp
drwxr-xr-x – hdfs supergroup 0 2023-04-08 10:00 /user
Part04-生产案例与实战讲解
4.1 企业级Hadoop安全部署
案例背景
某企业需要构建安全的Hadoop集群,保护敏感数据,满足合规要求。
实施步骤
- 部署Kerberos服务
- 配置Hadoop安全参数
- 创建用户和服务主体
- 测试安全认证
- 配置访问控制
实施效果
安全部署完成后,集群实现了强认证和授权,保护了敏感数据,满足了合规要求。from bigdata视频:www.itpux.com
4.2 Kerberos认证实战
# Kerberos认证脚本
#!/bin/bash
# kerberos_auth.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
# 导出环境变量
export KRB5_CONFIG=/etc/krb5.conf
# 检查kerberos ticket
klist > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo “请输入Kerberos密码:”
kinit fgedu
fi
# 执行HDFS操作
echo “执行HDFS操作…”
hdfs dfs -ls /
# 执行YARN操作
echo “执行YARN操作…”
yarn node -list
#!/bin/bash
# kerberos_auth.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
# 导出环境变量
export KRB5_CONFIG=/etc/krb5.conf
# 检查kerberos ticket
klist > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo “请输入Kerberos密码:”
kinit fgedu
fi
# 执行HDFS操作
echo “执行HDFS操作…”
hdfs dfs -ls /
# 执行YARN操作
echo “执行YARN操作…”
yarn node -list
4.3 安全审计与监控
# 配置审计日志
[root@fgedu.net.cn ~]# vi /bigdata/app/hadoop/etc/hadoop/hdfs-site.xml
dfs.audit.logger
INFO,RFAAUDIT
dfs.audit.log.maxfilesize
256MB
dfs.audit.log.maxbackupindex
20
# 查看审计日志
[root@fgedu.net.cn ~]# tail -f /bigdata/app/hadoop/logs/hadoop-hdfs-namenode-fgedu.net.cn-audit.log
2023-04-08 10:00:00,000 INFO FSNamesystem.audit: allowed=true ugi=fgedu@FGEDU.NET.CN (auth:KERBEROS) ip=192.168.1.10 cmd=listStatus src=/ dst=null perm=null proto=RPC
[root@fgedu.net.cn ~]# vi /bigdata/app/hadoop/etc/hadoop/hdfs-site.xml
# 查看审计日志
[root@fgedu.net.cn ~]# tail -f /bigdata/app/hadoop/logs/hadoop-hdfs-namenode-fgedu.net.cn-audit.log
2023-04-08 10:00:00,000 INFO FSNamesystem.audit: allowed=true ugi=fgedu@FGEDU.NET.CN (auth:KERBEROS) ip=192.168.1.10 cmd=listStatus src=/ dst=null perm=null proto=RPC
Part05-风哥经验总结与分享
5.1 安全最佳实践
- 使用Kerberos进行强认证
- 配置细粒度的访问控制
- 启用数据传输和存储加密
- 建立完善的审计机制
- 定期更新密码和密钥
- 实施网络隔离和防火墙策略
5.2 常见安全问题与解决方案
| 问题 | 原因 | 解决方案 |
|---|---|---|
| Kerberos认证失败 | 时钟不同步或配置错误 | 使用NTP同步时钟,检查配置 |
| 权限不足 | 访问控制配置不当 | 检查ACL配置,授予必要权限 |
| 密钥文件权限错误 | keytab文件权限设置不当 | 设置正确的文件权限(400) |
| 性能下降 | 安全检查开销 | 优化安全配置,使用缓存 |
5.3 安全运维建议
# 安全运维脚本
#!/bin/bash
# security_check.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
# 检查Kerberos服务状态
systemctl status krb5kdc > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo “Kerberos服务未运行”
systemctl start krb5kdc
fi
# 检查Hadoop安全配置
grep -q “kerberos” /bigdata/app/hadoop/etc/hadoop/core-site.xml
if [ $? -ne 0 ]; then
echo “Hadoop安全配置未启用”
fi
# 检查keytab文件权限
find /bigdata/app/hadoop/etc/hadoop -name “*.keytab” -perm /077
if [ $? -eq 0 ]; then
echo “keytab文件权限过高”
chmod 400 /bigdata/app/hadoop/etc/hadoop/*.keytab
fi
#!/bin/bash
# security_check.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
# 检查Kerberos服务状态
systemctl status krb5kdc > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo “Kerberos服务未运行”
systemctl start krb5kdc
fi
# 检查Hadoop安全配置
grep -q “kerberos” /bigdata/app/hadoop/etc/hadoop/core-site.xml
if [ $? -ne 0 ]; then
echo “Hadoop安全配置未启用”
fi
# 检查keytab文件权限
find /bigdata/app/hadoop/etc/hadoop -name “*.keytab” -perm /077
if [ $? -eq 0 ]; then
echo “keytab文件权限过高”
chmod 400 /bigdata/app/hadoop/etc/hadoop/*.keytab
fi
通过Hadoop安全管理与Kerberos的实施,可以保护敏感数据,防止未授权访问,满足合规要求,为企业构建安全可靠的大数据平台。学习交流加群风哥QQ113257174
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
