数据脱敏与安全审计方案
请介绍大数据平台中数据脱敏(Data Masking)的常用技术方案,以及数据安全审计(Audit)的实现方式。
回答
Yahuda
一、数据脱敏(Data Masking):
1. 静态脱敏(Static Data Masking):
- 在数据导出/备份时对敏感字段进行脱敏
- 一次性处理,适合测试/开发环境
- 工具:Desensitization工具、DataX脱敏插件
2. 动态脱敏(Dynamic Data Masking):
- 查询时实时脱敏,不影响原始数据
- 根据用户权限动态决定脱敏级别
实现方式:
-- Hive Ranger列掩码:手机号中间4位隐藏
SELECT phone -> mask_show_first_n(phone, 3) || '****' || mask_show_last_n(phone, 4)
-- Spark SQL脱敏UDF
spark.udf.register("mask_phone", (phone: String) => {
if (isAdmin()) phone else phone.substring(0,3) + "****" + phone.substring(7)
})
Ranger动态脱敏:
- 在Ranger策略中配置
Column Masking - 支持:Partial Mask/Nullify/Redact/Date Shift/Custom
3. 常用脱敏算法: | 数据类型 | 脱敏算法 | 示例 | |---------|---------|------| | 手机号 | 中间4位掩码 | 1381234 | | 身份证 | 前6后4保留 | 1101011234 | | 姓名 | 姓氏保留+* | 张* | | 邮箱 | 前缀掩码 | ***@company.com | | 金额 | 区间模糊 | 100~200元 |
二、数据审计(Audit):
1. Ranger Audit:
- 记录所有访问请求(谁/什么时间/访问了什么/结果)
- 存储到Solr或HDFS
- 通过Ranger UI可视化审计日志
2. 审计日志字段:
{
"accessType": "SELECT",
"user": "zhangsan",
"resourcePath": "/user/hive/warehouse/db/table",
"clientIP": "10.1.1.100",
"accessTime": "2025-05-25T10:00:00Z",
"action": "ALLOWED",
"extra": "masking applied"
}
3. 审计最佳实践:
- 定期(每日)分析异常访问模式
- 设置告警:多次失败登录→告警
- 非工作时间大量数据导出→告警
- 审计日志保留至少90天
- 与SIEM系统集成(Splunk/ELK)