本文详细介绍Hadoop安全加固实战,包括身份认证、授权控制、数据加密、Kerberos、Ranger等内容,适合大数据运维工程师使用。学习交流加群风哥微信: itpux-com
Part01-基础概念与理论知识
1.1 安全概述
安全加固是指通过技术手段和管理措施提高系统安全性。更多视频教程www.fgedu.net.cn
- 机密性(Confidentiality)
- 完整性(Integrity)
- 可用性(Availability)
1.2 安全风险
安全风险:
1. 未授权访问
– 身份认证缺失
– 权限控制不严
– 数据泄露
2. 数据篡改
– 数据完整性问题
– 恶意修改数据
– 审计缺失
3. 拒绝服务
– 资源耗尽
– 系统不可用
– 业务中断
4. 内部威胁
– 内部人员滥用
– 权限过大
– 操作不规范
1.3 安全框架
安全框架:
Part02-生产环境规划与建议
2.1 安全规划
安全规划:
1. 安全域划分
– 生产环境
– 测试环境
– 开发环境
– 网络隔离
2. 身份管理
– 统一身份认证
– 账号生命周期管理
– 密码策略
3. 权限管理
– 最小权限原则
– 职责分离
– 权限审批
4. 数据安全
– 数据分类
– 加密策略
– 脱敏策略
2.2 安全策略
安全策略:
- 认证策略:Kerberos认证
- 授权策略:Ranger/Sentry
- 加密策略:TLS/SSL传输加密
- 审计策略:操作审计日志
from bigdata视频:www.itpux.com
2.3 合规要求
合规要求:
1. 等级保护
– 等保2.0
– 一级到四级
– 安全测评
2. 行业规范
– 金融行业规范
– 医疗行业规范
– 政府行业规范
3. 数据安全
– 数据安全法
– 个人信息保护法
– 数据出境规定
Part03-生产环境项目实施方案
3.1 身份认证
3.1.1 Kerberos认证
# 1. 安装Kerberos
yum install -y krb5-server krb5-libs krb5-workstation
# 2. 配置Kerberos
vi /etc/krb5.conf
[libdefaults]
default_realm = FGEDU.NET.CN
dns_lookup_realm = false
dns_lookup_kdc = false
[realms]
FGEDU.NET.CN = {
kdc = fgedu-kdc.fgedu.net.cn
admin_server = fgedu-kdc.fgedu.net.cn
}
[domain_realm]
.fgedu.net.cn = FGEDU.NET.CN
fgedu.net.cn = FGEDU.NET.CN
# 3. 创建数据库
kdb5_util create -s -r FGEDU.NET.CN
# 4. 启动Kerberos
systemctl start krb5kdc
systemctl start kadmin
systemctl enable krb5kdc
systemctl enable kadmin
# 5. 创建principal
kadmin.local
addprinc admin/admin@FGEDU.NET.CN
addprinc hadoop/fgedu-nn01@FGEDU.NET.CN
addprinc HTTP/fgedu-nn01@FGEDU.NET.CN
ktadd -k /etc/security/keytabs/hadoop.service.keytab hadoop/fgedu-nn01@FGEDU.NET.CN
ktadd -k /etc/security/keytabs/spnego.service.keytab HTTP/fgedu-nn01@FGEDU.NET.CN
# 6. 配置Hadoop使用Kerberos
# core-site.xml
# hdfs-site.xml
3.2 授权控制
3.2.1 Ranger授权
# 1. 安装Ranger
# 下载Ranger
# 安装Ranger Admin
# 安装Ranger UserSync
# 安装各组件插件
# 2. 配置Ranger
# Ranger Admin Web UI
# http://ranger-admin:6080
# 默认账号:admin/rangeradmin1
# 3. 创建HDFS策略
# 进入HDFS服务
# 点击Add New Policy
# 配置Policy Name
# 配置Resource Path
# 配置User/Group
# 配置Permissions(Read/Write/Execute)
# 4. 创建Hive策略
# 进入Hive服务
# 点击Add New Policy
# 配置Database
# 配置Table
# 配置Column
# 配置User/Group
# 配置Permissions(Select/Create/Drop/Alter)
# 5. 验证权限
# 测试用户权限
kinit -kt /etc/security/keytabs/fgedu.keytab fgedu@FGEDU.NET.CN
hdfs dfs -ls /
hdfs dfs -put test.txt /
3.3 数据加密
3.4.1 传输加密
# 1. 配置HDFS加密传输
# hdfs-site.xml
# 2. 配置YARN加密
# yarn-site.xml
# 3. 配置SSL
# 生成证书
keytool -genkey -alias fgedu -keyalg RSA -keysize 2048 -keystore fgedu.keystore -validity 3650
# 配置SSL
# ssl-server.xml
Part04-生产案例与实战讲解
4.1 Kerberos认证
4.1.1 实战案例
# 1. 测试Kerberos认证
kinit -kt /etc/security/keytabs/hadoop.service.keytab hadoop/fgedu-nn01@FGEDU.NET.CN
# 2. 查看票据
klist
# 输出示例:
# Ticket cache: FILE:/tmp/krb5cc_1000
# Default principal: hadoop/fgedu-nn01@FGEDU.NET.CN
#
# Valid starting Expires Service principal
# 04/08/2024 10:00:00 04/08/2024 20:00:00 krbtgt/FGEDU.NET.CN@FGEDU.NET.CN
# 3. 访问HDFS
hdfs dfs -ls /
# 4. 用户认证
kinit fgedu@FGEDU.NET.CN
# 输入密码
hdfs dfs -ls /user/fgedu
# 5. 销毁票据
kdestroy
klist
# klist: No credentials cache found
4.2 Ranger授权
4.2.1 实战案例
# 1. 登录Ranger UI
# http://ranger-admin:6080
# admin/rangeradmin1
# 2. 创建HDFS策略
# Policy Name: fgedu-hdfs-policy
# Resource Path: /user/fgedu
# User: fgedu
# Permissions: Read, Write, Execute
# 3. 创建Hive策略
# Policy Name: fgedu-hive-policy
# Database: fgedudb
# Table: *
# User: fgedu
# Permissions: Select, Create
# 4. 测试权限
kinit fgedu@FGEDU.NET.CN
hdfs dfs -put test.txt /user/fgedu/
hdfs dfs -ls /user/fgedu/
# 5. 测试无权限
kinit test@FGEDU.NET.CN
hdfs dfs -ls /user/fgedu/
# 应该报错:Permission denied
4.3 审计日志
4.3.1 实战案例
# 1. 配置HDFS审计
# hadoop-env.sh
export HDFS_AUDIT_LOGGER=INFO,NullAppender
# log4j.properties
log4j.logger.org.apache.hadoop.hdfs.server.namenode.FSNamesystem.audit=INFO,RFAAUDIT
log4j.appender.RFAAUDIT=org.apache.log4j.RollingFileAppender
log4j.appender.RFAAUDIT.File=/bigdata/logs/hdfs/audit.log
log4j.appender.RFAAUDIT.MaxFileSize=100MB
log4j.appender.RFAAUDIT.MaxBackupIndex=10
log4j.appender.RFAAUDIT.layout=org.apache.log4j.PatternLayout
log4j.appender.RFAAUDIT.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n
# 2. 查看审计日志
tail -f /bigdata/logs/hdfs/audit.log
# 输出示例:
# 2024-04-08 10:00:00,000 INFO FSNamesystem.audit: allowed=true ugi=fgedu@FGEDU.NET.CN ip=/192.168.1.100 cmd=listStatus src=/user/fgedu dst=null perm=null
# 3. Ranger审计
# Ranger UI -> Audit
# 查看访问记录
# 查看拒绝记录
Part05-风哥经验总结与分享
5.1 最佳实践
最佳实践:
- 最小权限:只给必要的权限
- 职责分离:不同角色不同权限
- 定期审计:定期审计权限和日志
- 及时更新:及时更新安全补丁
- 培训教育:安全意识培训
5.2 安全检查清单
## 身份认证
– [ ] Kerberos认证启用
– [ ] 密码策略配置
– [ ] 账号生命周期管理
– [ ] 闲置账号清理
## 授权控制
– [ ] Ranger/Sentry启用
– [ ] 最小权限原则
– [ ] 权限定期审计
– [ ] 权限变更审批
## 数据安全
– [ ] 传输加密启用
– [ ] 敏感数据加密
– [ ] 数据备份加密
– [ ] 数据脱敏
## 审计安全
– [ ] 审计日志启用
– [ ] 审计日志保护
– [ ] 定期日志审计
– [ ] 日志长期保存
5.3 检查清单
## 配置检查
– [ ] Kerberos配置正确
– [ ] Ranger配置正确
– [ ] 加密配置正确
– [ ] 审计配置正确
– [ ] 防火墙配置正确
## 功能检查
– [ ] 认证正常工作
– [ ] 授权正常工作
– [ ] 加密正常工作
– [ ] 审计正常工作
– [ ] 定期安全审计
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
